mirror of
https://shylinux.com/x/icebergs
synced 2025-04-28 18:22:02 +08:00
opt location.go
This commit is contained in:
parent
18d9f9f3e4
commit
adcbdb8365
@ -97,6 +97,9 @@ func _serve_handle(key string, cmd *ice.Command, m *ice.Message, w http.Response
|
|||||||
kit.For(u.Query(), func(k string, v []string) { _log(ctx.ARGS, k, v).Optionv(k, v) })
|
kit.For(u.Query(), func(k string, v []string) { _log(ctx.ARGS, k, v).Optionv(k, v) })
|
||||||
}
|
}
|
||||||
kit.For(kit.ParseQuery(r.URL.RawQuery), func(k string, v []string) { m.Optionv(k, v) })
|
kit.For(kit.ParseQuery(r.URL.RawQuery), func(k string, v []string) { m.Optionv(k, v) })
|
||||||
|
if r.Method == http.MethodGet && m.Option(ice.MSG_CMDS) != "" {
|
||||||
|
_log(ctx.ARGS, ice.MSG_CMDS, m.Optionv(ice.MSG_CMDS))
|
||||||
|
}
|
||||||
switch r.Header.Get(ContentType) {
|
switch r.Header.Get(ContentType) {
|
||||||
case ApplicationJSON:
|
case ApplicationJSON:
|
||||||
kit.For(kit.UnMarshal(r.Body), func(k string, v ice.Any) { m.Optionv(k, v) })
|
kit.For(kit.UnMarshal(r.Body), func(k string, v ice.Any) { m.Optionv(k, v) })
|
||||||
@ -115,7 +118,7 @@ func _serve_handle(key string, cmd *ice.Command, m *ice.Message, w http.Response
|
|||||||
defer func() { Render(m, m.Option(ice.MSG_OUTPUT), kit.List(m.Optionv(ice.MSG_ARGS))...) }()
|
defer func() { Render(m, m.Option(ice.MSG_OUTPUT), kit.List(m.Optionv(ice.MSG_ARGS))...) }()
|
||||||
if cmds, ok := _serve_auth(m, key, kit.Simple(m.Optionv(ice.MSG_CMDS)), w, r); ok {
|
if cmds, ok := _serve_auth(m, key, kit.Simple(m.Optionv(ice.MSG_CMDS)), w, r); ok {
|
||||||
defer func() {
|
defer func() {
|
||||||
m.Cost(kit.Format("%s: %s/%s %v", r.Method, m.PrefixKey(), path.Join(cmds...), m.FormatSize()))
|
m.Cost(kit.Format("%s: /chat/cmd/%s/%s %v %s", r.Method, m.Option(ice.MSG_INDEX), path.Join(cmds...), m.FormatSize(), kit.FmtSize(len(m.Result()))))
|
||||||
}()
|
}()
|
||||||
m.Option(ice.MSG_OPTS, kit.Simple(m.Optionv(ice.MSG_OPTION), func(k string) bool { return !strings.HasPrefix(k, ice.MSG_SESSID) }))
|
m.Option(ice.MSG_OPTS, kit.Simple(m.Optionv(ice.MSG_OPTION), func(k string) bool { return !strings.HasPrefix(k, ice.MSG_SESSID) }))
|
||||||
if m.Detailv(m.PrefixKey(), cmds); len(cmds) > 1 && cmds[0] == ctx.ACTION {
|
if m.Detailv(m.PrefixKey(), cmds); len(cmds) > 1 && cmds[0] == ctx.ACTION {
|
||||||
|
@ -8,6 +8,7 @@ action.go
|
|||||||
search.go
|
search.go
|
||||||
portal.go
|
portal.go
|
||||||
iframe.go
|
iframe.go
|
||||||
|
trans.go
|
||||||
icons.go
|
icons.go
|
||||||
|
|
||||||
pod.go
|
pod.go
|
||||||
@ -17,7 +18,6 @@ grant.go
|
|||||||
oauth
|
oauth
|
||||||
|
|
||||||
macos
|
macos
|
||||||
trans.go
|
|
||||||
favor.go
|
favor.go
|
||||||
flows.go
|
flows.go
|
||||||
flows.js
|
flows.js
|
||||||
|
@ -2,7 +2,6 @@ package chat
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"sync"
|
|
||||||
|
|
||||||
ice "shylinux.com/x/icebergs"
|
ice "shylinux.com/x/icebergs"
|
||||||
"shylinux.com/x/icebergs/base/aaa"
|
"shylinux.com/x/icebergs/base/aaa"
|
||||||
@ -20,62 +19,43 @@ const (
|
|||||||
const LOCATION = "location"
|
const LOCATION = "location"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
location := sync.Map{}
|
|
||||||
cache := func(m *ice.Message, key string, load func() string) ice.Any {
|
|
||||||
if current, ok := location.Load(key); ok {
|
|
||||||
m.Debug("read cache %v", key)
|
|
||||||
return current
|
|
||||||
}
|
|
||||||
current := load()
|
|
||||||
location.Store(key, current)
|
|
||||||
m.Debug("load cache %v %v", key, current)
|
|
||||||
return current
|
|
||||||
}
|
|
||||||
get := func(m *ice.Message, api string, arg ...ice.Any) string {
|
get := func(m *ice.Message, api string, arg ...ice.Any) string {
|
||||||
return kit.Format(cache(m, kit.Join(kit.Simple(api, arg)), func() string {
|
return kit.Format(mdb.Cache(m, kit.Join(kit.Simple(api, arg)), func() ice.Any {
|
||||||
return m.Cmdx(http.MethodGet, "https://apis.map.qq.com/ws/"+api, mdb.KEY, mdb.Config(m, aaa.TOKEN), arg)
|
res := kit.UnMarshal(m.Cmdx(http.MethodGet, "https://apis.map.qq.com/ws/"+api, mdb.KEY, mdb.Config(m, aaa.TOKEN), arg))
|
||||||
|
m.Warn(kit.Format(kit.Value(res, "status")) != "0", kit.Format(res))
|
||||||
|
m.Debug("what %v %v", api, kit.Format(res))
|
||||||
|
return kit.Format(res)
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
Index.MergeCommands(ice.Commands{
|
Index.MergeCommands(ice.Commands{
|
||||||
LOCATION: {Name: "location hash auto", Help: "地理位置", Actions: ice.MergeActions(ice.Actions{
|
LOCATION: {Name: "location hash auto", Help: "地图", Icon: "Maps.png", Actions: ice.MergeActions(ice.Actions{
|
||||||
FAVOR_INPUTS: {Hand: func(m *ice.Message, arg ...string) {
|
"explore": {Help: "周边", Hand: func(m *ice.Message, arg ...string) {
|
||||||
switch arg[0] {
|
m.Echo(get(m, "place/v1/explore", m.OptionSimple("keyword,boundary,page_index")))
|
||||||
case mdb.TYPE:
|
|
||||||
m.Push(arg[0], LOCATION)
|
|
||||||
}
|
|
||||||
}},
|
}},
|
||||||
FAVOR_ACTION: {Hand: func(m *ice.Message, arg ...string) {
|
"search": {Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
||||||
if m.Option(mdb.TYPE) != LOCATION {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ctx.ProcessField(m, m.PrefixKey(), []string{m.Option(mdb.TEXT)}, arg...)
|
|
||||||
}},
|
|
||||||
FAVOR_TABLES: {Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
switch arg[1] {
|
|
||||||
case LOCATION:
|
|
||||||
m.PushButton(LOCATION, mdb.REMOVE)
|
|
||||||
}
|
|
||||||
}},
|
|
||||||
"explore": {Name: "explore", Help: "周边", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
m.Echo(get(m, "place/v1/explore", m.OptionSimple("boundary,page_index")))
|
|
||||||
}},
|
|
||||||
"search": {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
if arg[0] == "*" {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
m.Echo(get(m, "place/v1/search", m.OptionSimple("keyword,boundary,page_index")))
|
m.Echo(get(m, "place/v1/search", m.OptionSimple("keyword,boundary,page_index")))
|
||||||
}},
|
}},
|
||||||
"direction": {Name: "direction", Help: "导航", Hand: func(m *ice.Message, arg ...string) {
|
"direction": {Help: "导航", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Echo(get(m, "direction/v1/"+m.Option(mdb.TYPE)+nfs.PS, m.OptionSimple("from,to")))
|
m.Echo(get(m, "direction/v1/"+m.Option(mdb.TYPE)+nfs.PS, m.OptionSimple("from,to")))
|
||||||
}},
|
}},
|
||||||
"district": {Name: "district", Help: "地区", Hand: func(m *ice.Message, arg ...string) {
|
"district": {Help: "地区", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Echo(get(m, "district/v1/getchildren", m.OptionSimple(mdb.ID)))
|
m.Echo(get(m, "district/v1/getchildren", m.OptionSimple(mdb.ID)))
|
||||||
}},
|
}},
|
||||||
}, FavorAction(), mdb.HashAction(mdb.FIELD, "time,hash,type,name,text,latitude,longitude,extra")), Hand: func(m *ice.Message, arg ...string) {
|
FAVOR_INPUTS: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
kit.If(arg[0] == mdb.TYPE, func() { m.Push(arg[0], LOCATION) })
|
||||||
|
}},
|
||||||
|
FAVOR_TABLES: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
kit.If(arg[1] == LOCATION, func() { m.PushButton(LOCATION, mdb.REMOVE) })
|
||||||
|
}},
|
||||||
|
FAVOR_ACTION: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
kit.If(m.Option(mdb.TYPE) == LOCATION, func() { ctx.ProcessField(m, m.PrefixKey(), []string{m.Option(mdb.TEXT)}, arg...) })
|
||||||
|
}},
|
||||||
|
}, FavorAction(), mdb.HashAction(mdb.FIELD, "time,hash,type,name,text,latitude,longitude,extra", nfs.SCRIPT, "https://map.qq.com/api/gljs?v=1.exp")), Hand: func(m *ice.Message, arg ...string) {
|
||||||
mdb.HashSelect(m, kit.Slice(arg, 0, 1)...)
|
mdb.HashSelect(m, kit.Slice(arg, 0, 1)...)
|
||||||
ctx.DisplayLocal(m, "", ctx.ConfigSimple(m, aaa.TOKEN))
|
ctx.DisplayLocal(m, "", ctx.ConfigSimple(m, aaa.TOKEN))
|
||||||
|
// m.Option(LOCATION, m.Cmdx(web.SERVE, tcp.HOST))
|
||||||
m.Option(LOCATION, get(m, "location/v1/ip", aaa.IP, m.Option(ice.MSG_USERIP)))
|
m.Option(LOCATION, get(m, "location/v1/ip", aaa.IP, m.Option(ice.MSG_USERIP)))
|
||||||
|
m.Option(nfs.SCRIPT, kit.MergeURL(mdb.Config(m, nfs.SCRIPT), "key", mdb.Config(m, aaa.TOKEN)))
|
||||||
}},
|
}},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,14 @@ const (
|
|||||||
func init() {
|
func init() {
|
||||||
Index.MergeCommands(ice.Commands{
|
Index.MergeCommands(ice.Commands{
|
||||||
BUFFER: {Name: "buffer name value auto", Help: "缓存", Actions: ice.Actions{
|
BUFFER: {Name: "buffer name value auto", Help: "缓存", Actions: ice.Actions{
|
||||||
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {}},
|
mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
mdb.IsSearchPreview(m, arg, func() []string {
|
||||||
|
if text := _tmux_cmds(m, SHOW_BUFFER); text != "" {
|
||||||
|
return []string{mdb.TEXT, "", text}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}},
|
||||||
mdb.CREATE: {Name: "create value*", Hand: func(m *ice.Message, arg ...string) { _tmux_cmd(m, SET_BUFFER, m.Option(mdb.VALUE)) }},
|
mdb.CREATE: {Name: "create value*", Hand: func(m *ice.Message, arg ...string) { _tmux_cmd(m, SET_BUFFER, m.Option(mdb.VALUE)) }},
|
||||||
mdb.REMOVE: {Hand: func(m *ice.Message, arg ...string) { _tmux_cmd(m, DELETE_BUFFER, "-b", m.Option(mdb.NAME)) }},
|
mdb.REMOVE: {Hand: func(m *ice.Message, arg ...string) { _tmux_cmd(m, DELETE_BUFFER, "-b", m.Option(mdb.NAME)) }},
|
||||||
mdb.MODIFY: {Hand: func(m *ice.Message, arg ...string) {
|
mdb.MODIFY: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user