MCPcopy
hub / github.com/hwholiday/learning_tools / Push

Method Push

all_packaged_library/push/huawei/push.go:51–108  ·  view source on GitHub ↗
(in *ReqPush)

Source from the content-addressed store, hash-verified

49}
50
51func (p *HuaweiPush) Push(in *ReqPush) (*ResPush, error) {
52 var (
53 req http.Request
54 bodyStr, AccessToken string
55 err error
56 res *http.Response
57 resPush *ResPush
58 resPushByte []byte
59 urlPath *url.URL
60 )
61 req.ParseForm()
62 if p.AutoCacheAccessToken == true {
63 info, has := c.Get("AccessToken")
64 if !has {
65 data, err := p.GetToken()
66 if err != nil {
67 return nil, err
68 }
69 AccessToken = data.AccessToken
70 } else {
71 AccessToken = fmt.Sprint(info)
72 }
73 } else {
74 AccessToken = in.AccessToken
75 }
76 req.Form.Add("access_token", AccessToken)
77 if in.NspSvc == "" {
78 req.Form.Add("nsp_svc", "openpush.message.api.send")
79 } else {
80 req.Form.Add("nsp_svc", in.NspSvc)
81 }
82 if in.NspTs == "" {
83 req.Form.Add("nsp_ts", fmt.Sprint(time.Now().Unix()))
84 } else {
85 req.Form.Add("nsp_ts", in.NspTs)
86 }
87 req.Form.Add("device_token_list", fmt.Sprintf("[\"%s\"]", strings.Join(in.DeviceTokenList, "\",\"")))
88 if in.ExpireTime != "" {
89 req.Form.Add("expire_time", in.ExpireTime)
90 }
91 req.Form.Add("payload", in.Payload)
92 bodyStr = strings.TrimSpace(req.Form.Encode())
93 if urlPath, err = url.Parse(fmt.Sprintf("%s?nsp_ctx=%v", p.PushUrl, fmt.Sprintf("{\"ver\":%s, \"appId\":%s}", in.Ver, p.AppId))); err != nil {
94 return nil, err
95 }
96 if res, err = http.Post(fmt.Sprintf("%s?%s", p.PushUrl, urlPath.Query().Encode()), "application/x-www-form-urlencoded", strings.NewReader(bodyStr)); err != nil {
97 return nil, err
98 }
99 defer res.Body.Close()
100 if resPushByte, err = ioutil.ReadAll(res.Body); err != nil {
101 return nil, err
102 }
103 if err = json.Unmarshal(resPushByte, &resPush); err != nil {
104 fmt.Println("Push :", string(resPushByte))
105 return nil, err
106 }
107 return resPush, nil
108}

Callers 1

TestHuaweiPush_GetTokenFunction · 0.95

Calls 5

GetTokenMethod · 0.95
UnmarshalMethod · 0.80
GetMethod · 0.65
AddMethod · 0.65
CloseMethod · 0.65

Tested by 1

TestHuaweiPush_GetTokenFunction · 0.76