func()

in alibabacloud-gateway-sls/golang/client/client.go [260:339]


func (client *Client) ModifyResponse(context *spi.InterceptorContext, attributeMap *spi.AttributeMap) (_err error) {
	request := context.Request
	response := context.Response
	if tea.BoolValue(util.Is4xx(response.StatusCode)) || tea.BoolValue(util.Is5xx(response.StatusCode)) {
		error, _err := util.ReadAsJSON(response.Body)
		if _err != nil {
			return _err
		}

		resMap, _err := util.AssertAsMap(error)
		if _err != nil {
			return _err
		}

		_err = tea.NewSDKError(map[string]interface{}{
			"code":               resMap["errorCode"],
			"message":            resMap["errorMessage"],
			"accessDeniedDetail": resMap["accessDeniedDetail"],
			"data": map[string]interface{}{
				"httpCode":   tea.IntValue(response.StatusCode),
				"requestId":  tea.StringValue(response.Headers["x-log-requestid"]),
				"statusCode": tea.IntValue(response.StatusCode),
			},
		})
		return _err
	}

	if !tea.BoolValue(util.IsUnset(response.Body)) {
		bodyrawSize := response.Headers["x-log-bodyrawsize"]
		compressType := response.Headers["x-log-compresstype"]
		uncompressedData := response.Body
		if !tea.BoolValue(util.IsUnset(bodyrawSize)) && !tea.BoolValue(util.IsUnset(compressType)) {
			uncompressedData, _err = sls_util.ReadAndUncompressBlock(response.Body, compressType, bodyrawSize)
			if _err != nil {
				return _err
			}

		}

		if tea.BoolValue(util.EqualString(request.BodyType, tea.String("binary"))) {
			response.DeserializedBody = uncompressedData
		} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("byte"))) {
			byt, _err := util.ReadAsBytes(uncompressedData)
			if _err != nil {
				return _err
			}

			response.DeserializedBody = byt
		} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("string"))) {
			response.DeserializedBody, _err = util.ReadAsString(uncompressedData)
			if _err != nil {
				return _err
			}

		} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("json"))) {
			obj, _err := util.ReadAsJSON(uncompressedData)
			if _err != nil {
				return _err
			}

			// var res = Util.assertAsMap(obj);
			response.DeserializedBody = obj
		} else if tea.BoolValue(util.EqualString(request.BodyType, tea.String("array"))) {
			response.DeserializedBody, _err = util.ReadAsJSON(uncompressedData)
			if _err != nil {
				return _err
			}

		} else {
			response.DeserializedBody, _err = util.ReadAsString(uncompressedData)
			if _err != nil {
				return _err
			}

		}

	}

	return _err
}