|
|
|
package push
|
|
|
|
|
|
|
|
import (
|
|
|
|
"Open_IM/internal/push/jpush/common"
|
|
|
|
"Open_IM/internal/push/jpush/requestBody"
|
|
|
|
"Open_IM/pkg/common/config"
|
|
|
|
"bytes"
|
|
|
|
"encoding/json"
|
|
|
|
"io/ioutil"
|
|
|
|
"net/http"
|
|
|
|
)
|
|
|
|
|
|
|
|
type JPushResp struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
func JGAccountListPush(accounts []string, alert, detailContent, platform string) ([]byte, error) {
|
|
|
|
|
|
|
|
var pf requestBody.Platform
|
|
|
|
_ = pf.SetPlatform(platform)
|
|
|
|
var au requestBody.Audience
|
|
|
|
au.SetAlias(accounts)
|
|
|
|
var no requestBody.Notification
|
|
|
|
no.SetAlert(alert, platform)
|
|
|
|
var me requestBody.Message
|
|
|
|
me.SetMsgContent(detailContent)
|
|
|
|
var o requestBody.Options
|
|
|
|
o.SetApnsProduction(false)
|
|
|
|
var po requestBody.PushObj
|
|
|
|
po.SetPlatform(&pf)
|
|
|
|
po.SetAudience(&au)
|
|
|
|
po.SetNotification(&no)
|
|
|
|
po.SetMessage(&me)
|
|
|
|
po.SetOptions(&o)
|
|
|
|
|
|
|
|
con, err := json.Marshal(po)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
client := &http.Client{}
|
|
|
|
|
|
|
|
req, err := http.NewRequest("POST", config.Config.Push.Jpns.PushUrl, bytes.NewBuffer(con))
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
req.Header.Set("Authorization", common.GetAuthorization(config.Config.Push.Jpns.AppKey, config.Config.Push.Jpns.MasterSecret))
|
|
|
|
|
|
|
|
resp, err := client.Do(req)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
defer resp.Body.Close()
|
|
|
|
result, err := ioutil.ReadAll(resp.Body)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return result, nil
|
|
|
|
}
|