添加袤博推送 (#284)

Co-authored-by: liuming <liuming@example.com>
pull/291/head
liu ming 2 years ago committed by GitHub
parent 1a61598322
commit e000dc18aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -239,6 +239,12 @@ push:
fcm: #firebase cloud message 消息推送
serviceAccount: "openim-5c6c0-firebase-adminsdk-ppwol-8765884a78.json" #帐号文件,此处需要改修配置,并且这个文件放在 config目录下
enable: false
mob: #袤博推送
appKey: "3377f689a25" #帐号文件,此处需要改修配置,并且这个文件放在 config目录下
pushUrl: "https://api.push.mob.com/v3/push/createPush"
scheme: "dianzhijiaunilinks://dianzhijia.com?page=rent"
appSecret: "77b4e20e94db3a776b87d8693be23e"
enable: false

@ -45,6 +45,10 @@ func init() {
if config.Config.Push.Fcm.Enable {
offlinePusher = fcm.NewFcm()
}
if config.Config.Push.Mob.Enable {
offlinePusher = mobpush.MobPushClient
}
}
func initPrometheus() {

@ -0,0 +1,18 @@
package common
import (
"Open_IM/pkg/common/config"
"crypto/md5"
"encoding/hex"
"fmt"
"io"
)
func GetSign(paramsStr string) string {
h := md5.New()
io.WriteString(h, paramsStr)
io.WriteString(h, config.Config.Push.Mob.AppSecret)
fmt.Printf("%x", h.Sum(nil))
return hex.EncodeToString(h.Sum(nil))
}

@ -0,0 +1,75 @@
package mobpush
import (
"Open_IM/internal/push"
"Open_IM/internal/push/mobpush/common"
"Open_IM/internal/push/mobpush/requestParams"
"Open_IM/pkg/common/config"
"encoding/json"
"io/ioutil"
"net/http"
"strings"
)
var (
MobPushClient *MobPush
)
func init() {
MobPushClient = newGetuiClient()
}
type MobPush struct{}
func newGetuiClient() *MobPush {
return &MobPush{}
}
func (j *MobPush) Push(accounts []string, alert, detailContent, operationID string, opts push.PushOpts) (string, error) {
var target requestParams.PushTarget
target.SetAlias(accounts)
target.SetTarget(2)
var no requestParams.PushNotify
no.SetType(1)
no.SetIosProduction(1)
no.SetPlats([]int{1, 2})
no.SetContent(alert)
var forward requestParams.PushForward
forward.SetNextType(2)
forward.SetScheme(config.Config.Push.Mob.Scheme)
var po requestParams.PushObj
po.SetSource("webapi")
po.SetAppkey(config.Config.Push.Mob.AppKey)
po.SetPushTarget(&target)
po.SetPushNotify(&no)
po.SetPushForward(&forward)
con, err := json.Marshal(po)
if err != nil {
return "", err
}
client := &http.Client{}
req, err := http.NewRequest("POST", config.Config.Push.Mob.PushUrl, strings.NewReader(string(con)))
if err != nil {
return "", err
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("key", config.Config.Push.Mob.AppKey)
req.Header.Set("sign", common.GetSign(string(con)))
resp, err := client.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
result, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", err
}
return string(result), nil
}

@ -0,0 +1,14 @@
package requestParams
type PushForward struct {
NextType int `json:"nextType"`
Scheme string `json:"scheme,omitempty"`
}
func (m *PushForward) SetNextType(c int) {
m.NextType = c
}
func (m *PushForward) SetScheme(t string) {
m.Scheme = t
}

@ -0,0 +1,26 @@
package requestParams
type PushNotify struct {
Plats []int `json:"plats,omitempty"`
IosProduction int `json:"iosProduction,omitempty"`
Content string `json:"content,omitempty"`
Type int `json:"type,omitempty"`
}
func (n *PushNotify) SetPlats(plats []int) {
n.Plats = plats
}
func (n *PushNotify) SetIosProduction(iosProduction int) {
n.IosProduction = iosProduction
}
func (n *PushNotify) SetContent(content string) {
n.Content = content
}
func (n *PushNotify) SetType(Type int) {
n.Type = Type
}

@ -0,0 +1,28 @@
package requestParams
type PushObj struct {
Source interface{} `json:"source"`
Appkey interface{} `json:"appkey"`
PushTarget interface{} `json:"pushTarget,omitempty"`
PushNotify interface{} `json:"pushNotify,omitempty"`
PushForward interface{} `json:"pushForward,omitempty"`
}
func (p *PushObj) SetSource(source string) {
p.Source = source
}
func (p *PushObj) SetAppkey(appkey string) {
p.Appkey = appkey
}
func (p *PushObj) SetPushTarget(no *PushTarget) {
p.PushTarget = no
}
func (p *PushObj) SetPushNotify(m *PushNotify) {
p.PushNotify = m
}
func (p *PushObj) SetPushForward(o *PushForward) {
p.PushForward = o
}

@ -0,0 +1,13 @@
package requestParams
type PushTarget struct {
Target interface{} `json:"target,omitempty"`
Alias []string `json:"alias,omitempty"`
}
func (p *PushTarget) SetTarget(target int) {
p.Target = target
}
func (p *PushTarget) SetAlias(alias []string) {
p.Alias = alias
}

@ -215,6 +215,13 @@ type config struct {
ServiceAccount string `yaml:"serviceAccount"`
Enable bool `yaml:"enable"`
}
Mob struct {
AppKey string `yaml:"appKey"`
PushUrl string `yaml:"pushUrl"`
Scheme string `yaml:"scheme"`
AppSecret string `yaml:"appSecret"`
Enable bool `yaml:"enable"`
}
}
Manager struct {
AppManagerUid []string `yaml:"appManagerUid"`

Loading…
Cancel
Save