本文整理汇总了Golang中github.com/gogap/spirit.Payload.Context方法的典型用法代码示例。如果您正苦于以下问题:Golang Payload.Context方法的具体用法?Golang Payload.Context怎么用?Golang Payload.Context使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/gogap/spirit.Payload
的用法示例。
在下文中一共展示了Payload.Context方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Call
func (p *HTTPAPIClient) Call(apiName string, payload spirit.Payload, v interface{}) (err error) {
apiName = strings.TrimSpace(apiName)
if apiName == "" {
err = ErrAPINameIsEmpty.New()
return
}
var payloadData interface{}
if payloadData, err = payload.GetData(); err != nil {
return
}
jsonPayload := JsonPayload{
Id: payload.Id(),
Data: payloadData,
Errors: payload.Errors(),
Context: payload.Context(),
}
var data []byte
if data, err = json.Marshal(jsonPayload); err != nil {
return
}
postBodyReader := bytes.NewReader(data)
var req *http.Request
if req, err = http.NewRequest("POST", p.url, postBodyReader); err != nil {
err = ErrAPIClientCreateNewRequestFailed.New().Append(err)
return
}
req.Header.Add(p.apiHeaderName, apiName)
req.Header.Add(HeaderForwardedPayload, "on")
var resp *http.Response
if resp, err = p.client.Do(req); err != nil {
err = ErrAPIClientSendFailed.New(errors.Params{"api": apiName, "url": p.url})
return
}
var body []byte
if resp != nil {
defer resp.Body.Close()
if bBody, e := ioutil.ReadAll(resp.Body); e != nil {
err = ErrAPIClientReadResponseBodyFailed.New(errors.Params{"api": apiName}).Append(e)
return
} else if resp.StatusCode != http.StatusOK {
err = ErrAPIClientBadStatusCode.New(errors.Params{"api": apiName, "code": resp.StatusCode})
return
} else {
body = bBody
}
if v == nil {
return
}
}
if v == nil {
return
}
var tmpResp struct {
Code uint64 `json:"code"`
ErrorId string `json:"error_id,omitempty"`
ErrorNamespace string `json:"error_namespace,omitempty"`
Message string `json:"message"`
Result interface{} `json:"result"`
}
tmpResp.Result = v
if e := json.Unmarshal(body, &tmpResp); e != nil {
err = ErrAPIClientResponseUnmarshalFailed.New(errors.Params{"api": apiName, "url": p.url}).Append(e)
return
}
if tmpResp.Code == 0 {
return
} else {
err = errors.NewErrorCode(tmpResp.ErrorId, tmpResp.Code, tmpResp.ErrorNamespace, tmpResp.Message, "", nil)
return
}
return
}