diff --git a/sdk/client.go b/sdk/client.go index 03fc2c7..753ca3e 100644 --- a/sdk/client.go +++ b/sdk/client.go @@ -46,6 +46,22 @@ type Client struct { httpProxy string httpsProxy string noProxy string + + header *requests.RefererHeader +} + +func (c *Client) SetRefererHeader(header *requests.RefererHeader) { + c.header = header +} + +func (c *Client) GetRefererHeader() map[string]string { + if c.header == nil { + return nil + } + return map[string]string{ + "Referer": c.header.Referer, + "Traceparent": c.header.TraceId, + } } func (client *Client) GetNoProxy() string { diff --git a/sdk/requests/request.go b/sdk/requests/request.go index 6de610a..fda6c52 100644 --- a/sdk/requests/request.go +++ b/sdk/requests/request.go @@ -56,6 +56,11 @@ type Host struct { Func func(string) string } +type RefererHeader struct { + Referer string + TraceId string +} + var debug utils.Debug func init() { @@ -95,6 +100,7 @@ type AcsRequest interface { GetBodyReader() io.Reader AddHeaderParam(key, value string) + AddHeaders(headers map[string]string) addQueryParam(key, value string) addFormParam(key, value string) addJsonParam(string, any) @@ -226,6 +232,12 @@ func (request *baseRequest) AddHeaderParam(key, val string) { request.Headers[key] = val } +func (request *baseRequest) AddHeaders(headers map[string]string) { + for key, val := range headers { + request.Headers[key] = val + } +} + func (request *baseRequest) addQueryParam(key, val string) { request.QueryParams[key] = val } diff --git a/services/msdk/client.go b/services/msdk/client.go index 08cfbfd..3509a8a 100644 --- a/services/msdk/client.go +++ b/services/msdk/client.go @@ -16,8 +16,10 @@ type Client struct { sdk.Client } -func NewClient() (client *Client, err error) { +func NewClient(header ...*requests.RefererHeader) (client *Client, err error) { + header = append(header, nil) client = &Client{} + client.SetRefererHeader(header[0]) err = client.Init() return } @@ -30,6 +32,7 @@ func (c *Client) GetIdfa(req *GetIdfaReq) (resp *GetIdfaResp, err error) { if req.Imei == "" && req.Idfa != "" { req.Imei = req.Idfa } + req.AddHeaders(c.GetRefererHeader()) err = c.DoAction(req, resp) return } @@ -39,6 +42,7 @@ func (c *Client) GetUserAttr(req *GetUserAttrReq) (resp *GetUserAttrResp, err er resp = &GetUserAttrResp{ BaseResponse: &responses.BaseResponse{}, } + req.AddHeaders(c.GetRefererHeader()) err = c.DoAction(req, resp) return } @@ -48,6 +52,7 @@ func (c *Client) GetImei(req *GetImeiReq) (resp *GetImeiResp, err error) { resp = &GetImeiResp{ BaseResponse: &responses.BaseResponse{}, } + req.AddHeaders(c.GetRefererHeader()) err = c.DoAction(req, resp) return } @@ -56,6 +61,7 @@ func (c *Client) SetImei(req *SetImeiReq) (resp *SetImeiResp, err error) { resp = &SetImeiResp{ BaseResponse: &responses.BaseResponse{}, } + req.AddHeaders(c.GetRefererHeader()) err = c.DoAction(req, resp) return }