update test file
This commit is contained in:
parent
0f1d42f6f1
commit
61a1313bd9
1
.gitignore
vendored
1
.gitignore
vendored
@ -13,3 +13,4 @@
|
|||||||
|
|
||||||
# Dependency directories (remove the comment below to include it)
|
# Dependency directories (remove the comment below to include it)
|
||||||
# vendor/
|
# vendor/
|
||||||
|
.idea
|
||||||
|
3
bot.go
3
bot.go
@ -157,6 +157,9 @@ func (b *Bot) prepare() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bot) RegisterMessageHandler(handler MessageHandler) {
|
func (b *Bot) RegisterMessageHandler(handler MessageHandler) {
|
||||||
|
if b.messageHandlerGroups == nil {
|
||||||
|
b.messageHandlerGroups = &MessageHandlerGroup{}
|
||||||
|
}
|
||||||
b.messageHandlerGroups.RegisterHandler(handler)
|
b.messageHandlerGroups.RegisterHandler(handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
14
bot_test.go
14
bot_test.go
@ -6,21 +6,15 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestDefaultBot(t *testing.T) {
|
func TestDefaultBot(t *testing.T) {
|
||||||
messageHandler := func(message Message) {
|
messageHandler := func(message *Message) {
|
||||||
fmt.Println(message)
|
fmt.Println(message)
|
||||||
}
|
}
|
||||||
bot := DefaultBot(messageHandler)
|
bot := DefaultBot()
|
||||||
|
bot.RegisterMessageHandler(messageHandler)
|
||||||
bot.UUIDCallback = PrintlnQrcodeUrl
|
bot.UUIDCallback = PrintlnQrcodeUrl
|
||||||
if err := bot.Login(); err != nil {
|
if err := bot.Login(); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//for bot.Alive() {
|
bot.Block()
|
||||||
// message := messageHandler.GetMessage()
|
|
||||||
// if message.Content == "6666" {
|
|
||||||
// err := message.ReplyText("nihao")
|
|
||||||
// fmt.Println(err)
|
|
||||||
// }
|
|
||||||
// fmt.Println(message)
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
@ -196,10 +196,6 @@ func (c *Caller) WebWxSendImageMsg(file *os.File, request BaseRequest, info Logi
|
|||||||
return parseBaseResponseError(resp)
|
return parseBaseResponseError(resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
//func (c *Caller) WebWxBatchGetContact() {
|
|
||||||
//
|
|
||||||
//}
|
|
||||||
|
|
||||||
func parseBaseResponseError(resp *ReturnResponse) error {
|
func parseBaseResponseError(resp *ReturnResponse) error {
|
||||||
if resp.Err() != nil {
|
if resp.Err() != nil {
|
||||||
return resp.Err()
|
return resp.Err()
|
||||||
|
2
items.go
2
items.go
@ -23,7 +23,7 @@ type BaseResponse struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b BaseResponse) Ok() bool {
|
func (b BaseResponse) Ok() bool {
|
||||||
returnRet == 0
|
return b.Ret == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b BaseResponse) Error() string {
|
func (b BaseResponse) Error() string {
|
||||||
|
249
manager.go
249
manager.go
@ -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
|
|
||||||
//}
|
|
@ -13,5 +13,8 @@ func (m MessageHandlerGroup) ProcessMessage(message *Message) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *MessageHandlerGroup) RegisterHandler(handler MessageHandler) {
|
func (m *MessageHandlerGroup) RegisterHandler(handler MessageHandler) {
|
||||||
|
if m.handlers == nil {
|
||||||
|
m.handlers = make([]MessageHandler, 0)
|
||||||
|
}
|
||||||
m.handlers = append(m.handlers, handler)
|
m.handlers = append(m.handlers, handler)
|
||||||
}
|
}
|
||||||
|
46
parser.go
46
parser.go
@ -3,7 +3,6 @@ package openwechat
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io/ioutil"
|
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -28,21 +27,6 @@ func GetRandomDeviceId() string {
|
|||||||
return "e" + str
|
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 {
|
func getWebWxDataTicket(cookies []*http.Cookie) string {
|
||||||
for _, cookie := range cookies {
|
for _, cookie := range cookies {
|
||||||
if cookie.Name == "webwx_data_ticket" {
|
if cookie.Name == "webwx_data_ticket" {
|
||||||
@ -51,33 +35,3 @@ func getWebWxDataTicket(cookies []*http.Cookie) string {
|
|||||||
}
|
}
|
||||||
return ""
|
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user