func()

in sdk/client.go [344:366]


func (client *Client) DoAction(request requests.AcsRequest, response responses.AcsResponse) (err error) {
	if (client.SecureTransport == "false" || client.SecureTransport == "true") && client.SourceIp != "" {
		t := reflect.TypeOf(request).Elem()
		v := reflect.ValueOf(request).Elem()
		for i := 0; i < t.NumField(); i++ {
			value := v.FieldByName(t.Field(i).Name)
			if t.Field(i).Name == "requests.RoaRequest" || t.Field(i).Name == "RoaRequest" {
				request.GetHeaders()["x-acs-proxy-source-ip"] = client.SourceIp
				request.GetHeaders()["x-acs-proxy-secure-transport"] = client.SecureTransport
				return client.DoActionWithSigner(request, response, nil)
			} else if t.Field(i).Name == "PathPattern" && !value.IsZero() {
				request.GetHeaders()["x-acs-proxy-source-ip"] = client.SourceIp
				request.GetHeaders()["x-acs-proxy-secure-transport"] = client.SecureTransport
				return client.DoActionWithSigner(request, response, nil)
			} else if i == t.NumField()-1 {
				request.GetQueryParams()["SourceIp"] = client.SourceIp
				request.GetQueryParams()["SecureTransport"] = client.SecureTransport
				return client.DoActionWithSigner(request, response, nil)
			}
		}
	}
	return client.DoActionWithSigner(request, response, nil)
}