Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion alibabacloud-gateway-pop/Teafile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
"SignatureUtil": "darabonba:SignatureUtil:*",
"String": "darabonba:String:*",
"Map": "darabonba:Map:*",
"Array": "darabonba:Array:*"
"Array": "darabonba:Array:*",
"XML": "darabonba:XML:*"
},
"releases": {
"ts": "@alicloud/gateway-pop:^0.0.9",
Expand Down
47 changes: 42 additions & 5 deletions alibabacloud-gateway-pop/csharp/core/Client.cs
Original file line number Diff line number Diff line change
Expand Up @@ -298,8 +298,18 @@ public void ModifyResponse(AlibabaCloud.GatewaySpi.Models.InterceptorContext con
AlibabaCloud.GatewaySpi.Models.InterceptorContext.InterceptorContextResponse response = context.Response;
if (AlibabaCloud.TeaUtil.Common.Is4xx(response.StatusCode) || AlibabaCloud.TeaUtil.Common.Is5xx(response.StatusCode))
{
object _res = AlibabaCloud.TeaUtil.Common.ReadAsJSON(response.Body);
Dictionary<string, object> err = AlibabaCloud.TeaUtil.Common.AssertAsMap(_res);
Dictionary<string, object> err = new Dictionary<string, object>(){};
if (!AlibabaCloud.TeaUtil.Common.IsUnset(response.Headers.Get("content-type")) && AlibabaCloud.DarabonbaString.StringUtil.Contains(response.Headers.Get("content-type"), "text/xml"))
{
string _str = AlibabaCloud.TeaUtil.Common.ReadAsString(response.Body);
Dictionary<string, object> respMap = AlibabaCloud.TeaXML.Client.ParseXml(_str, null);
err = AlibabaCloud.TeaUtil.Common.AssertAsMap(respMap.Get("Error"));
}
else
{
object _res = AlibabaCloud.TeaUtil.Common.ReadAsJSON(response.Body);
err = AlibabaCloud.TeaUtil.Common.AssertAsMap(_res);
}
object requestId = DefaultAny(err.Get("RequestId"), err.Get("requestId"));
if (!AlibabaCloud.TeaUtil.Common.IsUnset(response.Headers.Get("x-acs-request-id")))
{
Expand Down Expand Up @@ -356,8 +366,18 @@ public async Task ModifyResponseAsync(AlibabaCloud.GatewaySpi.Models.Interceptor
AlibabaCloud.GatewaySpi.Models.InterceptorContext.InterceptorContextResponse response = context.Response;
if (AlibabaCloud.TeaUtil.Common.Is4xx(response.StatusCode) || AlibabaCloud.TeaUtil.Common.Is5xx(response.StatusCode))
{
object _res = AlibabaCloud.TeaUtil.Common.ReadAsJSON(response.Body);
Dictionary<string, object> err = AlibabaCloud.TeaUtil.Common.AssertAsMap(_res);
Dictionary<string, object> err = new Dictionary<string, object>(){};
if (!AlibabaCloud.TeaUtil.Common.IsUnset(response.Headers.Get("content-type")) && AlibabaCloud.DarabonbaString.StringUtil.Contains(response.Headers.Get("content-type"), "text/xml"))
{
string _str = AlibabaCloud.TeaUtil.Common.ReadAsString(response.Body);
Dictionary<string, object> respMap = AlibabaCloud.TeaXML.Client.ParseXml(_str, null);
err = AlibabaCloud.TeaUtil.Common.AssertAsMap(respMap.Get("Error"));
}
else
{
object _res = AlibabaCloud.TeaUtil.Common.ReadAsJSON(response.Body);
err = AlibabaCloud.TeaUtil.Common.AssertAsMap(_res);
}
object requestId = DefaultAny(err.Get("RequestId"), err.Get("requestId"));
if (!AlibabaCloud.TeaUtil.Common.IsUnset(response.Headers.Get("x-acs-request-id")))
{
Expand Down Expand Up @@ -552,11 +572,28 @@ public string BuildCanonicalizedResource(Dictionary<string, string> query)

public string BuildCanonicalizedHeaders(Dictionary<string, string> headers)
{
// lower header key
List<string> headersArray = AlibabaCloud.DarabonbaMap.MapUtil.KeySet(headers);
Dictionary<string, string> newHeaders = new Dictionary<string, string>(){};
string tmp = "";

foreach (var key in headersArray) {
string lowerKey = AlibabaCloud.DarabonbaString.StringUtil.ToLower(key);
if (!AlibabaCloud.DarabonbaString.StringUtil.Contains(tmp, lowerKey))
{
tmp = "" + tmp + "," + lowerKey;
newHeaders[lowerKey] = AlibabaCloud.DarabonbaString.StringUtil.Trim(headers.Get(key));
}
else
{
newHeaders[lowerKey] = "" + newHeaders.Get(lowerKey) + "," + AlibabaCloud.DarabonbaString.StringUtil.Trim(headers.Get(key));
}
}
string canonicalizedHeaders = "";
List<string> sortedHeaders = GetSignedHeaders(headers);

foreach (var header in sortedHeaders) {
canonicalizedHeaders = "" + canonicalizedHeaders + header + ":" + AlibabaCloud.DarabonbaString.StringUtil.Trim(headers.Get(header)) + "\n";
canonicalizedHeaders = "" + canonicalizedHeaders + header + ":" + newHeaders.Get(header) + "\n";
}
return canonicalizedHeaders;
}
Expand Down
1 change: 1 addition & 0 deletions alibabacloud-gateway-pop/csharp/core/client.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,6 @@
<PackageReference Include="AlibabaCloud.DarabonbaMap" Version="0.0.2"/>
<PackageReference Include="AlibabaCloud.DarabonbaArray" Version="0.1.0"/>
<PackageReference Include="Tea" Version="1.1.3"/>
<PackageReference Include="AlibabaCloud.TeaXML" Version="0.0.5"/>
</ItemGroup>
</Project>
47 changes: 39 additions & 8 deletions alibabacloud-gateway-pop/golang/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
endpointutil "github.com/alibabacloud-go/endpoint-util/service"
openapiutil "github.com/alibabacloud-go/openapi-util/service"
util "github.com/alibabacloud-go/tea-utils/v2/service"
xml "github.com/alibabacloud-go/tea-xml/service"
"github.com/alibabacloud-go/tea/tea"
)

Expand Down Expand Up @@ -181,14 +182,30 @@ func (client *Client) ModifyResponse(context *spi.InterceptorContext, attributeM
request := context.Request
response := context.Response
if tea.BoolValue(util.Is4xx(response.StatusCode)) || tea.BoolValue(util.Is5xx(response.StatusCode)) {
_res, _err := util.ReadAsJSON(response.Body)
if _err != nil {
return _err
}
err := map[string]interface{}{}
if !tea.BoolValue(util.IsUnset(response.Headers["content-type"])) && tea.BoolValue(string_.Contains(response.Headers["content-type"], tea.String("text/xml"))) {
_str, _err := util.ReadAsString(response.Body)
if _err != nil {
return _err
}

respMap := xml.ParseXml(_str, nil)
err, _err = util.AssertAsMap(respMap["Error"])
if _err != nil {
return _err
}

} else {
_res, _err := util.ReadAsJSON(response.Body)
if _err != nil {
return _err
}

err, _err = util.AssertAsMap(_res)
if _err != nil {
return _err
}

err, _err := util.AssertAsMap(_res)
if _err != nil {
return _err
}

requestId := client.DefaultAny(err["RequestId"], err["requestId"])
Expand Down Expand Up @@ -400,10 +417,24 @@ func (client *Client) BuildCanonicalizedResource(query map[string]*string) (_res
}

func (client *Client) BuildCanonicalizedHeaders(headers map[string]*string) (_result *string) {
// lower header key
headersArray := map_.KeySet(headers)
newHeaders := make(map[string]*string)
tmp := tea.String("")
for _, key := range headersArray {
lowerKey := string_.ToLower(key)
if !tea.BoolValue(string_.Contains(tmp, lowerKey)) {
tmp = tea.String(tea.StringValue(tmp) + "," + tea.StringValue(lowerKey))
newHeaders[tea.StringValue(lowerKey)] = string_.Trim(headers[tea.StringValue(key)])
} else {
newHeaders[tea.StringValue(lowerKey)] = tea.String(tea.StringValue(newHeaders[tea.StringValue(lowerKey)]) + "," + tea.StringValue(string_.Trim(headers[tea.StringValue(key)])))
}

}
canonicalizedHeaders := tea.String("")
sortedHeaders := client.GetSignedHeaders(headers)
for _, header := range sortedHeaders {
canonicalizedHeaders = tea.String(tea.StringValue(canonicalizedHeaders) + tea.StringValue(header) + ":" + tea.StringValue(string_.Trim(headers[tea.StringValue(header)])) + "\n")
canonicalizedHeaders = tea.String(tea.StringValue(canonicalizedHeaders) + tea.StringValue(header) + ":" + tea.StringValue(newHeaders[tea.StringValue(header)]) + "\n")
}
_result = canonicalizedHeaders
return _result
Expand Down
4 changes: 3 additions & 1 deletion alibabacloud-gateway-pop/golang/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ require (
github.com/alibabacloud-go/openapi-util v0.1.1
github.com/alibabacloud-go/tea v1.2.2
github.com/alibabacloud-go/tea-utils/v2 v2.0.6
github.com/aliyun/credentials-go v1.4.5 // indirect
github.com/alibabacloud-go/tea-xml v1.1.3
github.com/aliyun/credentials-go v1.4.5
github.com/clbanning/mxj/v2 v2.7.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
golang.org/x/net v0.23.0 // indirect
Expand Down
5 changes: 5 additions & 0 deletions alibabacloud-gateway-pop/golang/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,18 @@ github.com/alibabacloud-go/tea-utils/v2 v2.0.5 h1:EUakYEUAwr6L3wLT0vejIw2rc0IA1R
github.com/alibabacloud-go/tea-utils/v2 v2.0.5/go.mod h1:dL6vbUT35E4F4bFTHL845eUloqaerYBYPsdWR2/jhe4=
github.com/alibabacloud-go/tea-utils/v2 v2.0.6 h1:ZkmUlhlQbaDC+Eba/GARMPy6hKdCLiSke5RsN5LcyQ0=
github.com/alibabacloud-go/tea-utils/v2 v2.0.6/go.mod h1:qxn986l+q33J5VkialKMqT/TTs3E+U9MJpd001iWQ9I=
github.com/alibabacloud-go/tea-xml v1.1.3 h1:7LYnm+JbOq2B+T/B0fHC4Ies4/FofC4zHzYtqw7dgt0=
github.com/alibabacloud-go/tea-xml v1.1.3/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCEtyBy9+DPF6GgEu8=
github.com/aliyun/credentials-go v1.1.2/go.mod h1:ozcZaMR5kLM7pwtCMEpVmQ242suV6qTJya2bDq4X1Tw=
github.com/aliyun/credentials-go v1.3.1 h1:uq/0v7kWrxmoLGpqjx7vtQ/s03f0zR//0br/xWDTE28=
github.com/aliyun/credentials-go v1.3.1/go.mod h1:8jKYhQuDawt8x2+fusqa1Y6mPxemTsBEN04dgcAcYz0=
github.com/aliyun/credentials-go v1.3.6/go.mod h1:1LxUuX7L5YrZUWzBrRyk0SwSdH4OmPrib8NVePL3fxM=
github.com/aliyun/credentials-go v1.4.5 h1:O76WYKgdy1oQYYiJkERjlA2dxGuvLRrzuO2ScrtGWSk=
github.com/aliyun/credentials-go v1.4.5/go.mod h1:Jm6d+xIgwJVLVWT561vy67ZRP4lPTQxMbEYRuT2Ti1U=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I=
github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME=
github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
Expand Down
9 changes: 7 additions & 2 deletions alibabacloud-gateway-pop/java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@
</distributionManagement>
<scm>
<connection>scm:git:git://github.com/aliyun/alibabacloud-gateway.git</connection>
<developerConnection>scm:git:git@github.com:aliyun/alibabacloud-gateway.git</developerConnection>
<url>https://github.com/aliyun/alibabacloud-gateway</url>
<developerConnection>scm:git:git@github.com:aliyun/alibabacloud-gateway.git</developerConnection>
<url>https://github.com/aliyun/alibabacloud-gateway</url>
</scm>
<dependencies>
<dependency>
Expand Down Expand Up @@ -108,6 +108,11 @@
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>tea-xml</artifactId>
<version>0.1.6</version>
</dependency>
</dependencies>
<build>
<plugins>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,16 @@ public void modifyResponse(com.aliyun.gateway.spi.models.InterceptorContext cont
com.aliyun.gateway.spi.models.InterceptorContext.InterceptorContextRequest request = context.request;
com.aliyun.gateway.spi.models.InterceptorContext.InterceptorContextResponse response = context.response;
if (com.aliyun.teautil.Common.is4xx(response.statusCode) || com.aliyun.teautil.Common.is5xx(response.statusCode)) {
Object _res = com.aliyun.teautil.Common.readAsJSON(response.body);
java.util.Map<String, Object> err = com.aliyun.teautil.Common.assertAsMap(_res);
java.util.Map<String, Object> err = new java.util.HashMap<>();
if (!com.aliyun.teautil.Common.isUnset(response.headers.get("content-type")) && com.aliyun.darabonbastring.Client.contains(response.headers.get("content-type"), "text/xml")) {
String _str = com.aliyun.teautil.Common.readAsString(response.body);
java.util.Map<String, Object> respMap = com.aliyun.teaxml.Client.parseXml(_str, null);
err = com.aliyun.teautil.Common.assertAsMap(respMap.get("Error"));
} else {
Object _res = com.aliyun.teautil.Common.readAsJSON(response.body);
err = com.aliyun.teautil.Common.assertAsMap(_res);
}

Object requestId = this.defaultAny(err.get("RequestId"), err.get("requestId"));
if (!com.aliyun.teautil.Common.isUnset(response.headers.get("x-acs-request-id"))) {
requestId = response.headers.get("x-acs-request-id");
Expand Down Expand Up @@ -304,10 +312,24 @@ public String buildCanonicalizedResource(java.util.Map<String, String> query) th
}

public String buildCanonicalizedHeaders(java.util.Map<String, String> headers) throws Exception {
// lower header key
java.util.List<String> headersArray = com.aliyun.darabonba.map.Client.keySet(headers);
java.util.Map<String, String> newHeaders = new java.util.HashMap<>();
String tmp = "";
for (String key : headersArray) {
String lowerKey = com.aliyun.darabonbastring.Client.toLower(key);
if (!com.aliyun.darabonbastring.Client.contains(tmp, lowerKey)) {
tmp = "" + tmp + "," + lowerKey + "";
newHeaders.put(lowerKey, com.aliyun.darabonbastring.Client.trim(headers.get(key)));
} else {
newHeaders.put(lowerKey, "" + newHeaders.get(lowerKey) + "," + com.aliyun.darabonbastring.Client.trim(headers.get(key)) + "");
}

}
String canonicalizedHeaders = "";
java.util.List<String> sortedHeaders = this.getSignedHeaders(headers);
for (String header : sortedHeaders) {
canonicalizedHeaders = "" + canonicalizedHeaders + "" + header + ":" + com.aliyun.darabonbastring.Client.trim(headers.get(header)) + "\n";
canonicalizedHeaders = "" + canonicalizedHeaders + "" + header + ":" + newHeaders.get(header) + "\n";
}
return canonicalizedHeaders;
}
Expand Down
28 changes: 25 additions & 3 deletions alibabacloud-gateway-pop/main.tea
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import SignatureUtil;
import String;
import Map;
import Array;
import XML;

extends SPI;

Expand Down Expand Up @@ -140,8 +141,15 @@ async function modifyResponse(context: SPI.InterceptorContext, attributeMap: SPI
var request = context.request;
var response = context.response;
if (Util.is4xx(response.statusCode) || Util.is5xx(response.statusCode)) {
var _res = Util.readAsJSON(response.body);
var err = Util.assertAsMap(_res);
var err : map[string]any = {};
if (!Util.isUnset(response.headers.content-type) && String.contains(response.headers.content-type, 'text/xml')) {
var _str = Util.readAsString(response.body);
var respMap = XML.parseXml(_str, null);
err = Util.assertAsMap(respMap.Error);
} else {
var _res = Util.readAsJSON(response.body);
err = Util.assertAsMap(_res);
}
var requestId = defaultAny(err.RequestId, err.requestId);
if (!Util.isUnset(response.headers.x-acs-request-id)) {
requestId = response.headers.x-acs-request-id;
Expand Down Expand Up @@ -289,10 +297,24 @@ function buildCanonicalizedResource(query: map[string]string): string {
}

function buildCanonicalizedHeaders(headers: map[string]string): string {
// lower header key
var headersArray : [string] = Map.keySet(headers);
var newHeaders : map[string]string = {};
var tmp : string = '';
for(var key : headersArray) {
var lowerKey = String.toLower(key);
if (!String.contains(tmp, lowerKey)) {
tmp = `${tmp},${lowerKey}`;
newHeaders[lowerKey] = String.trim(headers[key]);
} else {
newHeaders[lowerKey] = `${newHeaders[lowerKey]},${String.trim(headers[key])}`;
}
}

var canonicalizedHeaders : string = '';
var sortedHeaders : [string] = getSignedHeaders(headers);
for(var header : sortedHeaders) {
canonicalizedHeaders = `${canonicalizedHeaders}${header}:${String.trim(headers[header])}\n`;
canonicalizedHeaders = `${canonicalizedHeaders}${header}:${newHeaders[header]}\n`;
}
return canonicalizedHeaders;
}
Expand Down
3 changes: 2 additions & 1 deletion alibabacloud-gateway-pop/php/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
"alibabacloud/darabonba-signature-util": "^0.0.4",
"alibabacloud/darabonba-string": "^0.1.16",
"alibabacloud/darabonba-map": "^0.0.1",
"alibabacloud/darabonba-array": "^0.1.0"
"alibabacloud/darabonba-array": "^0.1.0",
"alibabacloud/tea-xml": "^0.2"
},
"autoload": {
"psr-4": {
Expand Down
29 changes: 25 additions & 4 deletions alibabacloud-gateway-pop/php/src/Client.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use AlibabaCloud\Tea\Tea;
use AlibabaCloud\Darabonba\EncodeUtil\EncodeUtil;
use AlibabaCloud\Darabonba\String\StringUtil;
use AlibabaCloud\Tea\XML\XML;
use AlibabaCloud\Endpoint\Endpoint;
use AlibabaCloud\Darabonba\ArrayUtil\ArrayUtil;
use AlibabaCloud\Darabonba\SignatureUtil\SignatureUtil;
Expand Down Expand Up @@ -130,7 +131,7 @@ public function modifyRequest($context, $attributeMap)
}
$authType = $credentialModel->type;
if (Utils::equalString($authType, "bearer")) {
$bearerToken = $credential->getBearerToken();
$bearerToken = $credentialModel->bearerToken;
$request->headers["x-acs-bearer-token"] = $bearerToken;
$request->headers["x-acs-signature-type"] = "BEARERTOKEN";
$request->headers["Authorization"] = "Bearer " . $bearerToken . "";
Expand Down Expand Up @@ -165,8 +166,15 @@ public function modifyResponse($context, $attributeMap)
$request = $context->request;
$response = $context->response;
if (Utils::is4xx($response->statusCode) || Utils::is5xx($response->statusCode)) {
$_res = Utils::readAsJSON($response->body);
$err = Utils::assertAsMap($_res);
$err = [];
if (!Utils::isUnset(@$response->headers["content-type"]) && StringUtil::contains(@$response->headers["content-type"], "text/xml")) {
$_str = Utils::readAsString($response->body);
$respMap = XML::parseXml($_str, null);
$err = Utils::assertAsMap(@$respMap["Error"]);
} else {
$_res = Utils::readAsJSON($response->body);
$err = Utils::assertAsMap($_res);
}
$requestId = $this->defaultAny(@$err["RequestId"], @$err["requestId"]);
if (!Utils::isUnset(@$response->headers["x-acs-request-id"])) {
$requestId = @$response->headers["x-acs-request-id"];
Expand Down Expand Up @@ -382,10 +390,23 @@ public function buildCanonicalizedResource($query)
*/
public function buildCanonicalizedHeaders($headers)
{
// lower header key
$headersArray = MapUtil::keySet($headers);
$newHeaders = [];
$tmp = "";
foreach ($headersArray as $key) {
$lowerKey = StringUtil::toLower($key);
if (!StringUtil::contains($tmp, $lowerKey)) {
$tmp = "" . $tmp . "," . $lowerKey . "";
$newHeaders[$lowerKey] = StringUtil::trim(@$headers[$key]);
} else {
$newHeaders[$lowerKey] = "" . @$newHeaders[$lowerKey] . "," . StringUtil::trim(@$headers[$key]) . "";
}
}
$canonicalizedHeaders = "";
$sortedHeaders = $this->getSignedHeaders($headers);
foreach ($sortedHeaders as $header) {
$canonicalizedHeaders = "" . $canonicalizedHeaders . "" . $header . ":" . StringUtil::trim(@$headers[$header]) . "\n";
$canonicalizedHeaders = "" . $canonicalizedHeaders . "" . $header . ":" . @$newHeaders[$header] . "\n";
}
return $canonicalizedHeaders;
}
Expand Down
Loading
Loading