当前位置: 首页>>代码示例>>Golang>>正文


Golang Conn.GetReader方法代码示例

本文整理汇总了Golang中spool-mock/client.Conn.GetReader方法的典型用法代码示例。如果您正苦于以下问题:Golang Conn.GetReader方法的具体用法?Golang Conn.GetReader怎么用?Golang Conn.GetReader使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在spool-mock/client.Conn的用法示例。


在下文中一共展示了Conn.GetReader方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: PostArticle

func PostArticle(conn *client.Conn, tok []string) {
	if tok[1] == "<[email protected]>" {
		conn.Send("435 Already have article.")
		return
	}
	if tok[1] == "<[email protected]>" {
		conn.Send("436 Early failed.")
		return
	}
	conn.Send("335 Send article to be transferred.")

	b := new(bytes.Buffer)
	br := bufio.NewReader(conn.GetReader())
	r := textproto.NewReader(br)

	fmt.Println("PostArticle head.")
	m, e := r.ReadMIMEHeader()
	if e != nil {
		conn.Send("437 Failed reading header")
		return
	}

	fmt.Println("PostArticle body.")
	if _, e := io.Copy(b, dotreader.New(br)); e != nil {
		conn.Send("437 Failed reading body")
		return
	}

	if val := m.Get("X-Accept"); val == "DENY" {
		conn.Send("437 Deny test.")
		return
	}
	if val := m.Get("X-Accept"); val == "BROKEN" {
		conn.Send("500 Server is broken.")
		return
	}
	if val := m.Get("X-Accept"); val == "FAILED" {
		conn.Send("436 Transfer failed test.")
		return
	}

	if tok[1] == "<[email protected]>" {
		conn.Send("437 Duplicate")
		return
	}

	if conn.User == "refeed" {
		config.RequeMsgids = append(config.RequeMsgids, tok[1])
		conn.Send("235 Transferred.")
		return
	}

	if b.String() != "\r\nBody.\r\nBody1\r\nBody2 ohyeay?\r\n.\r\n" {
		conn.Send("500 Body does not match hardcoded compare value.")
		return
	}
	conn.Send("235 Transferred.")
}
开发者ID:mpdroog,项目名称:spool-mock,代码行数:58,代码来源:nntp.go

示例2: req

func req(conn *client.Conn) {
	conn.Send("200 StoreD")
	for {
		tok, e := conn.ReadLine()
		if e != nil {
			fmt.Println(fmt.Sprintf("WARN: C(%s): %s", conn.RemoteAddr(), e.Error()))
			break
		}

		cmd := strings.ToUpper(tok[0])
		if cmd == "QUIT" {
			Quit(conn, tok)
			break
		} else if cmd == "ARTICLE" {
			Article(conn, tok)
		} else if cmd == "HEAD" {
			Head(conn, tok)
		} else if cmd == "BODY" {
			Body(conn, tok)
		} else if cmd == "STAT" {
			Stat(conn, tok)
		} else if cmd == "AUTHINFO" {
			sub := strings.ToUpper(tok[1])
			if sub == "USER" {
				conn.User = tok[2]
				conn.Send("381 Need more.")
			} else if sub == "PASS" {
				if tok[2] == "test" {
					conn.Send("281 Authentication accepted.")
				}
			}
		} else if cmd == "GROUP" {
			Group(conn, tok)
		} else if cmd == "NOOP" {
			conn.Send("500 Unsupported.")
		} else if cmd == "IHAVE" {
			PostArticle(conn, tok)
		} else if cmd == "POST" {
			if e := conn.Send("340 Start posting."); e != nil {
				conn.Send("437 Start failed.")
			}
			br := bufio.NewReader(conn.GetReader())
			if _, e := io.Copy(ioutil.Discard, dotreader.New(br)); e != nil {
				conn.Send("437 Failed reading body")
				return
			}
			if e := conn.Send("240 Posted "); e != nil {
				conn.Send("437 Failed storing.")
			}
		} else if cmd == "XOVER" {
			Xover(conn, tok)
		} else if cmd == "XHDR" {
			Xhdr(conn, tok)
		} else if cmd == "LIST" {
			List(conn, tok)
		} else if cmd == "DATE" {
			Date(conn, tok)
		} else {
			Unsupported(conn, tok)
			break
		}
	}

	conn.Close()
	if config.Verbose {
		fmt.Println(fmt.Sprintf("C(%s) Closed", conn.RemoteAddr()))
	}
}
开发者ID:mpdroog,项目名称:spool-mock,代码行数:68,代码来源:nntp.go


注:本文中的spool-mock/client.Conn.GetReader方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。