58 lines
1022 B
Go
58 lines
1022 B
Go
package wcfrest
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/opentdp/go-helper/logman"
|
|
"github.com/opentdp/go-helper/request"
|
|
|
|
"github.com/opentdp/wechat-rest/wcferry"
|
|
)
|
|
|
|
var forwardToUrlStat = false
|
|
var forwardToUrlList = map[string]bool{}
|
|
|
|
func enableForwardToUrl(url string) error {
|
|
|
|
if !forwardToUrlStat {
|
|
err := wc.EnrollReceiver(true, func(msg *wcferry.WxMsg) {
|
|
for url := range forwardToUrlList {
|
|
logman.Info("forward msg", "url", url, "Id", msg.Id)
|
|
request.JsonPost(url, msg, request.H{})
|
|
}
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if _, ok := forwardToUrlList[url]; ok {
|
|
return errors.New("url already exists")
|
|
}
|
|
|
|
forwardToUrlStat = true
|
|
forwardToUrlList[url] = true
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
func disableForwardToUrl(url string) error {
|
|
|
|
if _, ok := forwardToUrlList[url]; !ok {
|
|
return errors.New("url not exists")
|
|
}
|
|
|
|
delete(forwardToUrlList, url)
|
|
|
|
if len(forwardToUrlList) == 0 {
|
|
if err := wc.DisableReceiver(false); err != nil {
|
|
return err
|
|
}
|
|
forwardToUrlStat = false
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|