forked from x/icebergs
113 lines
3.0 KiB
Go
113 lines
3.0 KiB
Go
package wx
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/xml"
|
|
"io/ioutil"
|
|
|
|
ice "shylinux.com/x/icebergs"
|
|
"shylinux.com/x/icebergs/base/aaa"
|
|
"shylinux.com/x/icebergs/base/mdb"
|
|
"shylinux.com/x/icebergs/core/chat"
|
|
"shylinux.com/x/icebergs/core/wiki"
|
|
kit "shylinux.com/x/toolkits"
|
|
)
|
|
|
|
func _wx_parse(m *ice.Message) {
|
|
data := struct {
|
|
FromUserName string
|
|
ToUserName string
|
|
CreateTime int64
|
|
MsgID int64
|
|
Event string
|
|
MsgType string
|
|
Content string
|
|
|
|
Location_X float64
|
|
Location_Y float64
|
|
Scale string
|
|
Label string
|
|
|
|
Title string
|
|
Description string
|
|
Url string
|
|
|
|
PicUrl string
|
|
}{}
|
|
buf, _ := ioutil.ReadAll(m.R.Body)
|
|
m.Debug("buf: %+v", string(buf))
|
|
xml.NewDecoder(bytes.NewBuffer(buf)).Decode(&data)
|
|
m.Debug("data: %+v", data)
|
|
|
|
m.Option("FromUserName", data.FromUserName)
|
|
m.Option("ToUserName", data.ToUserName)
|
|
m.Option("CreateTime", data.CreateTime)
|
|
m.Option("MsgID", data.MsgID)
|
|
|
|
m.Option("Event", data.Event)
|
|
m.Option("MsgType", data.MsgType)
|
|
m.Option("Content", data.Content)
|
|
|
|
m.Option("LocationX", kit.Int(data.Location_X*100000))
|
|
m.Option("LocationY", kit.Int(data.Location_Y*100000))
|
|
m.Option("Scale", data.Scale)
|
|
m.Option("Label", data.Label)
|
|
|
|
m.Option("Title", data.Title)
|
|
m.Option("Description", data.Description)
|
|
m.Option("URL", data.Url)
|
|
|
|
m.Option("URL", data.PicUrl)
|
|
}
|
|
|
|
const LOGIN = "login"
|
|
|
|
func init() {
|
|
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
|
|
LOGIN: {Name: LOGIN, Help: "登录", Value: kit.Data()},
|
|
}, Commands: map[string]*ice.Command{
|
|
"/login/": {Name: "/login/", Help: "认证", Hand: func(m *ice.Message, arg ...string) {
|
|
if m.Cmdx(ACCESS, CHECK) == "" {
|
|
return // 验签失败
|
|
}
|
|
|
|
// 解析数据
|
|
_wx_parse(m)
|
|
|
|
// 用户登录
|
|
m.Option(ice.MSG_USERZONE, WX)
|
|
aaa.UserLogin(m, m.Append("FromUserName"), "")
|
|
|
|
switch m.Option("MsgType") {
|
|
case EVENT: // 事件
|
|
m.Cmdy(EVENT, m.Option("Event"))
|
|
|
|
case chat.LOCATION: // 打卡
|
|
m.Cmdy(chat.LOCATION, mdb.CREATE, mdb.TYPE, "", mdb.NAME, m.Option("Label"), mdb.TEXT, m.Option("Label"),
|
|
"latitude", m.Option("LocationX"), "longitude", m.Option("LocationY"), "scale", m.Option("Scale"),
|
|
)
|
|
case mdb.LINK: // 打卡
|
|
m.Cmdy(chat.SCAN, mdb.CREATE, mdb.TYPE, mdb.LINK, mdb.NAME, m.Option("Title"), mdb.TEXT, m.Option("URL"))
|
|
|
|
case "image": // 文本
|
|
m.Cmdy(chat.SCAN, mdb.CREATE, mdb.TYPE, wiki.IMAGE, mdb.NAME, m.Option("Title"), mdb.TEXT, m.Option("URL"))
|
|
|
|
case TEXT: // 文本
|
|
if cmds := kit.Split(m.Option("Content")); m.Right(cmds) {
|
|
m.Cmdy(TEXT, cmds)
|
|
break
|
|
}
|
|
m.Cmdy(MENU, "home")
|
|
}
|
|
}},
|
|
LOGIN: {Name: "login", Help: "登录", Action: map[string]*ice.Action{
|
|
mdb.CREATE: {Name: "create appid appmm token", Help: "创建", Hand: func(m *ice.Message, arg ...string) {
|
|
m.Conf(ACCESS, kit.Keym(APPID), m.Option(APPID))
|
|
m.Conf(ACCESS, kit.Keym(APPMM), m.Option(APPMM))
|
|
m.Conf(ACCESS, kit.Keym(TOKEN), m.Option(TOKEN))
|
|
}},
|
|
}, Hand: func(m *ice.Message, arg ...string) {
|
|
}},
|
|
}})
|
|
}
|