1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 01:24:05 +08:00

opt spide

This commit is contained in:
shylinux 2021-05-15 03:04:22 +08:00
parent 280c00ccbd
commit 8399542454
6 changed files with 49 additions and 32 deletions

View File

@ -76,7 +76,7 @@ func UserRole(m *ice.Message, username interface{}) (role string) {
return
}
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(
USERNICK, m.Option(ice.MSG_USERNICK, UserNick(m, username)),
USERROLE, m.Option(ice.MSG_USERROLE, UserRole(m, username)),

View File

@ -315,15 +315,16 @@ func init() {
}
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(string(b))
} else {
m.Echo(string(b))
}
case SPIDE_MSG:
var data map[string][]string
m.Assert(json.NewDecoder(res.Body).Decode(&data))
m.Info("res: %s", kit.Format(data))
for _, k := range data[ice.MSG_APPEND] {
for i := range data[k] {
m.Push(k, data[k][i])
@ -333,18 +334,14 @@ func init() {
default:
b, _ := ioutil.ReadAll(res.Body)
m.Echo(string(b))
break
if strings.HasPrefix(res.Header.Get(ContentType), ContentHTML) {
b, _ := ioutil.ReadAll(res.Body)
var data interface{}
if e := json.Unmarshal(b, &data); e != nil {
m.Echo(string(b))
break
}
var data interface{}
m.Assert(json.NewDecoder(res.Body).Decode(&data))
m.Optionv("content_data", data)
data = kit.KeyValue(map[string]interface{}{}, "", data)
m.Push("", data)
}

View File

@ -1,14 +1,6 @@
package input
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"
"bytes"
"encoding/csv"
@ -16,6 +8,14 @@ import (
"os"
"path"
"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) {

View File

@ -5,7 +5,7 @@ refer "" `
文档 https://developers.weixin.qq.com/miniprogram/dev/api/
源码 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 "应用"
field scan web.chat.scan

View File

@ -1,6 +1,13 @@
package wx
import (
"crypto/sha1"
"encoding/hex"
"encoding/xml"
"fmt"
"strings"
"time"
ice "github.com/shylinux/icebergs"
"github.com/shylinux/icebergs/base/aaa"
"github.com/shylinux/icebergs/base/cli"
@ -9,13 +16,6 @@ import (
"github.com/shylinux/icebergs/core/chat"
"github.com/shylinux/icebergs/core/wiki"
kit "github.com/shylinux/toolkits"
"crypto/sha1"
"encoding/hex"
"encoding/xml"
"fmt"
"strings"
"time"
)
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)
}
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) {
m.Option(ice.MSG_OUTPUT, ice.RENDER_RESULT)
@ -97,8 +101,12 @@ const (
EXPIRE = "expire"
TICKET = "ticket"
EXPIRES = "expires"
QRCODE = "qrcode"
CONFIG = "config"
WEIXIN = "weixin"
ERRCODE = "errcode"
ERRMSG = "errmsg"
)
const (
ACCESS = "access"
@ -136,7 +144,7 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
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) {
m.Conf(LOGIN, kit.Keym(APPID), m.Option(APPID))
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))) {
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)))
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
}
@ -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))) {
msg := m.Cmd(web.SPIDE, WEIXIN, web.SPIDE_GET, "/cgi-bin/ticket/getticket?type=jsapi",
"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
}
@ -168,6 +176,11 @@ var Index = &ice.Context{Name: WX, Help: "公众号",
}
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) {
_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{
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{}) {
m.Push("", value, kit.Split("title,spark,image"))
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": // 关注事件
_wx_action(m.Cmdy(MENU, mdb.CREATE))
case "unsubscribe": // 取关事件
case "SCAN": // 扫码
m.Echo("hello world")
_wx_reply(m, kit.MDB_TEXT)
}
case kit.MDB_TEXT:

View File

@ -6,6 +6,8 @@ refer `
源码 https://github.com/shylinux/icebergs/blob/master/misc/wx/wx.go
`
qrcode `http://weixin.qq.com/r/_B1-Z7TEXOkjrfAE90jq`
chapter "应用"
field scan web.chat.scan
field files web.chat.files