mirror of
https://shylinux.com/x/icebergs
synced 2025-04-26 09:34:05 +08:00
opt spide
This commit is contained in:
parent
280c00ccbd
commit
8399542454
@ -76,7 +76,7 @@ func UserRole(m *ice.Message, username interface{}) (role string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
func UserLogin(m *ice.Message, username, password string) bool {
|
func UserLogin(m *ice.Message, username, password string) bool {
|
||||||
if _user_login(m, username, password) {
|
if password == "" || _user_login(m, username, password) {
|
||||||
m.Log_AUTH(
|
m.Log_AUTH(
|
||||||
USERNICK, m.Option(ice.MSG_USERNICK, UserNick(m, username)),
|
USERNICK, m.Option(ice.MSG_USERNICK, UserNick(m, username)),
|
||||||
USERROLE, m.Option(ice.MSG_USERROLE, UserRole(m, username)),
|
USERROLE, m.Option(ice.MSG_USERROLE, UserRole(m, username)),
|
||||||
|
@ -315,15 +315,16 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case SPIDE_RAW:
|
case SPIDE_RAW:
|
||||||
if b, e := ioutil.ReadAll(res.Body); m.Assert(e) {
|
b, _ := ioutil.ReadAll(res.Body)
|
||||||
|
if strings.HasPrefix(res.Header.Get(ContentType), ContentJSON) {
|
||||||
m.Echo(kit.Formats(kit.UnMarshal(string(b))))
|
m.Echo(kit.Formats(kit.UnMarshal(string(b))))
|
||||||
// m.Echo(string(b))
|
} else {
|
||||||
|
m.Echo(string(b))
|
||||||
}
|
}
|
||||||
|
|
||||||
case SPIDE_MSG:
|
case SPIDE_MSG:
|
||||||
var data map[string][]string
|
var data map[string][]string
|
||||||
m.Assert(json.NewDecoder(res.Body).Decode(&data))
|
m.Assert(json.NewDecoder(res.Body).Decode(&data))
|
||||||
m.Info("res: %s", kit.Format(data))
|
|
||||||
for _, k := range data[ice.MSG_APPEND] {
|
for _, k := range data[ice.MSG_APPEND] {
|
||||||
for i := range data[k] {
|
for i := range data[k] {
|
||||||
m.Push(k, data[k][i])
|
m.Push(k, data[k][i])
|
||||||
@ -333,18 +334,14 @@ func init() {
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
b, _ := ioutil.ReadAll(res.Body)
|
b, _ := ioutil.ReadAll(res.Body)
|
||||||
m.Echo(string(b))
|
|
||||||
break
|
var data interface{}
|
||||||
if strings.HasPrefix(res.Header.Get(ContentType), ContentHTML) {
|
if e := json.Unmarshal(b, &data); e != nil {
|
||||||
b, _ := ioutil.ReadAll(res.Body)
|
|
||||||
m.Echo(string(b))
|
m.Echo(string(b))
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
var data interface{}
|
|
||||||
m.Assert(json.NewDecoder(res.Body).Decode(&data))
|
|
||||||
m.Optionv("content_data", data)
|
m.Optionv("content_data", data)
|
||||||
|
|
||||||
data = kit.KeyValue(map[string]interface{}{}, "", data)
|
data = kit.KeyValue(map[string]interface{}{}, "", data)
|
||||||
m.Push("", data)
|
m.Push("", data)
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,6 @@
|
|||||||
package input
|
package input
|
||||||
|
|
||||||
import (
|
import (
|
||||||
ice "github.com/shylinux/icebergs"
|
|
||||||
"github.com/shylinux/icebergs/base/cli"
|
|
||||||
"github.com/shylinux/icebergs/base/mdb"
|
|
||||||
"github.com/shylinux/icebergs/base/nfs"
|
|
||||||
"github.com/shylinux/icebergs/base/web"
|
|
||||||
"github.com/shylinux/icebergs/core/code"
|
|
||||||
kit "github.com/shylinux/toolkits"
|
|
||||||
|
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/csv"
|
"encoding/csv"
|
||||||
@ -16,6 +8,14 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
ice "github.com/shylinux/icebergs"
|
||||||
|
"github.com/shylinux/icebergs/base/cli"
|
||||||
|
"github.com/shylinux/icebergs/base/mdb"
|
||||||
|
"github.com/shylinux/icebergs/base/nfs"
|
||||||
|
"github.com/shylinux/icebergs/base/web"
|
||||||
|
"github.com/shylinux/icebergs/core/code"
|
||||||
|
kit "github.com/shylinux/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
func _input_list(m *ice.Message, lib string) {
|
func _input_list(m *ice.Message, lib string) {
|
||||||
|
@ -5,7 +5,7 @@ refer "" `
|
|||||||
文档 https://developers.weixin.qq.com/miniprogram/dev/api/
|
文档 https://developers.weixin.qq.com/miniprogram/dev/api/
|
||||||
源码 https://github.com/shylinux/icebergs/blob/master/misc/mp/mp.go
|
源码 https://github.com/shylinux/icebergs/blob/master/misc/mp/mp.go
|
||||||
`
|
`
|
||||||
image `gh_61ea404535e4_258.jpg`
|
qrcode `https://mp.weixin.qq.com/a/~HkylKD4DZShrgSm5GuXWLQ~~`
|
||||||
|
|
||||||
chapter "应用"
|
chapter "应用"
|
||||||
field scan web.chat.scan
|
field scan web.chat.scan
|
||||||
|
@ -1,6 +1,13 @@
|
|||||||
package wx
|
package wx
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/sha1"
|
||||||
|
"encoding/hex"
|
||||||
|
"encoding/xml"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
ice "github.com/shylinux/icebergs"
|
ice "github.com/shylinux/icebergs"
|
||||||
"github.com/shylinux/icebergs/base/aaa"
|
"github.com/shylinux/icebergs/base/aaa"
|
||||||
"github.com/shylinux/icebergs/base/cli"
|
"github.com/shylinux/icebergs/base/cli"
|
||||||
@ -9,13 +16,6 @@ import (
|
|||||||
"github.com/shylinux/icebergs/core/chat"
|
"github.com/shylinux/icebergs/core/chat"
|
||||||
"github.com/shylinux/icebergs/core/wiki"
|
"github.com/shylinux/icebergs/core/wiki"
|
||||||
kit "github.com/shylinux/toolkits"
|
kit "github.com/shylinux/toolkits"
|
||||||
|
|
||||||
"crypto/sha1"
|
|
||||||
"encoding/hex"
|
|
||||||
"encoding/xml"
|
|
||||||
"fmt"
|
|
||||||
"strings"
|
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func _wx_sign(m *ice.Message, nonce, stamp string) string {
|
func _wx_sign(m *ice.Message, nonce, stamp string) string {
|
||||||
@ -56,7 +56,11 @@ func _wx_parse(m *ice.Message) {
|
|||||||
m.Option("Content", data.Content)
|
m.Option("Content", data.Content)
|
||||||
}
|
}
|
||||||
func _wx_reply(m *ice.Message, tmpl string) {
|
func _wx_reply(m *ice.Message, tmpl string) {
|
||||||
m.Render(m.Conf(LOGIN, kit.Keym(kit.MDB_TEMPLATE, tmpl)))
|
m.Option(ice.MSG_OUTPUT, ice.RENDER_RESULT)
|
||||||
|
res, _ := kit.Render(m.Conf(LOGIN, kit.Keym(kit.MDB_TEMPLATE, tmpl)), m)
|
||||||
|
|
||||||
|
m.Set(ice.MSG_RESULT)
|
||||||
|
m.Echo(string(res))
|
||||||
}
|
}
|
||||||
func _wx_action(m *ice.Message) {
|
func _wx_action(m *ice.Message) {
|
||||||
m.Option(ice.MSG_OUTPUT, ice.RENDER_RESULT)
|
m.Option(ice.MSG_OUTPUT, ice.RENDER_RESULT)
|
||||||
@ -97,8 +101,12 @@ const (
|
|||||||
EXPIRE = "expire"
|
EXPIRE = "expire"
|
||||||
TICKET = "ticket"
|
TICKET = "ticket"
|
||||||
EXPIRES = "expires"
|
EXPIRES = "expires"
|
||||||
|
QRCODE = "qrcode"
|
||||||
CONFIG = "config"
|
CONFIG = "config"
|
||||||
WEIXIN = "weixin"
|
WEIXIN = "weixin"
|
||||||
|
|
||||||
|
ERRCODE = "errcode"
|
||||||
|
ERRMSG = "errmsg"
|
||||||
)
|
)
|
||||||
const (
|
const (
|
||||||
ACCESS = "access"
|
ACCESS = "access"
|
||||||
@ -136,7 +144,7 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
|
|||||||
m.Save()
|
m.Save()
|
||||||
}},
|
}},
|
||||||
|
|
||||||
ACCESS: {Name: "access appid auto ticket token login", Help: "认证", Action: map[string]*ice.Action{
|
ACCESS: {Name: "access appid auto menu qrcode ticket token login", Help: "认证", Action: map[string]*ice.Action{
|
||||||
LOGIN: {Name: "login appid appmm token", Help: "登录", Hand: func(m *ice.Message, arg ...string) {
|
LOGIN: {Name: "login appid appmm token", Help: "登录", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Conf(LOGIN, kit.Keym(APPID), m.Option(APPID))
|
m.Conf(LOGIN, kit.Keym(APPID), m.Option(APPID))
|
||||||
m.Conf(LOGIN, kit.Keym(APPMM), m.Option(APPMM))
|
m.Conf(LOGIN, kit.Keym(APPMM), m.Option(APPMM))
|
||||||
@ -146,7 +154,7 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
|
|||||||
if now := time.Now().Unix(); m.Conf(LOGIN, kit.Keym(ACCESS, TOKEN)) == "" || now > kit.Int64(m.Conf(LOGIN, kit.Keym(ACCESS, EXPIRE))) {
|
if now := time.Now().Unix(); m.Conf(LOGIN, kit.Keym(ACCESS, TOKEN)) == "" || now > kit.Int64(m.Conf(LOGIN, kit.Keym(ACCESS, EXPIRE))) {
|
||||||
msg := m.Cmd(web.SPIDE, WEIXIN, web.SPIDE_GET, "/cgi-bin/token?grant_type=client_credential",
|
msg := m.Cmd(web.SPIDE, WEIXIN, web.SPIDE_GET, "/cgi-bin/token?grant_type=client_credential",
|
||||||
APPID, m.Conf(LOGIN, kit.Keym(APPID)), "secret", m.Conf(LOGIN, kit.Keym(APPMM)))
|
APPID, m.Conf(LOGIN, kit.Keym(APPID)), "secret", m.Conf(LOGIN, kit.Keym(APPMM)))
|
||||||
if m.Warn(msg.Append("errcode") != "", "%v: %v", msg.Append("errcode"), msg.Append("errmsg")) {
|
if m.Warn(msg.Append(ERRCODE) != "", "%v: %v", msg.Append(ERRCODE), msg.Append(ERRMSG)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,7 +167,7 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
|
|||||||
if now := time.Now().Unix(); m.Conf(LOGIN, kit.Keym(ACCESS, TICKET)) == "" || now > kit.Int64(m.Conf(LOGIN, kit.Keym(ACCESS, EXPIRES))) {
|
if now := time.Now().Unix(); m.Conf(LOGIN, kit.Keym(ACCESS, TICKET)) == "" || now > kit.Int64(m.Conf(LOGIN, kit.Keym(ACCESS, EXPIRES))) {
|
||||||
msg := m.Cmd(web.SPIDE, WEIXIN, web.SPIDE_GET, "/cgi-bin/ticket/getticket?type=jsapi",
|
msg := m.Cmd(web.SPIDE, WEIXIN, web.SPIDE_GET, "/cgi-bin/ticket/getticket?type=jsapi",
|
||||||
"access_token", m.Cmdx(ACCESS, TOKEN))
|
"access_token", m.Cmdx(ACCESS, TOKEN))
|
||||||
if m.Warn(msg.Append("errcode") != "0", msg.Append("errcode"), msg.Append("errmsg")) {
|
if m.Warn(msg.Append(ERRCODE) != "0", msg.Append(ERRCODE), msg.Append(ERRMSG)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,6 +176,11 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
|
|||||||
}
|
}
|
||||||
m.Echo(m.Conf(LOGIN, kit.Keym(ACCESS, TICKET)))
|
m.Echo(m.Conf(LOGIN, kit.Keym(ACCESS, TICKET)))
|
||||||
}},
|
}},
|
||||||
|
QRCODE: {Name: "qrcode", Help: "扫码", Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
m.Cmdy(web.SPIDE, WEIXIN, web.SPIDE_POST, "/cgi-bin/qrcode/create?access_token="+m.Cmdx(ACCESS, TOKEN),
|
||||||
|
web.SPIDE_DATA, kit.Format(`{"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}`))
|
||||||
|
m.EchoQRCode(m.Append("url"))
|
||||||
|
}},
|
||||||
CONFIG: {Name: "config", Help: "配置", Hand: func(m *ice.Message, arg ...string) {
|
CONFIG: {Name: "config", Help: "配置", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_wx_config(m, "some")
|
_wx_config(m, "some")
|
||||||
}},
|
}},
|
||||||
@ -179,7 +192,8 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
|
|||||||
|
|
||||||
MENU: {Name: "menu name auto", Help: "菜单", Action: map[string]*ice.Action{
|
MENU: {Name: "menu name auto", Help: "菜单", Action: map[string]*ice.Action{
|
||||||
mdb.CREATE: {Name: "create", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "create", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
share := m.Cmdx(web.SHARE, mdb.CREATE, kit.MDB_TYPE, web.LOGIN)
|
share := m.Cmdx(web.SHARE, mdb.CREATE, kit.MDB_TYPE, web.LOGIN,
|
||||||
|
aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERROLE, m.Option(ice.MSG_USERROLE))
|
||||||
kit.Fetch(m.Confv(LOGIN, kit.Keym(MENU)), func(index int, value map[string]interface{}) {
|
kit.Fetch(m.Confv(LOGIN, kit.Keym(MENU)), func(index int, value map[string]interface{}) {
|
||||||
m.Push("", value, kit.Split("title,spark,image"))
|
m.Push("", value, kit.Split("title,spark,image"))
|
||||||
m.Push(wiki.REFER, kit.MergeURL(kit.Format(value[wiki.REFER]), web.SHARE, share))
|
m.Push(wiki.REFER, kit.MergeURL(kit.Format(value[wiki.REFER]), web.SHARE, share))
|
||||||
@ -214,6 +228,10 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
|
|||||||
case "subscribe": // 关注事件
|
case "subscribe": // 关注事件
|
||||||
_wx_action(m.Cmdy(MENU, mdb.CREATE))
|
_wx_action(m.Cmdy(MENU, mdb.CREATE))
|
||||||
case "unsubscribe": // 取关事件
|
case "unsubscribe": // 取关事件
|
||||||
|
|
||||||
|
case "SCAN": // 扫码
|
||||||
|
m.Echo("hello world")
|
||||||
|
_wx_reply(m, kit.MDB_TEXT)
|
||||||
}
|
}
|
||||||
|
|
||||||
case kit.MDB_TEXT:
|
case kit.MDB_TEXT:
|
||||||
|
@ -6,6 +6,8 @@ refer `
|
|||||||
源码 https://github.com/shylinux/icebergs/blob/master/misc/wx/wx.go
|
源码 https://github.com/shylinux/icebergs/blob/master/misc/wx/wx.go
|
||||||
`
|
`
|
||||||
|
|
||||||
|
qrcode `http://weixin.qq.com/r/_B1-Z7TEXOkjrfAE90jq`
|
||||||
|
|
||||||
chapter "应用"
|
chapter "应用"
|
||||||
field scan web.chat.scan
|
field scan web.chat.scan
|
||||||
field files web.chat.files
|
field files web.chat.files
|
||||||
|
Loading…
x
Reference in New Issue
Block a user