Browse Source

Merge pull request #37 from aliyun/test

Publish 0.9.1
gaort 7 years ago
parent
commit
604d0ac0d2
100 changed files with 636 additions and 220 deletions
  1. 8 0
      ChangeLog.txt
  2. 3 3
      integration/ecs_test.go
  3. 4 4
      integration/rds_test.go
  4. 2 2
      integration/slb_test.go
  5. 1 1
      integration/utils.go
  6. 1 1
      sdk/auth/roa_signature_composer.go
  7. 4 0
      sdk/auth/rpc_signature_composer.go
  8. 1 1
      sdk/auth/signers/algorithms.go
  9. 56 21
      sdk/client.go
  10. 3 1
      sdk/requests/acs_reqeust.go
  11. 16 4
      sdk/requests/common_request.go
  12. 7 4
      sdk/requests/roa_request.go
  13. 9 4
      sdk/requests/rpc_request.go
  14. 6 2
      services/alidns/add_batch_domain_records.go
  15. 6 2
      services/alidns/add_domain.go
  16. 6 2
      services/alidns/add_domain_group.go
  17. 6 2
      services/alidns/add_domain_record.go
  18. 6 2
      services/alidns/apply_for_retrieval_domain_name.go
  19. 6 2
      services/alidns/change_domain_group.go
  20. 6 2
      services/alidns/change_domain_of_dns_product.go
  21. 6 2
      services/alidns/check_domain_record.go
  22. 6 2
      services/alidns/delete_batch_domain_records.go
  23. 6 2
      services/alidns/delete_batch_domains.go
  24. 6 2
      services/alidns/delete_domain.go
  25. 6 2
      services/alidns/delete_domain_group.go
  26. 6 2
      services/alidns/delete_domain_record.go
  27. 6 2
      services/alidns/delete_sub_domain_records.go
  28. 6 2
      services/alidns/describe_batch_result.go
  29. 6 2
      services/alidns/describe_dns_product_instance.go
  30. 6 2
      services/alidns/describe_dns_product_instances.go
  31. 6 2
      services/alidns/describe_dnsslb_sub_domains.go
  32. 6 2
      services/alidns/describe_domain_groups.go
  33. 6 2
      services/alidns/describe_domain_info.go
  34. 6 2
      services/alidns/describe_domain_logs.go
  35. 6 2
      services/alidns/describe_domain_ns.go
  36. 6 2
      services/alidns/describe_domain_record_info.go
  37. 6 2
      services/alidns/describe_domain_records.go
  38. 6 2
      services/alidns/describe_domain_whois_info.go
  39. 6 2
      services/alidns/describe_domains.go
  40. 6 2
      services/alidns/describe_record_logs.go
  41. 6 2
      services/alidns/describe_sub_domain_records.go
  42. 6 2
      services/alidns/describe_support_lines.go
  43. 6 2
      services/alidns/get_main_domain_name.go
  44. 6 2
      services/alidns/modify_hichina_domain_dns.go
  45. 6 2
      services/alidns/retrieval_domain_name.go
  46. 6 2
      services/alidns/set_dnsslb_status.go
  47. 6 2
      services/alidns/set_domain_record_status.go
  48. 6 2
      services/alidns/update_batch_domain_records.go
  49. 6 2
      services/alidns/update_dnsslb_weight.go
  50. 6 2
      services/alidns/update_domain_group.go
  51. 6 2
      services/alidns/update_domain_record.go
  52. 5 2
      services/arms/arms_query_data_set.go
  53. 6 2
      services/arms/where_in_dim_query.go
  54. 6 2
      services/arms4finance/arms_query_data_set.go
  55. 6 2
      services/arms4finance/where_in_dim_query.go
  56. 6 2
      services/ccc/add_phone_number.go
  57. 6 2
      services/ccc/assign_users.go
  58. 6 2
      services/ccc/create_skill_group.go
  59. 6 2
      services/ccc/create_user.go
  60. 6 2
      services/ccc/delete_skill_group.go
  61. 6 2
      services/ccc/download_recording.go
  62. 6 2
      services/ccc/get_config.go
  63. 6 2
      services/ccc/get_service_extensions.go
  64. 6 2
      services/ccc/get_user.go
  65. 6 2
      services/ccc/list_call_detail_records.go
  66. 6 2
      services/ccc/list_contact_flows.go
  67. 6 2
      services/ccc/list_phone_numbers.go
  68. 6 2
      services/ccc/list_recordings.go
  69. 6 2
      services/ccc/list_roles.go
  70. 6 2
      services/ccc/list_skill_groups.go
  71. 6 2
      services/ccc/list_skill_groups_of_user.go
  72. 6 2
      services/ccc/list_users.go
  73. 6 2
      services/ccc/list_users_of_skill_group.go
  74. 6 2
      services/ccc/modify_phone_number.go
  75. 6 2
      services/ccc/modify_skill_group.go
  76. 6 2
      services/ccc/modify_user.go
  77. 6 2
      services/ccc/refresh_token.go
  78. 6 2
      services/ccc/remove_phone_number.go
  79. 6 2
      services/ccc/remove_users.go
  80. 6 2
      services/ccc/request_login_info.go
  81. 6 2
      services/cdn/add_cdn_domain.go
  82. 6 2
      services/cdn/add_live_app_record_config.go
  83. 6 2
      services/cdn/add_live_app_snapshot_config.go
  84. 6 2
      services/cdn/add_live_domain_mapping.go
  85. 6 2
      services/cdn/add_live_pull_stream_info.go
  86. 6 2
      services/cdn/add_live_stream_transcode.go
  87. 6 2
      services/cdn/batch_describe_domain_bps_data.go
  88. 6 2
      services/cdn/clear_user_black_list.go
  89. 6 2
      services/cdn/clear_user_domain_black_list.go
  90. 6 2
      services/cdn/create_live_stream_record_index_files.go
  91. 6 2
      services/cdn/delete_cdn_domain.go
  92. 6 2
      services/cdn/delete_http_header_config.go
  93. 6 2
      services/cdn/delete_live_app_record_config.go
  94. 6 2
      services/cdn/delete_live_app_snapshot_config.go
  95. 6 2
      services/cdn/delete_live_domain_mapping.go
  96. 6 2
      services/cdn/delete_live_pull_stream_info.go
  97. 6 2
      services/cdn/delete_live_stream_transcode.go
  98. 6 2
      services/cdn/describe_cdn_domain_base_detail.go
  99. 6 2
      services/cdn/describe_cdn_domain_detail.go
  100. 6 2
      services/cdn/describe_cdn_domain_logs.go

+ 8 - 0
ChangeLog.txt

@@ -1,3 +1,9 @@
+2018-01-24 Version: 0.9.1
+1. improve: asyncWithChan avoid panic of "write on closed channel"
+2. improve: asyncWithChan support select case usage
+3. bug fix: repeated signature nonce while retry
+4. bug fix: calling request.GetUrl() ahead of client.DoAction() will cause problems
+
 2018-01-24 Version: 0.9.0
 2018-01-24 Version: 0.9.0
 1, Publish domain config interface, allow users to create or delete a domain protect config under DDoS Pro.
 1, Publish domain config interface, allow users to create or delete a domain protect config under DDoS Pro.
 2, Publish domain config query interface, allow users to query a list of domain config or a single domain config.
 2, Publish domain config query interface, allow users to query a list of domain config or a single domain config.
@@ -9,10 +15,12 @@
 8, Publish domain qps graph query interface.
 8, Publish domain qps graph query interface.
 9, Publish ip attack events and traffic graph query interface.
 9, Publish ip attack events and traffic graph query interface.
 
 
+
 2018-01-23 Version: 0.8.3
 2018-01-23 Version: 0.8.3
 1, Tesla Dam API release.
 1, Tesla Dam API release.
 2, Add ActionDiskCheck, ActionDiskMask, ActionDiskRma, HostGets.
 2, Add ActionDiskCheck, ActionDiskMask, ActionDiskRma, HostGets.
 
 
+
 2018-01-18 Version: 0.8.2
 2018-01-18 Version: 0.8.2
 1. Set default timeout to 10s
 1. Set default timeout to 10s
 2. Make integration tests more stable
 2. Make integration tests more stable

+ 3 - 3
integration/ecs_test.go

@@ -130,10 +130,10 @@ func deleteAllTestEcsInstance(t *testing.T, client *ecs.Client) {
 		if strings.HasPrefix(instanceInfo.InstanceName, InstanceNamePrefix) {
 		if strings.HasPrefix(instanceInfo.InstanceName, InstanceNamePrefix) {
 			createTime, err := strconv.ParseInt(instanceInfo.InstanceName[26:len(instanceInfo.InstanceName)], 10, 64)
 			createTime, err := strconv.ParseInt(instanceInfo.InstanceName[26:len(instanceInfo.InstanceName)], 10, 64)
 			assertErrorNil(t, err, "Parse instance create time failed: "+instanceInfo.InstanceName)
 			assertErrorNil(t, err, "Parse instance create time failed: "+instanceInfo.InstanceName)
-			if (time.Now().Unix() - createTime) < (5 * 60) {
-				fmt.Printf("found undeleted ecs instance(%s) but created in 5 minutes, try to delete next time\n",instanceInfo.InstanceName)
+			if (time.Now().Unix() - createTime) < (60 * 60) {
+				fmt.Printf("found undeleted ecs instance(%s) but created in 60 minutes, try to delete next time\n", instanceInfo.InstanceName)
 				return
 				return
-			}else{
+			} else {
 				fmt.Printf("found undeleted ecs instance(%s), status=%s, try to delete it.\n",
 				fmt.Printf("found undeleted ecs instance(%s), status=%s, try to delete it.\n",
 					instanceInfo.Status, instanceInfo.InstanceId)
 					instanceInfo.Status, instanceInfo.InstanceId)
 				if instanceInfo.Status == EcsInstanceStatusRunning {
 				if instanceInfo.Status == EcsInstanceStatusRunning {

+ 4 - 4
integration/rds_test.go

@@ -2,14 +2,14 @@ package integration
 
 
 import (
 import (
 	"fmt"
 	"fmt"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
 	"github.com/aliyun/alibaba-cloud-sdk-go/services/rds"
 	"github.com/aliyun/alibaba-cloud-sdk-go/services/rds"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/assert"
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
 	"testing"
 	"testing"
 	"time"
 	"time"
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
 )
 )
 
 
 const (
 const (
@@ -180,8 +180,8 @@ func deleteAllTestRdsInstance(t *testing.T, client *rds.Client) {
 		if strings.HasPrefix(instance.DBInstanceDescription, InstanceNamePrefix) {
 		if strings.HasPrefix(instance.DBInstanceDescription, InstanceNamePrefix) {
 			createTime, err := strconv.ParseInt(instance.DBInstanceDescription[len(InstanceNamePrefix):], 10, 64)
 			createTime, err := strconv.ParseInt(instance.DBInstanceDescription[len(InstanceNamePrefix):], 10, 64)
 			assertErrorNil(t, err, "Parse instance create time failed: "+instance.DBInstanceDescription)
 			assertErrorNil(t, err, "Parse instance create time failed: "+instance.DBInstanceDescription)
-			if (time.Now().Unix() - createTime) < (5 * 60) {
-				fmt.Printf("found undeleted rds instance(%s) but created in 5 minutes, try to delete next time\n", instance.DBInstanceDescription)
+			if (time.Now().Unix() - createTime) < (60 * 60) {
+				fmt.Printf("found undeleted rds instance(%s) but created in 60 minutes, try to delete next time\n", instance.DBInstanceDescription)
 				return
 				return
 			} else {
 			} else {
 				fmt.Printf("found rds test instance(%s), trying to delte it\n", instance.DBInstanceId)
 				fmt.Printf("found rds test instance(%s), trying to delte it\n", instance.DBInstanceId)

+ 2 - 2
integration/slb_test.go

@@ -134,8 +134,8 @@ func deleteAllTestSlbInstance(t *testing.T, client *slb.Client) {
 		if strings.HasPrefix(slbInstanceInfo.LoadBalancerName, InstanceNamePrefix) {
 		if strings.HasPrefix(slbInstanceInfo.LoadBalancerName, InstanceNamePrefix) {
 			createTime, err := strconv.ParseInt(slbInstanceInfo.LoadBalancerName[len(InstanceNamePrefix):], 10, 64)
 			createTime, err := strconv.ParseInt(slbInstanceInfo.LoadBalancerName[len(InstanceNamePrefix):], 10, 64)
 			assertErrorNil(t, err, "Parse instance create time failed: "+slbInstanceInfo.LoadBalancerName)
 			assertErrorNil(t, err, "Parse instance create time failed: "+slbInstanceInfo.LoadBalancerName)
-			if (time.Now().Unix() - createTime) < (5 * 60) {
-				fmt.Printf("found undeleted slb instance(%s) but created in 5 minutes, try to delete next time\n", slbInstanceInfo.LoadBalancerName)
+			if (time.Now().Unix() - createTime) < (60 * 60) {
+				fmt.Printf("found undeleted slb instance(%s) but created in 60 minutes, try to delete next time\n", slbInstanceInfo.LoadBalancerName)
 				return
 				return
 			} else {
 			} else {
 				fmt.Printf("found undeleted slb instance(%s), status=%s, try to delete it.\n",
 				fmt.Printf("found undeleted slb instance(%s), status=%s, try to delete it.\n",

+ 1 - 1
integration/utils.go

@@ -43,4 +43,4 @@ func assertErrorNil(t *testing.T, err error, message string) {
 	if err != nil {
 	if err != nil {
 		fmt.Fprintf(os.Stderr, message+": %v\n", err)
 		fmt.Fprintf(os.Stderr, message+": %v\n", err)
 	}
 	}
-}
+}

+ 1 - 1
sdk/auth/roa_signature_composer.go

@@ -94,7 +94,7 @@ func buildRoaStringToSign(request requests.AcsRequest) (stringToSign string) {
 	}
 	}
 
 
 	// append query params
 	// append query params
-	stringToSignBuilder.WriteString(request.GetQueries())
+	stringToSignBuilder.WriteString(request.BuildQueries())
 	stringToSign = stringToSignBuilder.String()
 	stringToSign = stringToSignBuilder.String()
 	return
 	return
 }
 }

+ 4 - 0
sdk/auth/rpc_signature_composer.go

@@ -24,6 +24,10 @@ import (
 
 
 func signRpcRequest(request requests.AcsRequest, signer Signer, regionId string) {
 func signRpcRequest(request requests.AcsRequest, signer Signer, regionId string) {
 	completeRpcSignParams(request, signer, regionId)
 	completeRpcSignParams(request, signer, regionId)
+	// remove while retry
+	if _, containsSign := request.GetQueryParams()["Signature"]; containsSign {
+		delete(request.GetQueryParams(), "Signature")
+	}
 	stringToSign := buildRpcStringToSign(request)
 	stringToSign := buildRpcStringToSign(request)
 	signature := signer.Sign(stringToSign, "&")
 	signature := signer.Sign(stringToSign, "&")
 	request.GetQueryParams()["Signature"] = signature
 	request.GetQueryParams()["Signature"] = signature

+ 1 - 1
sdk/auth/signers/algorithms.go

@@ -58,6 +58,6 @@ func Sha256WithRsa(source, secret string) string {
 	}
 	}
 
 
 	signedString := base64.StdEncoding.EncodeToString(signature)
 	signedString := base64.StdEncoding.EncodeToString(signature)
-	fmt.Printf("Encoded: %v\n", signedString)
+	//fmt.Printf("Encoded: %v\n", signedString)
 	return signedString
 	return signedString
 }
 }

+ 56 - 21
sdk/client.go

@@ -15,6 +15,7 @@
 package sdk
 package sdk
 
 
 import (
 import (
+	"fmt"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints"
@@ -23,8 +24,8 @@ import (
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
 	"net"
 	"net"
 	"net/http"
 	"net/http"
-	"fmt"
 	"strconv"
 	"strconv"
+	"sync"
 )
 )
 
 
 // this value will be replaced while build: -ldflags="-X sdk.version=x.x.x"
 // this value will be replaced while build: -ldflags="-X sdk.version=x.x.x"
@@ -39,6 +40,8 @@ type Client struct {
 
 
 	debug     bool
 	debug     bool
 	isRunning bool
 	isRunning bool
+	// void "panic(write to close channel)" cause of addAsync() after Shutdown()
+	asyncChanLock *sync.RWMutex
 }
 }
 
 
 func (client *Client) Init() (err error) {
 func (client *Client) Init() (err error) {
@@ -47,6 +50,7 @@ func (client *Client) Init() (err error) {
 
 
 func (client *Client) InitWithOptions(regionId string, config *Config, credential auth.Credential) (err error) {
 func (client *Client) InitWithOptions(regionId string, config *Config, credential auth.Credential) (err error) {
 	client.isRunning = true
 	client.isRunning = true
+	client.asyncChanLock = new(sync.RWMutex)
 	client.regionId = regionId
 	client.regionId = regionId
 	client.config = config
 	client.config = config
 	if err != nil {
 	if err != nil {
@@ -77,8 +81,10 @@ func (client *Client) EnableAsync(routinePoolSize, maxTaskQueueSize int) {
 		go func() {
 		go func() {
 			for client.isRunning {
 			for client.isRunning {
 				select {
 				select {
-				case task := <-client.asyncTaskQueue:
-					task()
+				case task, notClosed := <-client.asyncTaskQueue:
+					if notClosed {
+						task()
+					}
 				}
 				}
 			}
 			}
 		}()
 		}()
@@ -136,7 +142,7 @@ func (client *Client) InitWithStsRoleNameOnEcs(regionId, roleName string) (err e
 func (client *Client) InitClientConfig() (config *Config) {
 func (client *Client) InitClientConfig() (config *Config) {
 	if client.config != nil {
 	if client.config != nil {
 		return client.config
 		return client.config
-	}else{
+	} else {
 		return NewConfig()
 		return NewConfig()
 	}
 	}
 }
 }
@@ -177,26 +183,16 @@ func (client *Client) DoActionWithSigner(request requests.AcsRequest, response r
 	}
 	}
 
 
 	// signature
 	// signature
+	var finalSigner auth.Signer
 	if signer != nil {
 	if signer != nil {
-		err = auth.Sign(request, signer, regionId)
+		finalSigner = signer
 	} else {
 	} else {
-		err = auth.Sign(request, client.signer, regionId)
+		finalSigner = client.signer
 	}
 	}
-
+	httpRequest, err := buildHttpRequest(request, finalSigner, regionId)
 	if err != nil {
 	if err != nil {
 		return
 		return
 	}
 	}
-
-	requestMethod := request.GetMethod()
-	requestUrl := request.GetUrl()
-	body := request.GetBodyReader()
-	httpRequest, err := http.NewRequest(requestMethod, requestUrl, body)
-	if err != nil {
-		return
-	}
-	for key, value := range request.GetHeaders() {
-		httpRequest.Header[key] = []string{value}
-	}
 	var httpResponse *http.Response
 	var httpResponse *http.Response
 	for retryTimes := 0; retryTimes <= client.config.MaxRetryTime; retryTimes++ {
 	for retryTimes := 0; retryTimes <= client.config.MaxRetryTime; retryTimes++ {
 		httpResponse, err = client.httpClient.Do(httpRequest)
 		httpResponse, err = client.httpClient.Do(httpRequest)
@@ -209,13 +205,18 @@ func (client *Client) DoActionWithSigner(request requests.AcsRequest, response r
 				return
 				return
 			} else if retryTimes >= client.config.MaxRetryTime {
 			} else if retryTimes >= client.config.MaxRetryTime {
 				// timeout but reached the max retry times, return
 				// timeout but reached the max retry times, return
-				timeoutErrorMsg := fmt.Sprintf(errors.TimeoutErrorMessage, strconv.Itoa(retryTimes + 1), strconv.Itoa(retryTimes + 1))
+				timeoutErrorMsg := fmt.Sprintf(errors.TimeoutErrorMessage, strconv.Itoa(retryTimes+1), strconv.Itoa(retryTimes+1))
 				err = errors.NewClientError(errors.TimeoutErrorCode, timeoutErrorMsg, err)
 				err = errors.NewClientError(errors.TimeoutErrorCode, timeoutErrorMsg, err)
 				return
 				return
 			}
 			}
 		}
 		}
 		//  if status code >= 500 or timeout, will trigger retry
 		//  if status code >= 500 or timeout, will trigger retry
 		if client.config.AutoRetry && (timeout || isServerError(httpResponse)) {
 		if client.config.AutoRetry && (timeout || isServerError(httpResponse)) {
+			// rewrite signatureNonce and signature
+			httpRequest, err = buildHttpRequest(request, finalSigner, regionId)
+			if err != nil {
+				return
+			}
 			continue
 			continue
 		}
 		}
 		break
 		break
@@ -224,6 +225,28 @@ func (client *Client) DoActionWithSigner(request requests.AcsRequest, response r
 	return
 	return
 }
 }
 
 
+func buildHttpRequest(request requests.AcsRequest, singer auth.Signer, regionId string) (httpRequest *http.Request, err error) {
+	err = auth.Sign(request, singer, regionId)
+	if err != nil {
+		return
+	}
+	requestMethod := request.GetMethod()
+	requestUrl := request.BuildUrl()
+	body := request.GetBodyReader()
+	httpRequest, err = http.NewRequest(requestMethod, requestUrl, body)
+	if err != nil {
+		return
+	}
+	for key, value := range request.GetHeaders() {
+		httpRequest.Header[key] = []string{value}
+	}
+	// host is a special case
+	if host, containsHost := request.GetHeaders()["Host"]; containsHost {
+		httpRequest.Host = host
+	}
+	return
+}
+
 func isTimeout(err error) bool {
 func isTimeout(err error) bool {
 	if err == nil {
 	if err == nil {
 		return false
 		return false
@@ -236,9 +259,18 @@ func isServerError(httpResponse *http.Response) bool {
 	return httpResponse.StatusCode >= http.StatusInternalServerError
 	return httpResponse.StatusCode >= http.StatusInternalServerError
 }
 }
 
 
+/**
+only block when any one of the following occurs:
+1. the asyncTaskQueue is full, increase the queue size to avoid this
+2. Shutdown() in progressing, the client is being closed
+**/
 func (client *Client) AddAsyncTask(task func()) (err error) {
 func (client *Client) AddAsyncTask(task func()) (err error) {
 	if client.asyncTaskQueue != nil {
 	if client.asyncTaskQueue != nil {
-		client.asyncTaskQueue <- task
+		client.asyncChanLock.RLock()
+		defer client.asyncChanLock.RUnlock()
+		if client.isRunning {
+			client.asyncTaskQueue <- task
+		}
 	} else {
 	} else {
 		err = errors.NewClientError(errors.AsyncFunctionNotEnabledCode, errors.AsyncFunctionNotEnabledMessage, nil)
 		err = errors.NewClientError(errors.AsyncFunctionNotEnabledCode, errors.AsyncFunctionNotEnabledMessage, nil)
 	}
 	}
@@ -307,6 +339,9 @@ func (client *Client) ProcessCommonRequestWithSigner(request *requests.CommonReq
 
 
 func (client *Client) Shutdown() {
 func (client *Client) Shutdown() {
 	client.signer.Shutdown()
 	client.signer.Shutdown()
-	close(client.asyncTaskQueue)
+	// lock the addAsync()
+	client.asyncChanLock.Lock()
+	defer client.asyncChanLock.Unlock()
 	client.isRunning = false
 	client.isRunning = false
+	close(client.asyncTaskQueue)
 }
 }

+ 3 - 1
sdk/requests/acs_reqeust.go

@@ -59,6 +59,7 @@ type AcsRequest interface {
 	GetPort() string
 	GetPort() string
 	GetRegionId() string
 	GetRegionId() string
 	GetUrl() string
 	GetUrl() string
+	GetQueries() string
 	GetHeaders() map[string]string
 	GetHeaders() map[string]string
 	GetQueryParams() map[string]string
 	GetQueryParams() map[string]string
 	GetFormParams() map[string]string
 	GetFormParams() map[string]string
@@ -74,8 +75,9 @@ type AcsRequest interface {
 
 
 	SetDomain(domain string)
 	SetDomain(domain string)
 	SetContent(content []byte)
 	SetContent(content []byte)
+	BuildUrl() string
+	BuildQueries() string
 
 
-	GetQueries() string
 	addHeaderParam(key, value string)
 	addHeaderParam(key, value string)
 	addQueryParam(key, value string)
 	addQueryParam(key, value string)
 	addFormParam(key, value string)
 	addFormParam(key, value string)

+ 16 - 4
sdk/requests/common_request.go

@@ -55,6 +55,18 @@ func (request *CommonRequest) TransToAcsRequest() {
 
 
 }
 }
 
 
+func (request *CommonRequest) BuildUrl() string {
+	if len(request.Port) > 0 {
+		return strings.ToLower(request.Scheme) + "://" + request.Domain + ":" + request.Port + request.BuildQueries()
+	}
+
+	return strings.ToLower(request.Scheme) + "://" + request.Domain + request.BuildQueries()
+}
+
+func (request *CommonRequest) BuildQueries() string {
+	return request.Ontology.BuildQueries()
+}
+
 func (request *CommonRequest) GetUrl() string {
 func (request *CommonRequest) GetUrl() string {
 	if len(request.Port) > 0 {
 	if len(request.Port) > 0 {
 		return strings.ToLower(request.Scheme) + "://" + request.Domain + ":" + request.Port + request.GetQueries()
 		return strings.ToLower(request.Scheme) + "://" + request.Domain + ":" + request.Port + request.GetQueries()
@@ -63,6 +75,10 @@ func (request *CommonRequest) GetUrl() string {
 	return strings.ToLower(request.Scheme) + "://" + request.Domain + request.GetQueries()
 	return strings.ToLower(request.Scheme) + "://" + request.Domain + request.GetQueries()
 }
 }
 
 
+func (request *CommonRequest) GetQueries() string {
+	return request.Ontology.GetQueries()
+}
+
 func (request *CommonRequest) GetBodyReader() io.Reader {
 func (request *CommonRequest) GetBodyReader() io.Reader {
 	return request.Ontology.GetBodyReader()
 	return request.Ontology.GetBodyReader()
 }
 }
@@ -71,10 +87,6 @@ func (request *CommonRequest) GetStyle() string {
 	return request.Ontology.GetStyle()
 	return request.Ontology.GetStyle()
 }
 }
 
 
-func (request *CommonRequest) GetQueries() string {
-	return request.Ontology.GetQueries()
-}
-
 func (request *CommonRequest) addPathParam(key, value string) {
 func (request *CommonRequest) addPathParam(key, value string) {
 	request.PathParams[key] = value
 	request.PathParams[key] = value
 }
 }

+ 7 - 4
sdk/requests/roa_request.go

@@ -44,13 +44,10 @@ func (request *RoaRequest) GetBodyReader() io.Reader {
 }
 }
 
 
 func (request *RoaRequest) GetQueries() string {
 func (request *RoaRequest) GetQueries() string {
-	if len(request.queries) == 0 {
-		request.buildQueries()
-	}
 	return request.queries
 	return request.queries
 }
 }
 
 
-func (request *RoaRequest) buildQueries() {
+func (request *RoaRequest) BuildQueries() string {
 	// replace path params with value
 	// replace path params with value
 	path := request.pathPattern
 	path := request.pathPattern
 	for key, value := range request.PathParams {
 	for key, value := range request.PathParams {
@@ -87,12 +84,18 @@ func (request *RoaRequest) buildQueries() {
 		}
 		}
 	}
 	}
 	request.queries = urlBuilder.String()
 	request.queries = urlBuilder.String()
+	return request.queries
 }
 }
 
 
 func (request *RoaRequest) GetUrl() string {
 func (request *RoaRequest) GetUrl() string {
 	return strings.ToLower(request.Scheme) + "://" + request.Domain + ":" + request.Port + request.GetQueries()
 	return strings.ToLower(request.Scheme) + "://" + request.Domain + ":" + request.Port + request.GetQueries()
 }
 }
 
 
+func (request *RoaRequest) BuildUrl() string {
+	return strings.ToLower(request.Scheme) + "://" + request.Domain + ":" + request.Port + request.BuildQueries()
+}
+
+
 func (request *RoaRequest) addPathParam(key, value string) {
 func (request *RoaRequest) addPathParam(key, value string) {
 	request.PathParams[key] = value
 	request.PathParams[key] = value
 }
 }

+ 9 - 4
sdk/requests/rpc_request.go

@@ -42,15 +42,20 @@ func (request *RpcRequest) GetBodyReader() io.Reader {
 	}
 	}
 }
 }
 
 
+func (request *RpcRequest) BuildQueries() string {
+	request.queries = "/?" + utils.GetUrlFormedMap(request.QueryParams)
+	return request.queries
+}
+
 func (request *RpcRequest) GetQueries() string {
 func (request *RpcRequest) GetQueries() string {
-	if request.queries == "" {
-		request.queries = "/?" + utils.GetUrlFormedMap(request.QueryParams)
-	}
 	return request.queries
 	return request.queries
 }
 }
 
 
+func (request *RpcRequest) BuildUrl() string {
+	return strings.ToLower(request.Scheme) + "://" + request.Domain + request.BuildQueries()
+}
+
 func (request *RpcRequest) GetUrl() string {
 func (request *RpcRequest) GetUrl() string {
-	//return strings.ToLower(request.Scheme) + "://" + request.Domain + ":" + request.Port + request.GetQueries()
 	return strings.ToLower(request.Scheme) + "://" + request.Domain + request.GetQueries()
 	return strings.ToLower(request.Scheme) + "://" + request.Domain + request.GetQueries()
 }
 }
 
 

+ 6 - 2
services/alidns/add_batch_domain_records.go

@@ -33,8 +33,12 @@ func (client *Client) AddBatchDomainRecordsWithChan(request *AddBatchDomainRecor
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddBatchDomainRecords(request)
 		response, err := client.AddBatchDomainRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/add_domain.go

@@ -33,8 +33,12 @@ func (client *Client) AddDomainWithChan(request *AddDomainRequest) (<-chan *AddD
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddDomain(request)
 		response, err := client.AddDomain(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/add_domain_group.go

@@ -33,8 +33,12 @@ func (client *Client) AddDomainGroupWithChan(request *AddDomainGroupRequest) (<-
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddDomainGroup(request)
 		response, err := client.AddDomainGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/add_domain_record.go

@@ -33,8 +33,12 @@ func (client *Client) AddDomainRecordWithChan(request *AddDomainRecordRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddDomainRecord(request)
 		response, err := client.AddDomainRecord(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/apply_for_retrieval_domain_name.go

@@ -33,8 +33,12 @@ func (client *Client) ApplyForRetrievalDomainNameWithChan(request *ApplyForRetri
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ApplyForRetrievalDomainName(request)
 		response, err := client.ApplyForRetrievalDomainName(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/change_domain_group.go

@@ -33,8 +33,12 @@ func (client *Client) ChangeDomainGroupWithChan(request *ChangeDomainGroupReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ChangeDomainGroup(request)
 		response, err := client.ChangeDomainGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/change_domain_of_dns_product.go

@@ -33,8 +33,12 @@ func (client *Client) ChangeDomainOfDnsProductWithChan(request *ChangeDomainOfDn
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ChangeDomainOfDnsProduct(request)
 		response, err := client.ChangeDomainOfDnsProduct(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/check_domain_record.go

@@ -33,8 +33,12 @@ func (client *Client) CheckDomainRecordWithChan(request *CheckDomainRecordReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.CheckDomainRecord(request)
 		response, err := client.CheckDomainRecord(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/delete_batch_domain_records.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteBatchDomainRecordsWithChan(request *DeleteBatchDomai
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteBatchDomainRecords(request)
 		response, err := client.DeleteBatchDomainRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/delete_batch_domains.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteBatchDomainsWithChan(request *DeleteBatchDomainsRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteBatchDomains(request)
 		response, err := client.DeleteBatchDomains(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/delete_domain.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteDomainWithChan(request *DeleteDomainRequest) (<-chan
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteDomain(request)
 		response, err := client.DeleteDomain(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/delete_domain_group.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteDomainGroupWithChan(request *DeleteDomainGroupReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteDomainGroup(request)
 		response, err := client.DeleteDomainGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/delete_domain_record.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteDomainRecordWithChan(request *DeleteDomainRecordRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteDomainRecord(request)
 		response, err := client.DeleteDomainRecord(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/delete_sub_domain_records.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteSubDomainRecordsWithChan(request *DeleteSubDomainRec
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteSubDomainRecords(request)
 		response, err := client.DeleteSubDomainRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_batch_result.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeBatchResultWithChan(request *DescribeBatchResultRe
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeBatchResult(request)
 		response, err := client.DescribeBatchResult(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_dns_product_instance.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDnsProductInstanceWithChan(request *DescribeDnsPro
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDnsProductInstance(request)
 		response, err := client.DescribeDnsProductInstance(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_dns_product_instances.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDnsProductInstancesWithChan(request *DescribeDnsPr
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDnsProductInstances(request)
 		response, err := client.DescribeDnsProductInstances(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_dnsslb_sub_domains.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDNSSLBSubDomainsWithChan(request *DescribeDNSSLBSu
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDNSSLBSubDomains(request)
 		response, err := client.DescribeDNSSLBSubDomains(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_groups.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainGroupsWithChan(request *DescribeDomainGroups
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainGroups(request)
 		response, err := client.DescribeDomainGroups(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_info.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainInfoWithChan(request *DescribeDomainInfoRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainInfo(request)
 		response, err := client.DescribeDomainInfo(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_logs.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainLogsWithChan(request *DescribeDomainLogsRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainLogs(request)
 		response, err := client.DescribeDomainLogs(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_ns.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainNsWithChan(request *DescribeDomainNsRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainNs(request)
 		response, err := client.DescribeDomainNs(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_record_info.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainRecordInfoWithChan(request *DescribeDomainRe
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainRecordInfo(request)
 		response, err := client.DescribeDomainRecordInfo(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_records.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainRecordsWithChan(request *DescribeDomainRecor
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainRecords(request)
 		response, err := client.DescribeDomainRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domain_whois_info.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainWhoisInfoWithChan(request *DescribeDomainWho
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomainWhoisInfo(request)
 		response, err := client.DescribeDomainWhoisInfo(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_domains.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeDomainsWithChan(request *DescribeDomainsRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeDomains(request)
 		response, err := client.DescribeDomains(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_record_logs.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeRecordLogsWithChan(request *DescribeRecordLogsRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeRecordLogs(request)
 		response, err := client.DescribeRecordLogs(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_sub_domain_records.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeSubDomainRecordsWithChan(request *DescribeSubDomai
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeSubDomainRecords(request)
 		response, err := client.DescribeSubDomainRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/describe_support_lines.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeSupportLinesWithChan(request *DescribeSupportLines
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeSupportLines(request)
 		response, err := client.DescribeSupportLines(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/get_main_domain_name.go

@@ -33,8 +33,12 @@ func (client *Client) GetMainDomainNameWithChan(request *GetMainDomainNameReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.GetMainDomainName(request)
 		response, err := client.GetMainDomainName(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/modify_hichina_domain_dns.go

@@ -33,8 +33,12 @@ func (client *Client) ModifyHichinaDomainDNSWithChan(request *ModifyHichinaDomai
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ModifyHichinaDomainDNS(request)
 		response, err := client.ModifyHichinaDomainDNS(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/retrieval_domain_name.go

@@ -33,8 +33,12 @@ func (client *Client) RetrievalDomainNameWithChan(request *RetrievalDomainNameRe
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.RetrievalDomainName(request)
 		response, err := client.RetrievalDomainName(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/set_dnsslb_status.go

@@ -33,8 +33,12 @@ func (client *Client) SetDNSSLBStatusWithChan(request *SetDNSSLBStatusRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.SetDNSSLBStatus(request)
 		response, err := client.SetDNSSLBStatus(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/set_domain_record_status.go

@@ -33,8 +33,12 @@ func (client *Client) SetDomainRecordStatusWithChan(request *SetDomainRecordStat
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.SetDomainRecordStatus(request)
 		response, err := client.SetDomainRecordStatus(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/update_batch_domain_records.go

@@ -33,8 +33,12 @@ func (client *Client) UpdateBatchDomainRecordsWithChan(request *UpdateBatchDomai
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.UpdateBatchDomainRecords(request)
 		response, err := client.UpdateBatchDomainRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/update_dnsslb_weight.go

@@ -33,8 +33,12 @@ func (client *Client) UpdateDNSSLBWeightWithChan(request *UpdateDNSSLBWeightRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.UpdateDNSSLBWeight(request)
 		response, err := client.UpdateDNSSLBWeight(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/update_domain_group.go

@@ -33,8 +33,12 @@ func (client *Client) UpdateDomainGroupWithChan(request *UpdateDomainGroupReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.UpdateDomainGroup(request)
 		response, err := client.UpdateDomainGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/alidns/update_domain_record.go

@@ -33,8 +33,12 @@ func (client *Client) UpdateDomainRecordWithChan(request *UpdateDomainRecordRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.UpdateDomainRecord(request)
 		response, err := client.UpdateDomainRecord(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 5 - 2
services/arms/arms_query_data_set.go

@@ -33,8 +33,11 @@ func (client *Client) ARMSQueryDataSetWithChan(request *ARMSQueryDataSetRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ARMSQueryDataSet(request)
 		response, err := client.ARMSQueryDataSet(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/arms/where_in_dim_query.go

@@ -33,8 +33,12 @@ func (client *Client) WhereInDimQueryWithChan(request *WhereInDimQueryRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.WhereInDimQuery(request)
 		response, err := client.WhereInDimQuery(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/arms4finance/arms_query_data_set.go

@@ -33,8 +33,12 @@ func (client *Client) ARMSQueryDataSetWithChan(request *ARMSQueryDataSetRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ARMSQueryDataSet(request)
 		response, err := client.ARMSQueryDataSet(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/arms4finance/where_in_dim_query.go

@@ -33,8 +33,12 @@ func (client *Client) WhereInDimQueryWithChan(request *WhereInDimQueryRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.WhereInDimQuery(request)
 		response, err := client.WhereInDimQuery(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/add_phone_number.go

@@ -33,8 +33,12 @@ func (client *Client) AddPhoneNumberWithChan(request *AddPhoneNumberRequest) (<-
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddPhoneNumber(request)
 		response, err := client.AddPhoneNumber(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/assign_users.go

@@ -33,8 +33,12 @@ func (client *Client) AssignUsersWithChan(request *AssignUsersRequest) (<-chan *
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AssignUsers(request)
 		response, err := client.AssignUsers(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/create_skill_group.go

@@ -33,8 +33,12 @@ func (client *Client) CreateSkillGroupWithChan(request *CreateSkillGroupRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.CreateSkillGroup(request)
 		response, err := client.CreateSkillGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/create_user.go

@@ -33,8 +33,12 @@ func (client *Client) CreateUserWithChan(request *CreateUserRequest) (<-chan *Cr
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.CreateUser(request)
 		response, err := client.CreateUser(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/delete_skill_group.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteSkillGroupWithChan(request *DeleteSkillGroupRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteSkillGroup(request)
 		response, err := client.DeleteSkillGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/download_recording.go

@@ -33,8 +33,12 @@ func (client *Client) DownloadRecordingWithChan(request *DownloadRecordingReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DownloadRecording(request)
 		response, err := client.DownloadRecording(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/get_config.go

@@ -33,8 +33,12 @@ func (client *Client) GetConfigWithChan(request *GetConfigRequest) (<-chan *GetC
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.GetConfig(request)
 		response, err := client.GetConfig(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/get_service_extensions.go

@@ -33,8 +33,12 @@ func (client *Client) GetServiceExtensionsWithChan(request *GetServiceExtensions
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.GetServiceExtensions(request)
 		response, err := client.GetServiceExtensions(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/get_user.go

@@ -33,8 +33,12 @@ func (client *Client) GetUserWithChan(request *GetUserRequest) (<-chan *GetUserR
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.GetUser(request)
 		response, err := client.GetUser(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_call_detail_records.go

@@ -33,8 +33,12 @@ func (client *Client) ListCallDetailRecordsWithChan(request *ListCallDetailRecor
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListCallDetailRecords(request)
 		response, err := client.ListCallDetailRecords(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_contact_flows.go

@@ -33,8 +33,12 @@ func (client *Client) ListContactFlowsWithChan(request *ListContactFlowsRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListContactFlows(request)
 		response, err := client.ListContactFlows(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_phone_numbers.go

@@ -33,8 +33,12 @@ func (client *Client) ListPhoneNumbersWithChan(request *ListPhoneNumbersRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListPhoneNumbers(request)
 		response, err := client.ListPhoneNumbers(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_recordings.go

@@ -33,8 +33,12 @@ func (client *Client) ListRecordingsWithChan(request *ListRecordingsRequest) (<-
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListRecordings(request)
 		response, err := client.ListRecordings(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_roles.go

@@ -33,8 +33,12 @@ func (client *Client) ListRolesWithChan(request *ListRolesRequest) (<-chan *List
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListRoles(request)
 		response, err := client.ListRoles(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_skill_groups.go

@@ -33,8 +33,12 @@ func (client *Client) ListSkillGroupsWithChan(request *ListSkillGroupsRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListSkillGroups(request)
 		response, err := client.ListSkillGroups(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_skill_groups_of_user.go

@@ -33,8 +33,12 @@ func (client *Client) ListSkillGroupsOfUserWithChan(request *ListSkillGroupsOfUs
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListSkillGroupsOfUser(request)
 		response, err := client.ListSkillGroupsOfUser(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_users.go

@@ -33,8 +33,12 @@ func (client *Client) ListUsersWithChan(request *ListUsersRequest) (<-chan *List
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListUsers(request)
 		response, err := client.ListUsers(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/list_users_of_skill_group.go

@@ -33,8 +33,12 @@ func (client *Client) ListUsersOfSkillGroupWithChan(request *ListUsersOfSkillGro
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ListUsersOfSkillGroup(request)
 		response, err := client.ListUsersOfSkillGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/modify_phone_number.go

@@ -33,8 +33,12 @@ func (client *Client) ModifyPhoneNumberWithChan(request *ModifyPhoneNumberReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ModifyPhoneNumber(request)
 		response, err := client.ModifyPhoneNumber(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/modify_skill_group.go

@@ -33,8 +33,12 @@ func (client *Client) ModifySkillGroupWithChan(request *ModifySkillGroupRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ModifySkillGroup(request)
 		response, err := client.ModifySkillGroup(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/modify_user.go

@@ -33,8 +33,12 @@ func (client *Client) ModifyUserWithChan(request *ModifyUserRequest) (<-chan *Mo
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ModifyUser(request)
 		response, err := client.ModifyUser(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/refresh_token.go

@@ -33,8 +33,12 @@ func (client *Client) RefreshTokenWithChan(request *RefreshTokenRequest) (<-chan
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.RefreshToken(request)
 		response, err := client.RefreshToken(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/remove_phone_number.go

@@ -33,8 +33,12 @@ func (client *Client) RemovePhoneNumberWithChan(request *RemovePhoneNumberReques
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.RemovePhoneNumber(request)
 		response, err := client.RemovePhoneNumber(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/remove_users.go

@@ -33,8 +33,12 @@ func (client *Client) RemoveUsersWithChan(request *RemoveUsersRequest) (<-chan *
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.RemoveUsers(request)
 		response, err := client.RemoveUsers(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/ccc/request_login_info.go

@@ -33,8 +33,12 @@ func (client *Client) RequestLoginInfoWithChan(request *RequestLoginInfoRequest)
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.RequestLoginInfo(request)
 		response, err := client.RequestLoginInfo(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/add_cdn_domain.go

@@ -33,8 +33,12 @@ func (client *Client) AddCdnDomainWithChan(request *AddCdnDomainRequest) (<-chan
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddCdnDomain(request)
 		response, err := client.AddCdnDomain(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/add_live_app_record_config.go

@@ -33,8 +33,12 @@ func (client *Client) AddLiveAppRecordConfigWithChan(request *AddLiveAppRecordCo
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddLiveAppRecordConfig(request)
 		response, err := client.AddLiveAppRecordConfig(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/add_live_app_snapshot_config.go

@@ -33,8 +33,12 @@ func (client *Client) AddLiveAppSnapshotConfigWithChan(request *AddLiveAppSnapsh
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddLiveAppSnapshotConfig(request)
 		response, err := client.AddLiveAppSnapshotConfig(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/add_live_domain_mapping.go

@@ -33,8 +33,12 @@ func (client *Client) AddLiveDomainMappingWithChan(request *AddLiveDomainMapping
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddLiveDomainMapping(request)
 		response, err := client.AddLiveDomainMapping(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/add_live_pull_stream_info.go

@@ -33,8 +33,12 @@ func (client *Client) AddLivePullStreamInfoWithChan(request *AddLivePullStreamIn
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddLivePullStreamInfo(request)
 		response, err := client.AddLivePullStreamInfo(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/add_live_stream_transcode.go

@@ -33,8 +33,12 @@ func (client *Client) AddLiveStreamTranscodeWithChan(request *AddLiveStreamTrans
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.AddLiveStreamTranscode(request)
 		response, err := client.AddLiveStreamTranscode(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/batch_describe_domain_bps_data.go

@@ -33,8 +33,12 @@ func (client *Client) BatchDescribeDomainBpsDataWithChan(request *BatchDescribeD
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.BatchDescribeDomainBpsData(request)
 		response, err := client.BatchDescribeDomainBpsData(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/clear_user_black_list.go

@@ -33,8 +33,12 @@ func (client *Client) ClearUserBlackListWithChan(request *ClearUserBlackListRequ
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ClearUserBlackList(request)
 		response, err := client.ClearUserBlackList(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/clear_user_domain_black_list.go

@@ -33,8 +33,12 @@ func (client *Client) ClearUserDomainBlackListWithChan(request *ClearUserDomainB
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.ClearUserDomainBlackList(request)
 		response, err := client.ClearUserDomainBlackList(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/create_live_stream_record_index_files.go

@@ -33,8 +33,12 @@ func (client *Client) CreateLiveStreamRecordIndexFilesWithChan(request *CreateLi
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.CreateLiveStreamRecordIndexFiles(request)
 		response, err := client.CreateLiveStreamRecordIndexFiles(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_cdn_domain.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteCdnDomainWithChan(request *DeleteCdnDomainRequest) (
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteCdnDomain(request)
 		response, err := client.DeleteCdnDomain(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_http_header_config.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteHttpHeaderConfigWithChan(request *DeleteHttpHeaderCo
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteHttpHeaderConfig(request)
 		response, err := client.DeleteHttpHeaderConfig(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_live_app_record_config.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteLiveAppRecordConfigWithChan(request *DeleteLiveAppRe
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteLiveAppRecordConfig(request)
 		response, err := client.DeleteLiveAppRecordConfig(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_live_app_snapshot_config.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteLiveAppSnapshotConfigWithChan(request *DeleteLiveApp
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteLiveAppSnapshotConfig(request)
 		response, err := client.DeleteLiveAppSnapshotConfig(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_live_domain_mapping.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteLiveDomainMappingWithChan(request *DeleteLiveDomainM
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteLiveDomainMapping(request)
 		response, err := client.DeleteLiveDomainMapping(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_live_pull_stream_info.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteLivePullStreamInfoWithChan(request *DeleteLivePullSt
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteLivePullStreamInfo(request)
 		response, err := client.DeleteLivePullStreamInfo(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/delete_live_stream_transcode.go

@@ -33,8 +33,12 @@ func (client *Client) DeleteLiveStreamTranscodeWithChan(request *DeleteLiveStrea
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DeleteLiveStreamTranscode(request)
 		response, err := client.DeleteLiveStreamTranscode(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/describe_cdn_domain_base_detail.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeCdnDomainBaseDetailWithChan(request *DescribeCdnDo
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeCdnDomainBaseDetail(request)
 		response, err := client.DescribeCdnDomainBaseDetail(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/describe_cdn_domain_detail.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeCdnDomainDetailWithChan(request *DescribeCdnDomain
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeCdnDomainDetail(request)
 		response, err := client.DescribeCdnDomainDetail(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

+ 6 - 2
services/cdn/describe_cdn_domain_logs.go

@@ -33,8 +33,12 @@ func (client *Client) DescribeCdnDomainLogsWithChan(request *DescribeCdnDomainLo
 		defer close(responseChan)
 		defer close(responseChan)
 		defer close(errChan)
 		defer close(errChan)
 		response, err := client.DescribeCdnDomainLogs(request)
 		response, err := client.DescribeCdnDomainLogs(request)
-		responseChan <- response
-		errChan <- err
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+
 	})
 	})
 	if err != nil {
 	if err != nil {
 		errChan <- err
 		errChan <- err

Some files were not shown because too many files changed in this diff