From 61a1313bd90f1e63aaa8c0c1eec3dda2a6cdf5ea Mon Sep 17 00:00:00 2001 From: Ivy1996-encode Date: Wed, 17 Feb 2021 15:01:10 +0800 Subject: [PATCH] update test file --- .gitignore | 1 + bot.go | 3 + bot_test.go | 14 +-- caller.go | 4 - items.go | 2 +- manager.go | 249 --------------------------------------------- message_handler.go | 3 + parser.go | 46 --------- 8 files changed, 12 insertions(+), 310 deletions(-) delete mode 100644 manager.go diff --git a/.gitignore b/.gitignore index 66fd13c..474488e 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ # Dependency directories (remove the comment below to include it) # vendor/ +.idea diff --git a/bot.go b/bot.go index 2120f96..8408dd5 100644 --- a/bot.go +++ b/bot.go @@ -157,6 +157,9 @@ func (b *Bot) prepare() { } func (b *Bot) RegisterMessageHandler(handler MessageHandler) { + if b.messageHandlerGroups == nil { + b.messageHandlerGroups = &MessageHandlerGroup{} + } b.messageHandlerGroups.RegisterHandler(handler) } diff --git a/bot_test.go b/bot_test.go index f7f27e4..88caf69 100644 --- a/bot_test.go +++ b/bot_test.go @@ -6,21 +6,15 @@ import ( ) func TestDefaultBot(t *testing.T) { - messageHandler := func(message Message) { + messageHandler := func(message *Message) { fmt.Println(message) } - bot := DefaultBot(messageHandler) + bot := DefaultBot() + bot.RegisterMessageHandler(messageHandler) bot.UUIDCallback = PrintlnQrcodeUrl if err := bot.Login(); err != nil { fmt.Println(err) return } - //for bot.Alive() { - // message := messageHandler.GetMessage() - // if message.Content == "6666" { - // err := message.ReplyText("nihao") - // fmt.Println(err) - // } - // fmt.Println(message) - //} + bot.Block() } diff --git a/caller.go b/caller.go index 3d4c06b..2508d09 100644 --- a/caller.go +++ b/caller.go @@ -196,10 +196,6 @@ func (c *Caller) WebWxSendImageMsg(file *os.File, request BaseRequest, info Logi return parseBaseResponseError(resp) } -//func (c *Caller) WebWxBatchGetContact() { -// -//} - func parseBaseResponseError(resp *ReturnResponse) error { if resp.Err() != nil { return resp.Err() diff --git a/items.go b/items.go index 1c9e64c..8a5fbeb 100644 --- a/items.go +++ b/items.go @@ -23,7 +23,7 @@ type BaseResponse struct { } func (b BaseResponse) Ok() bool { - returnRet == 0 + return b.Ret == 0 } func (b BaseResponse) Error() string { diff --git a/manager.go b/manager.go deleted file mode 100644 index 020f93f..0000000 --- a/manager.go +++ /dev/null @@ -1,249 +0,0 @@ -package openwechat -// -//import ( -// "encoding/json" -// "encoding/xml" -// "errors" -// "fmt" -// "io/ioutil" -// "log" -//) -// -//var DefaultMessageMaxLength uint64 = 200 -// -//const ( -// statusSuccess = "200" -// statusScanned = "201" -// statusTimeout = "400" -// statusWait = "408" -//) -// -//type Bot struct { -// Caller *Caller -// Self *Self -// ScanCallback func(body []byte) -// LoginCallback func(body []byte) -// storage WechatStorage -// messageHandler MessageHandler -// notAlive bool -// err error -//} -// -//func (m *Bot) GetLoginUUID() (uuid string, err error) { -// return m.Caller.GetLoginUUID() -//} -// -//func (m *Bot) checkLogin(uuid string) (body []byte, err error) { -// resp, err := m.Client.CheckLogin(uuid) -// if err != nil { -// return nil, err -// } -// defer resp.Body.Close() -// data, err := ioutil.ReadAll(resp.Body) -// if -// -// err != nil { -// return nil, err -// } -// return data, nil -//} -// -//func (m *Bot) CheckLogin(uuid string) error { -// var ( -// body []byte -// err error -// ) -// for { -// body, err = m.checkLogin(uuid) -// if err != nil { -// return err -// } -// results := statusCodeRegexp.FindSubmatch(body) -// if len(results) != 2 { -// return errors.New("login status code does not match") -// } -// code := string(results[1]) -// switch code { -// case statusSuccess: -// return m.loginCallback(body) -// case statusScanned: -// if m.ScanCallback != nil { -// m.ScanCallback(body) -// } -// case statusWait: -// log.Println(string(body)) -// case statusTimeout: -// return errors.New("login time out") -// default: -// return errors.New("unknow code found " + code) -// } -// } -//} -// -//func (m *Bot) getLoginInfo(body []byte) error { -// resp, err := m.Client.GetLoginInfo(body) -// if err != nil { -// return err -// } -// defer resp.Body.Close() -// data, err := ioutil.ReadAll(resp.Body) -// if err != nil { -// return err -// } -// var loginInfo LoginInfo -// if err = xml.Unmarshal(data, &loginInfo); err != nil { -// return err -// } -// if loginInfo.Ret != 0 { -// return errors.New(loginInfo.Message) -// } -// m.storage.SetLoginInfo(loginInfo) -// return nil -//} -// -//func (m *Bot) webInit() error { -// loginInfo := m.storage.GetLoginInfo() -// baseRequest := BaseRequest{ -// Uin: loginInfo.WxUin, -// Sid: loginInfo.WxSid, -// Skey: loginInfo.SKey, -// DeviceID: GetRandomDeviceId(), -// } -// m.storage.SetBaseRequest(baseRequest) -// resp, err := m.Client.WebInit(m.storage) -// if err != nil { -// return err -// } -// defer resp.Body.Close() -// data, err := ioutil.ReadAll(resp.Body) -// if err != nil { -// return err -// } -// var webInitResponse WebInitResponse -// if err = json.Unmarshal(data, &webInitResponse); err != nil { -// return err -// } -// m.storage.SetWebInitResponse(webInitResponse) -// m.Self = &Self{User: &webInitResponse.User, Manager: m} -// return nil -//} -// -//func (m *Bot) WebWxStatusNotify() error { -// resp, err := m.Client.WebWxStatusNotify(m.storage) -// if err != nil { -// return err -// } -// defer resp.Body.Close() -// data, err := ioutil.ReadAll(resp.Body) -// if err != nil { -// return err -// } -// var item map[string]interface{} -// err = json.Unmarshal(data, &item) -// if err != nil { -// return err -// } -// if request, ok := item["BaseResponse"].(map[string]interface{}); ok { -// if ret, exist := request["Ret"]; exist { -// if ret, ok := ret.(float64); ok { -// if ret == 0 { -// return nil -// } -// } -// } -// } -// return errors.New("web status notify failed") -//} -// -//func (m *Bot) SyncCheck() error { -// for m.Alive() { -// resp, err := m.Client.SyncCheck(m.storage) -// if err != nil { -// return err -// } -// data, err := ioutil.ReadAll(resp.Body) -// fmt.Println(string(data)) -// resp.Body.Close() -// if err != nil { -// return err -// } -// results := syncCheckRegexp.FindSubmatch(data) -// if len(results) != 3 { -// return errors.New("parse sync key failed") -// } -// code, _ := results[1], results[2] -// switch string(code) { -// case "0": -// if err = m.getMessage(); err != nil { -// return err -// } -// case "1101": -// return errors.New("logout") -// } -// return fmt.Errorf("error ret code: %s", string(code)) -// } -// return nil -//} -// -//func (m *Bot) getMessage() error { -// resp, err := m.Client.GetMessage(m.storage) -// if err != nil { -// return err -// } -// defer resp.Body.Close() -// data, err := ioutil.ReadAll(resp.Body) -// if err != nil { -// return err -// } -// var syncKey struct{ SyncKey SyncKey } -// if err = json.Unmarshal(data, &syncKey); err != nil { -// return err -// } -// webInitResponse := m.storage.GetWebInitResponse() -// webInitResponse.SyncKey = syncKey.SyncKey -// m.storage.SetWebInitResponse(webInitResponse) -// var messageList MessageList -// if err = json.Unmarshal(data, &messageList); err != nil { -// return err -// } -// for _, message := range messageList.AddMsgList { -// message.ClientManager = m -// m.messageHandler.ReceiveMessage(message) -// } -// return nil -//} -// -//func (m *Bot) loginCallback(body []byte) error { -// var err error -// if m.LoginCallback != nil { -// m.LoginCallback(body) -// } -// if err = m.getLoginInfo(body); err != nil { -// return err -// } -// if err = m.webInit(); err != nil { -// return err -// } -// if err = m.WebWxStatusNotify(); err != nil { -// return err -// } -// go func() { -// if err := m.SyncCheck(); err != nil { -// m.exit(err) -// } -// }() -// return err -//} -// -//func (m *Bot) Alive() bool { -// return !m.notAlive -//} -// -//func (m *Bot) Err() error { -// return m.err -//} -// -//func (m *Bot) exit(err error) { -// m.notAlive = true -// m.err = err -//} diff --git a/message_handler.go b/message_handler.go index 03066af..0963579 100644 --- a/message_handler.go +++ b/message_handler.go @@ -13,5 +13,8 @@ func (m MessageHandlerGroup) ProcessMessage(message *Message) { } func (m *MessageHandlerGroup) RegisterHandler(handler MessageHandler) { + if m.handlers == nil { + m.handlers = make([]MessageHandler, 0) + } m.handlers = append(m.handlers, handler) } diff --git a/parser.go b/parser.go index 7ba61d3..0686195 100644 --- a/parser.go +++ b/parser.go @@ -3,7 +3,6 @@ package openwechat import ( "bytes" "encoding/json" - "io/ioutil" "math/rand" "net/http" "strconv" @@ -28,21 +27,6 @@ func GetRandomDeviceId() string { return "e" + str } -//func getSendMessageError(body io.Reader) error { -// data, err := ioutil.ReadAll(body) -// if err != nil { -// return err -// } -// var item struct{ BaseResponse BaseResponse } -// if err = json.Unmarshal(data, &item); err != nil { -// return err -// } -// if !item.BaseResponse.Ok() { -// return errors.New(item.BaseResponse.ErrMsg) -// } -// return nil -//} - func getWebWxDataTicket(cookies []*http.Cookie) string { for _, cookie := range cookies { if cookie.Name == "webwx_data_ticket" { @@ -51,33 +35,3 @@ func getWebWxDataTicket(cookies []*http.Cookie) string { } return "" } - -func getUpdateMember(resp *http.Response, err error) (Members, error) { - if err != nil { - return nil, err - } - data, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, err - } - var item struct { - BaseResponse BaseResponse - ContactList Members - } - if err = json.Unmarshal(data, &item); err != nil { - return nil, err - } - if !item.BaseResponse.Ok() { - return nil, item.BaseResponse - } - return item.ContactList, nil -} - -func getResponseBody(resp *http.Response) ([]byte, error) { - if data, err := ioutil.ReadAll(resp.Body); err != nil { - return nil, err - } else { - return data, nil - } -} -