client_context_func.go 72 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946
  1. // This file is auto-generated, don't edit it. Thanks.
  2. package client
  3. import (
  4. "context"
  5. "encoding/hex"
  6. spi "github.com/alibabacloud-go/alibabacloud-gateway-spi/client"
  7. openapiutil "github.com/alibabacloud-go/darabonba-openapi/v2/utils"
  8. "github.com/alibabacloud-go/tea/dara"
  9. )
  10. // Description:
  11. //
  12. // Encapsulate the request and invoke the network
  13. //
  14. // @param action - api name
  15. //
  16. // @param version - product version
  17. //
  18. // @param protocol - http or https
  19. //
  20. // @param method - e.g. GET
  21. //
  22. // @param authType - authorization type e.g. AK
  23. //
  24. // @param bodyType - response body type e.g. String
  25. //
  26. // @param request - object of OpenApiRequest
  27. //
  28. // @param runtime - which controls some details of call api, such as retry times
  29. //
  30. // @return the response
  31. func (client *Client) DoRPCRequestWithCtx(ctx context.Context, action *string, version *string, protocol *string, method *string, authType *string, bodyType *string, request *openapiutil.OpenApiRequest, runtime *dara.RuntimeOptions) (_result map[string]interface{}, _err error) {
  32. _runtime := dara.NewRuntimeObject(map[string]interface{}{
  33. "key": dara.ToString(dara.Default(dara.StringValue(runtime.Key), dara.StringValue(client.Key))),
  34. "cert": dara.ToString(dara.Default(dara.StringValue(runtime.Cert), dara.StringValue(client.Cert))),
  35. "ca": dara.ToString(dara.Default(dara.StringValue(runtime.Ca), dara.StringValue(client.Ca))),
  36. "readTimeout": dara.ForceInt(dara.Default(dara.IntValue(runtime.ReadTimeout), dara.IntValue(client.ReadTimeout))),
  37. "connectTimeout": dara.ForceInt(dara.Default(dara.IntValue(runtime.ConnectTimeout), dara.IntValue(client.ConnectTimeout))),
  38. "httpProxy": dara.ToString(dara.Default(dara.StringValue(runtime.HttpProxy), dara.StringValue(client.HttpProxy))),
  39. "httpsProxy": dara.ToString(dara.Default(dara.StringValue(runtime.HttpsProxy), dara.StringValue(client.HttpsProxy))),
  40. "noProxy": dara.ToString(dara.Default(dara.StringValue(runtime.NoProxy), dara.StringValue(client.NoProxy))),
  41. "socks5Proxy": dara.ToString(dara.Default(dara.StringValue(runtime.Socks5Proxy), dara.StringValue(client.Socks5Proxy))),
  42. "socks5NetWork": dara.ToString(dara.Default(dara.StringValue(runtime.Socks5NetWork), dara.StringValue(client.Socks5NetWork))),
  43. "maxIdleConns": dara.ForceInt(dara.Default(dara.IntValue(runtime.MaxIdleConns), dara.IntValue(client.MaxIdleConns))),
  44. "retryOptions": client.RetryOptions,
  45. "ignoreSSL": dara.BoolValue(runtime.IgnoreSSL),
  46. "httpClient": client.HttpClient,
  47. "tlsMinVersion": dara.StringValue(client.TlsMinVersion),
  48. })
  49. var retryPolicyContext *dara.RetryPolicyContext
  50. var request_ *dara.Request
  51. var response_ *dara.Response
  52. var _resultErr error
  53. retriesAttempted := int(0)
  54. retryPolicyContext = &dara.RetryPolicyContext{
  55. RetriesAttempted: retriesAttempted,
  56. }
  57. _result = make(map[string]interface{})
  58. for dara.ShouldRetry(_runtime.RetryOptions, retryPolicyContext) {
  59. _resultErr = nil
  60. _backoffDelayTime := dara.GetBackoffDelay(_runtime.RetryOptions, retryPolicyContext)
  61. dara.Sleep(_backoffDelayTime)
  62. request_ = dara.NewRequest()
  63. request_.Protocol = dara.String(dara.ToString(dara.Default(dara.StringValue(client.Protocol), dara.StringValue(protocol))))
  64. request_.Method = method
  65. request_.Pathname = dara.String("/")
  66. globalQueries := make(map[string]*string)
  67. globalHeaders := make(map[string]*string)
  68. if !dara.IsNil(client.GlobalParameters) {
  69. globalParams := client.GlobalParameters
  70. if !dara.IsNil(globalParams.Queries) {
  71. globalQueries = globalParams.Queries
  72. }
  73. if !dara.IsNil(globalParams.Headers) {
  74. globalHeaders = globalParams.Headers
  75. }
  76. }
  77. extendsHeaders := make(map[string]*string)
  78. extendsQueries := make(map[string]*string)
  79. if !dara.IsNil(runtime.ExtendsParameters) {
  80. extendsParameters := runtime.ExtendsParameters
  81. if !dara.IsNil(extendsParameters.Headers) {
  82. extendsHeaders = extendsParameters.Headers
  83. }
  84. if !dara.IsNil(extendsParameters.Queries) {
  85. extendsQueries = extendsParameters.Queries
  86. }
  87. }
  88. request_.Query = dara.Merge(map[string]*string{
  89. "Action": action,
  90. "Format": dara.String("json"),
  91. "Version": version,
  92. "Timestamp": openapiutil.GetTimestamp(),
  93. "SignatureNonce": openapiutil.GetNonce(),
  94. }, globalQueries,
  95. extendsQueries,
  96. request.Query)
  97. headers, _err := client.GetRpcHeaders()
  98. if _err != nil {
  99. retriesAttempted++
  100. retryPolicyContext = &dara.RetryPolicyContext{
  101. RetriesAttempted: retriesAttempted,
  102. HttpRequest: request_,
  103. HttpResponse: response_,
  104. Exception: _err,
  105. }
  106. _resultErr = _err
  107. continue
  108. }
  109. if dara.IsNil(headers) {
  110. // endpoint is setted in product client
  111. request_.Headers = dara.Merge(map[string]*string{
  112. "host": client.Endpoint,
  113. "x-acs-version": version,
  114. "x-acs-action": action,
  115. "user-agent": openapiutil.GetUserAgent(client.UserAgent),
  116. }, globalHeaders,
  117. extendsHeaders,
  118. request.Headers)
  119. } else {
  120. request_.Headers = dara.Merge(map[string]*string{
  121. "host": client.Endpoint,
  122. "x-acs-version": version,
  123. "x-acs-action": action,
  124. "user-agent": openapiutil.GetUserAgent(client.UserAgent),
  125. }, globalHeaders,
  126. extendsHeaders,
  127. request.Headers,
  128. headers)
  129. }
  130. if !dara.IsNil(request.Body) {
  131. m := dara.ToMap(request.Body)
  132. tmp := dara.ToMap(openapiutil.Query(m))
  133. request_.Body = dara.ToReader(dara.ToFormString(tmp))
  134. request_.Headers["content-type"] = dara.String("application/x-www-form-urlencoded")
  135. }
  136. if dara.StringValue(authType) != "Anonymous" {
  137. if dara.IsNil(client.Credential) {
  138. _err = &ClientError{
  139. Code: dara.String("InvalidCredentials"),
  140. Message: dara.String("Please set up the credentials correctly. If you are setting them through environment variables, please ensure that ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set correctly. See https://help.aliyun.com/zh/sdk/developer-reference/configure-the-alibaba-cloud-accesskey-environment-variable-on-linux-macos-and-windows-systems for more details."),
  141. }
  142. if dara.BoolValue(client.DisableSDKError) != true {
  143. _err = dara.TeaSDKError(_err)
  144. }
  145. return _result, _err
  146. }
  147. credentialModel, _err := client.Credential.GetCredential()
  148. if _err != nil {
  149. retriesAttempted++
  150. retryPolicyContext = &dara.RetryPolicyContext{
  151. RetriesAttempted: retriesAttempted,
  152. HttpRequest: request_,
  153. HttpResponse: response_,
  154. Exception: _err,
  155. }
  156. _resultErr = _err
  157. continue
  158. }
  159. if !dara.IsNil(credentialModel.ProviderName) {
  160. request_.Headers["x-acs-credentials-provider"] = credentialModel.ProviderName
  161. }
  162. credentialType := dara.StringValue(credentialModel.Type)
  163. if credentialType == "bearer" {
  164. bearerToken := dara.StringValue(credentialModel.BearerToken)
  165. request_.Query["BearerToken"] = dara.String(bearerToken)
  166. request_.Query["SignatureType"] = dara.String("BEARERTOKEN")
  167. } else if credentialType == "id_token" {
  168. idToken := dara.StringValue(credentialModel.SecurityToken)
  169. request_.Headers["x-acs-zero-trust-idtoken"] = dara.String(idToken)
  170. } else {
  171. accessKeyId := dara.StringValue(credentialModel.AccessKeyId)
  172. accessKeySecret := dara.StringValue(credentialModel.AccessKeySecret)
  173. securityToken := dara.StringValue(credentialModel.SecurityToken)
  174. if !dara.IsNil(dara.String(securityToken)) && securityToken != "" {
  175. request_.Query["SecurityToken"] = dara.String(securityToken)
  176. }
  177. request_.Query["SignatureMethod"] = dara.String("HMAC-SHA1")
  178. request_.Query["SignatureVersion"] = dara.String("1.0")
  179. request_.Query["AccessKeyId"] = dara.String(accessKeyId)
  180. var t map[string]interface{}
  181. if !dara.IsNil(request.Body) {
  182. t = dara.ToMap(request.Body)
  183. }
  184. signedParam := dara.Merge(request_.Query,
  185. openapiutil.Query(t))
  186. request_.Query["Signature"] = openapiutil.GetRPCSignature(signedParam, request_.Method, dara.String(accessKeySecret))
  187. }
  188. }
  189. response_, _err = dara.DoRequestWithCtx(ctx, request_, _runtime)
  190. if _err != nil {
  191. retriesAttempted++
  192. retryPolicyContext = &dara.RetryPolicyContext{
  193. RetriesAttempted: retriesAttempted,
  194. HttpRequest: request_,
  195. HttpResponse: response_,
  196. Exception: _err,
  197. }
  198. _resultErr = _err
  199. continue
  200. }
  201. _result, _err = doRPCRequestWithCtx_opResponse(response_, client, bodyType)
  202. if _err != nil {
  203. retriesAttempted++
  204. retryPolicyContext = &dara.RetryPolicyContext{
  205. RetriesAttempted: retriesAttempted,
  206. HttpRequest: request_,
  207. HttpResponse: response_,
  208. Exception: _err,
  209. }
  210. _resultErr = _err
  211. continue
  212. }
  213. return _result, _err
  214. }
  215. if dara.BoolValue(client.DisableSDKError) != true {
  216. _resultErr = dara.TeaSDKError(_resultErr)
  217. }
  218. return _result, _resultErr
  219. }
  220. // Description:
  221. //
  222. // Encapsulate the request and invoke the network
  223. //
  224. // @param action - api name
  225. //
  226. // @param version - product version
  227. //
  228. // @param protocol - http or https
  229. //
  230. // @param method - e.g. GET
  231. //
  232. // @param authType - authorization type e.g. AK
  233. //
  234. // @param pathname - pathname of every api
  235. //
  236. // @param bodyType - response body type e.g. String
  237. //
  238. // @param request - object of OpenApiRequest
  239. //
  240. // @param runtime - which controls some details of call api, such as retry times
  241. //
  242. // @return the response
  243. func (client *Client) DoROARequestWithCtx(ctx context.Context, action *string, version *string, protocol *string, method *string, authType *string, pathname *string, bodyType *string, request *openapiutil.OpenApiRequest, runtime *dara.RuntimeOptions) (_result map[string]interface{}, _err error) {
  244. _runtime := dara.NewRuntimeObject(map[string]interface{}{
  245. "key": dara.ToString(dara.Default(dara.StringValue(runtime.Key), dara.StringValue(client.Key))),
  246. "cert": dara.ToString(dara.Default(dara.StringValue(runtime.Cert), dara.StringValue(client.Cert))),
  247. "ca": dara.ToString(dara.Default(dara.StringValue(runtime.Ca), dara.StringValue(client.Ca))),
  248. "readTimeout": dara.ForceInt(dara.Default(dara.IntValue(runtime.ReadTimeout), dara.IntValue(client.ReadTimeout))),
  249. "connectTimeout": dara.ForceInt(dara.Default(dara.IntValue(runtime.ConnectTimeout), dara.IntValue(client.ConnectTimeout))),
  250. "httpProxy": dara.ToString(dara.Default(dara.StringValue(runtime.HttpProxy), dara.StringValue(client.HttpProxy))),
  251. "httpsProxy": dara.ToString(dara.Default(dara.StringValue(runtime.HttpsProxy), dara.StringValue(client.HttpsProxy))),
  252. "noProxy": dara.ToString(dara.Default(dara.StringValue(runtime.NoProxy), dara.StringValue(client.NoProxy))),
  253. "socks5Proxy": dara.ToString(dara.Default(dara.StringValue(runtime.Socks5Proxy), dara.StringValue(client.Socks5Proxy))),
  254. "socks5NetWork": dara.ToString(dara.Default(dara.StringValue(runtime.Socks5NetWork), dara.StringValue(client.Socks5NetWork))),
  255. "maxIdleConns": dara.ForceInt(dara.Default(dara.IntValue(runtime.MaxIdleConns), dara.IntValue(client.MaxIdleConns))),
  256. "retryOptions": client.RetryOptions,
  257. "ignoreSSL": dara.BoolValue(runtime.IgnoreSSL),
  258. "httpClient": client.HttpClient,
  259. "tlsMinVersion": dara.StringValue(client.TlsMinVersion),
  260. })
  261. var retryPolicyContext *dara.RetryPolicyContext
  262. var request_ *dara.Request
  263. var response_ *dara.Response
  264. var _resultErr error
  265. retriesAttempted := int(0)
  266. retryPolicyContext = &dara.RetryPolicyContext{
  267. RetriesAttempted: retriesAttempted,
  268. }
  269. _result = make(map[string]interface{})
  270. for dara.ShouldRetry(_runtime.RetryOptions, retryPolicyContext) {
  271. _resultErr = nil
  272. _backoffDelayTime := dara.GetBackoffDelay(_runtime.RetryOptions, retryPolicyContext)
  273. dara.Sleep(_backoffDelayTime)
  274. request_ = dara.NewRequest()
  275. request_.Protocol = dara.String(dara.ToString(dara.Default(dara.StringValue(client.Protocol), dara.StringValue(protocol))))
  276. request_.Method = method
  277. request_.Pathname = pathname
  278. globalQueries := make(map[string]*string)
  279. globalHeaders := make(map[string]*string)
  280. if !dara.IsNil(client.GlobalParameters) {
  281. globalParams := client.GlobalParameters
  282. if !dara.IsNil(globalParams.Queries) {
  283. globalQueries = globalParams.Queries
  284. }
  285. if !dara.IsNil(globalParams.Headers) {
  286. globalHeaders = globalParams.Headers
  287. }
  288. }
  289. extendsHeaders := make(map[string]*string)
  290. extendsQueries := make(map[string]*string)
  291. if !dara.IsNil(runtime.ExtendsParameters) {
  292. extendsParameters := runtime.ExtendsParameters
  293. if !dara.IsNil(extendsParameters.Headers) {
  294. extendsHeaders = extendsParameters.Headers
  295. }
  296. if !dara.IsNil(extendsParameters.Queries) {
  297. extendsQueries = extendsParameters.Queries
  298. }
  299. }
  300. request_.Headers = dara.Merge(map[string]*string{
  301. "date": openapiutil.GetDateUTCString(),
  302. "host": client.Endpoint,
  303. "accept": dara.String("application/json"),
  304. "x-acs-signature-nonce": openapiutil.GetNonce(),
  305. "x-acs-signature-method": dara.String("HMAC-SHA1"),
  306. "x-acs-signature-version": dara.String("1.0"),
  307. "x-acs-version": version,
  308. "x-acs-action": action,
  309. "user-agent": openapiutil.GetUserAgent(client.UserAgent),
  310. }, globalHeaders,
  311. extendsHeaders,
  312. request.Headers)
  313. if !dara.IsNil(request.Body) {
  314. request_.Body = dara.ToReader(dara.Stringify(request.Body))
  315. request_.Headers["content-type"] = dara.String("application/json; charset=utf-8")
  316. }
  317. request_.Query = dara.Merge(globalQueries,
  318. extendsQueries)
  319. if !dara.IsNil(request.Query) {
  320. request_.Query = dara.Merge(request_.Query,
  321. request.Query)
  322. }
  323. if dara.StringValue(authType) != "Anonymous" {
  324. if dara.IsNil(client.Credential) {
  325. _err = &ClientError{
  326. Code: dara.String("InvalidCredentials"),
  327. Message: dara.String("Please set up the credentials correctly. If you are setting them through environment variables, please ensure that ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set correctly. See https://help.aliyun.com/zh/sdk/developer-reference/configure-the-alibaba-cloud-accesskey-environment-variable-on-linux-macos-and-windows-systems for more details."),
  328. }
  329. if dara.BoolValue(client.DisableSDKError) != true {
  330. _err = dara.TeaSDKError(_err)
  331. }
  332. return _result, _err
  333. }
  334. credentialModel, _err := client.Credential.GetCredential()
  335. if _err != nil {
  336. retriesAttempted++
  337. retryPolicyContext = &dara.RetryPolicyContext{
  338. RetriesAttempted: retriesAttempted,
  339. HttpRequest: request_,
  340. HttpResponse: response_,
  341. Exception: _err,
  342. }
  343. _resultErr = _err
  344. continue
  345. }
  346. if !dara.IsNil(credentialModel.ProviderName) {
  347. request_.Headers["x-acs-credentials-provider"] = credentialModel.ProviderName
  348. }
  349. credentialType := dara.StringValue(credentialModel.Type)
  350. if credentialType == "bearer" {
  351. bearerToken := dara.StringValue(credentialModel.BearerToken)
  352. request_.Headers["x-acs-bearer-token"] = dara.String(bearerToken)
  353. request_.Headers["x-acs-signature-type"] = dara.String("BEARERTOKEN")
  354. } else if credentialType == "id_token" {
  355. idToken := dara.StringValue(credentialModel.SecurityToken)
  356. request_.Headers["x-acs-zero-trust-idtoken"] = dara.String(idToken)
  357. } else {
  358. accessKeyId := dara.StringValue(credentialModel.AccessKeyId)
  359. accessKeySecret := dara.StringValue(credentialModel.AccessKeySecret)
  360. securityToken := dara.StringValue(credentialModel.SecurityToken)
  361. if !dara.IsNil(dara.String(securityToken)) && securityToken != "" {
  362. request_.Headers["x-acs-accesskey-id"] = dara.String(accessKeyId)
  363. request_.Headers["x-acs-security-token"] = dara.String(securityToken)
  364. }
  365. stringToSign := dara.StringValue(openapiutil.GetStringToSign(request_))
  366. request_.Headers["authorization"] = dara.String("acs " + accessKeyId + ":" + dara.StringValue(openapiutil.GetROASignature(dara.String(stringToSign), dara.String(accessKeySecret))))
  367. }
  368. }
  369. response_, _err = dara.DoRequestWithCtx(ctx, request_, _runtime)
  370. if _err != nil {
  371. retriesAttempted++
  372. retryPolicyContext = &dara.RetryPolicyContext{
  373. RetriesAttempted: retriesAttempted,
  374. HttpRequest: request_,
  375. HttpResponse: response_,
  376. Exception: _err,
  377. }
  378. _resultErr = _err
  379. continue
  380. }
  381. _result, _err = doROARequestWithCtx_opResponse(response_, client, bodyType)
  382. if _err != nil {
  383. retriesAttempted++
  384. retryPolicyContext = &dara.RetryPolicyContext{
  385. RetriesAttempted: retriesAttempted,
  386. HttpRequest: request_,
  387. HttpResponse: response_,
  388. Exception: _err,
  389. }
  390. _resultErr = _err
  391. continue
  392. }
  393. return _result, _err
  394. }
  395. if dara.BoolValue(client.DisableSDKError) != true {
  396. _resultErr = dara.TeaSDKError(_resultErr)
  397. }
  398. return _result, _resultErr
  399. }
  400. // Description:
  401. //
  402. // Encapsulate the request and invoke the network with form body
  403. //
  404. // @param action - api name
  405. //
  406. // @param version - product version
  407. //
  408. // @param protocol - http or https
  409. //
  410. // @param method - e.g. GET
  411. //
  412. // @param authType - authorization type e.g. AK
  413. //
  414. // @param pathname - pathname of every api
  415. //
  416. // @param bodyType - response body type e.g. String
  417. //
  418. // @param request - object of OpenApiRequest
  419. //
  420. // @param runtime - which controls some details of call api, such as retry times
  421. //
  422. // @return the response
  423. func (client *Client) DoROAFormRequestWithCtx(ctx context.Context, action *string, version *string, protocol *string, method *string, authType *string, pathname *string, bodyType *string, request *openapiutil.OpenApiRequest, runtime *dara.RuntimeOptions) (_result map[string]interface{}, _err error) {
  424. _runtime := dara.NewRuntimeObject(map[string]interface{}{
  425. "key": dara.ToString(dara.Default(dara.StringValue(runtime.Key), dara.StringValue(client.Key))),
  426. "cert": dara.ToString(dara.Default(dara.StringValue(runtime.Cert), dara.StringValue(client.Cert))),
  427. "ca": dara.ToString(dara.Default(dara.StringValue(runtime.Ca), dara.StringValue(client.Ca))),
  428. "readTimeout": dara.ForceInt(dara.Default(dara.IntValue(runtime.ReadTimeout), dara.IntValue(client.ReadTimeout))),
  429. "connectTimeout": dara.ForceInt(dara.Default(dara.IntValue(runtime.ConnectTimeout), dara.IntValue(client.ConnectTimeout))),
  430. "httpProxy": dara.ToString(dara.Default(dara.StringValue(runtime.HttpProxy), dara.StringValue(client.HttpProxy))),
  431. "httpsProxy": dara.ToString(dara.Default(dara.StringValue(runtime.HttpsProxy), dara.StringValue(client.HttpsProxy))),
  432. "noProxy": dara.ToString(dara.Default(dara.StringValue(runtime.NoProxy), dara.StringValue(client.NoProxy))),
  433. "socks5Proxy": dara.ToString(dara.Default(dara.StringValue(runtime.Socks5Proxy), dara.StringValue(client.Socks5Proxy))),
  434. "socks5NetWork": dara.ToString(dara.Default(dara.StringValue(runtime.Socks5NetWork), dara.StringValue(client.Socks5NetWork))),
  435. "maxIdleConns": dara.ForceInt(dara.Default(dara.IntValue(runtime.MaxIdleConns), dara.IntValue(client.MaxIdleConns))),
  436. "retryOptions": client.RetryOptions,
  437. "ignoreSSL": dara.BoolValue(runtime.IgnoreSSL),
  438. "httpClient": client.HttpClient,
  439. "tlsMinVersion": dara.StringValue(client.TlsMinVersion),
  440. })
  441. var retryPolicyContext *dara.RetryPolicyContext
  442. var request_ *dara.Request
  443. var response_ *dara.Response
  444. var _resultErr error
  445. retriesAttempted := int(0)
  446. retryPolicyContext = &dara.RetryPolicyContext{
  447. RetriesAttempted: retriesAttempted,
  448. }
  449. _result = make(map[string]interface{})
  450. for dara.ShouldRetry(_runtime.RetryOptions, retryPolicyContext) {
  451. _resultErr = nil
  452. _backoffDelayTime := dara.GetBackoffDelay(_runtime.RetryOptions, retryPolicyContext)
  453. dara.Sleep(_backoffDelayTime)
  454. request_ = dara.NewRequest()
  455. request_.Protocol = dara.String(dara.ToString(dara.Default(dara.StringValue(client.Protocol), dara.StringValue(protocol))))
  456. request_.Method = method
  457. request_.Pathname = pathname
  458. globalQueries := make(map[string]*string)
  459. globalHeaders := make(map[string]*string)
  460. if !dara.IsNil(client.GlobalParameters) {
  461. globalParams := client.GlobalParameters
  462. if !dara.IsNil(globalParams.Queries) {
  463. globalQueries = globalParams.Queries
  464. }
  465. if !dara.IsNil(globalParams.Headers) {
  466. globalHeaders = globalParams.Headers
  467. }
  468. }
  469. extendsHeaders := make(map[string]*string)
  470. extendsQueries := make(map[string]*string)
  471. if !dara.IsNil(runtime.ExtendsParameters) {
  472. extendsParameters := runtime.ExtendsParameters
  473. if !dara.IsNil(extendsParameters.Headers) {
  474. extendsHeaders = extendsParameters.Headers
  475. }
  476. if !dara.IsNil(extendsParameters.Queries) {
  477. extendsQueries = extendsParameters.Queries
  478. }
  479. }
  480. request_.Headers = dara.Merge(map[string]*string{
  481. "date": openapiutil.GetDateUTCString(),
  482. "host": client.Endpoint,
  483. "accept": dara.String("application/json"),
  484. "x-acs-signature-nonce": openapiutil.GetNonce(),
  485. "x-acs-signature-method": dara.String("HMAC-SHA1"),
  486. "x-acs-signature-version": dara.String("1.0"),
  487. "x-acs-version": version,
  488. "x-acs-action": action,
  489. "user-agent": openapiutil.GetUserAgent(client.UserAgent),
  490. }, globalHeaders,
  491. extendsHeaders,
  492. request.Headers)
  493. if !dara.IsNil(request.Body) {
  494. m := dara.ToMap(request.Body)
  495. request_.Body = dara.ToReader(openapiutil.ToForm(m))
  496. request_.Headers["content-type"] = dara.String("application/x-www-form-urlencoded")
  497. }
  498. request_.Query = dara.Merge(globalQueries,
  499. extendsQueries)
  500. if !dara.IsNil(request.Query) {
  501. request_.Query = dara.Merge(request_.Query,
  502. request.Query)
  503. }
  504. if dara.StringValue(authType) != "Anonymous" {
  505. if dara.IsNil(client.Credential) {
  506. _err = &ClientError{
  507. Code: dara.String("InvalidCredentials"),
  508. Message: dara.String("Please set up the credentials correctly. If you are setting them through environment variables, please ensure that ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set correctly. See https://help.aliyun.com/zh/sdk/developer-reference/configure-the-alibaba-cloud-accesskey-environment-variable-on-linux-macos-and-windows-systems for more details."),
  509. }
  510. if dara.BoolValue(client.DisableSDKError) != true {
  511. _err = dara.TeaSDKError(_err)
  512. }
  513. return _result, _err
  514. }
  515. credentialModel, _err := client.Credential.GetCredential()
  516. if _err != nil {
  517. retriesAttempted++
  518. retryPolicyContext = &dara.RetryPolicyContext{
  519. RetriesAttempted: retriesAttempted,
  520. HttpRequest: request_,
  521. HttpResponse: response_,
  522. Exception: _err,
  523. }
  524. _resultErr = _err
  525. continue
  526. }
  527. if !dara.IsNil(credentialModel.ProviderName) {
  528. request_.Headers["x-acs-credentials-provider"] = credentialModel.ProviderName
  529. }
  530. credentialType := dara.StringValue(credentialModel.Type)
  531. if credentialType == "bearer" {
  532. bearerToken := dara.StringValue(credentialModel.BearerToken)
  533. request_.Headers["x-acs-bearer-token"] = dara.String(bearerToken)
  534. request_.Headers["x-acs-signature-type"] = dara.String("BEARERTOKEN")
  535. } else if credentialType == "id_token" {
  536. idToken := dara.StringValue(credentialModel.SecurityToken)
  537. request_.Headers["x-acs-zero-trust-idtoken"] = dara.String(idToken)
  538. } else {
  539. accessKeyId := dara.StringValue(credentialModel.AccessKeyId)
  540. accessKeySecret := dara.StringValue(credentialModel.AccessKeySecret)
  541. securityToken := dara.StringValue(credentialModel.SecurityToken)
  542. if !dara.IsNil(dara.String(securityToken)) && securityToken != "" {
  543. request_.Headers["x-acs-accesskey-id"] = dara.String(accessKeyId)
  544. request_.Headers["x-acs-security-token"] = dara.String(securityToken)
  545. }
  546. stringToSign := dara.StringValue(openapiutil.GetStringToSign(request_))
  547. request_.Headers["authorization"] = dara.String("acs " + accessKeyId + ":" + dara.StringValue(openapiutil.GetROASignature(dara.String(stringToSign), dara.String(accessKeySecret))))
  548. }
  549. }
  550. response_, _err = dara.DoRequestWithCtx(ctx, request_, _runtime)
  551. if _err != nil {
  552. retriesAttempted++
  553. retryPolicyContext = &dara.RetryPolicyContext{
  554. RetriesAttempted: retriesAttempted,
  555. HttpRequest: request_,
  556. HttpResponse: response_,
  557. Exception: _err,
  558. }
  559. _resultErr = _err
  560. continue
  561. }
  562. _result, _err = doROAFormRequestWithCtx_opResponse(response_, client, bodyType)
  563. if _err != nil {
  564. retriesAttempted++
  565. retryPolicyContext = &dara.RetryPolicyContext{
  566. RetriesAttempted: retriesAttempted,
  567. HttpRequest: request_,
  568. HttpResponse: response_,
  569. Exception: _err,
  570. }
  571. _resultErr = _err
  572. continue
  573. }
  574. return _result, _err
  575. }
  576. if dara.BoolValue(client.DisableSDKError) != true {
  577. _resultErr = dara.TeaSDKError(_resultErr)
  578. }
  579. return _result, _resultErr
  580. }
  581. // Description:
  582. //
  583. // Encapsulate the request and invoke the network
  584. //
  585. // @param action - api name
  586. //
  587. // @param version - product version
  588. //
  589. // @param protocol - http or https
  590. //
  591. // @param method - e.g. GET
  592. //
  593. // @param authType - authorization type e.g. AK
  594. //
  595. // @param bodyType - response body type e.g. String
  596. //
  597. // @param request - object of OpenApiRequest
  598. //
  599. // @param runtime - which controls some details of call api, such as retry times
  600. //
  601. // @return the response
  602. func (client *Client) DoRequestWithCtx(ctx context.Context, params *openapiutil.Params, request *openapiutil.OpenApiRequest, runtime *dara.RuntimeOptions) (_result map[string]interface{}, _err error) {
  603. _runtime := dara.NewRuntimeObject(map[string]interface{}{
  604. "key": dara.ToString(dara.Default(dara.StringValue(runtime.Key), dara.StringValue(client.Key))),
  605. "cert": dara.ToString(dara.Default(dara.StringValue(runtime.Cert), dara.StringValue(client.Cert))),
  606. "ca": dara.ToString(dara.Default(dara.StringValue(runtime.Ca), dara.StringValue(client.Ca))),
  607. "readTimeout": dara.ForceInt(dara.Default(dara.IntValue(runtime.ReadTimeout), dara.IntValue(client.ReadTimeout))),
  608. "connectTimeout": dara.ForceInt(dara.Default(dara.IntValue(runtime.ConnectTimeout), dara.IntValue(client.ConnectTimeout))),
  609. "httpProxy": dara.ToString(dara.Default(dara.StringValue(runtime.HttpProxy), dara.StringValue(client.HttpProxy))),
  610. "httpsProxy": dara.ToString(dara.Default(dara.StringValue(runtime.HttpsProxy), dara.StringValue(client.HttpsProxy))),
  611. "noProxy": dara.ToString(dara.Default(dara.StringValue(runtime.NoProxy), dara.StringValue(client.NoProxy))),
  612. "socks5Proxy": dara.ToString(dara.Default(dara.StringValue(runtime.Socks5Proxy), dara.StringValue(client.Socks5Proxy))),
  613. "socks5NetWork": dara.ToString(dara.Default(dara.StringValue(runtime.Socks5NetWork), dara.StringValue(client.Socks5NetWork))),
  614. "maxIdleConns": dara.ForceInt(dara.Default(dara.IntValue(runtime.MaxIdleConns), dara.IntValue(client.MaxIdleConns))),
  615. "retryOptions": client.RetryOptions,
  616. "ignoreSSL": dara.BoolValue(runtime.IgnoreSSL),
  617. "httpClient": client.HttpClient,
  618. "tlsMinVersion": dara.StringValue(client.TlsMinVersion),
  619. })
  620. var retryPolicyContext *dara.RetryPolicyContext
  621. var request_ *dara.Request
  622. var response_ *dara.Response
  623. var _resultErr error
  624. retriesAttempted := int(0)
  625. retryPolicyContext = &dara.RetryPolicyContext{
  626. RetriesAttempted: retriesAttempted,
  627. }
  628. _result = make(map[string]interface{})
  629. for dara.ShouldRetry(_runtime.RetryOptions, retryPolicyContext) {
  630. _resultErr = nil
  631. _backoffDelayTime := dara.GetBackoffDelay(_runtime.RetryOptions, retryPolicyContext)
  632. dara.Sleep(_backoffDelayTime)
  633. request_ = dara.NewRequest()
  634. request_.Protocol = dara.String(dara.ToString(dara.Default(dara.StringValue(client.Protocol), dara.StringValue(params.Protocol))))
  635. request_.Method = params.Method
  636. request_.Pathname = params.Pathname
  637. globalQueries := make(map[string]*string)
  638. globalHeaders := make(map[string]*string)
  639. if !dara.IsNil(client.GlobalParameters) {
  640. globalParams := client.GlobalParameters
  641. if !dara.IsNil(globalParams.Queries) {
  642. globalQueries = globalParams.Queries
  643. }
  644. if !dara.IsNil(globalParams.Headers) {
  645. globalHeaders = globalParams.Headers
  646. }
  647. }
  648. extendsHeaders := make(map[string]*string)
  649. extendsQueries := make(map[string]*string)
  650. if !dara.IsNil(runtime.ExtendsParameters) {
  651. extendsParameters := runtime.ExtendsParameters
  652. if !dara.IsNil(extendsParameters.Headers) {
  653. extendsHeaders = extendsParameters.Headers
  654. }
  655. if !dara.IsNil(extendsParameters.Queries) {
  656. extendsQueries = extendsParameters.Queries
  657. }
  658. }
  659. request_.Query = dara.Merge(globalQueries,
  660. extendsQueries,
  661. request.Query)
  662. // endpoint is setted in product client
  663. request_.Headers = dara.Merge(map[string]*string{
  664. "host": client.Endpoint,
  665. "x-acs-version": params.Version,
  666. "x-acs-action": params.Action,
  667. "user-agent": openapiutil.GetUserAgent(client.UserAgent),
  668. "x-acs-date": openapiutil.GetTimestamp(),
  669. "x-acs-signature-nonce": openapiutil.GetNonce(),
  670. "accept": dara.String("application/json"),
  671. }, globalHeaders,
  672. extendsHeaders,
  673. request.Headers)
  674. if dara.StringValue(params.Style) == "RPC" {
  675. headers, _err := client.GetRpcHeaders()
  676. if _err != nil {
  677. retriesAttempted++
  678. retryPolicyContext = &dara.RetryPolicyContext{
  679. RetriesAttempted: retriesAttempted,
  680. HttpRequest: request_,
  681. HttpResponse: response_,
  682. Exception: _err,
  683. }
  684. _resultErr = _err
  685. continue
  686. }
  687. if !dara.IsNil(headers) {
  688. request_.Headers = dara.Merge(request_.Headers,
  689. headers)
  690. }
  691. }
  692. signatureAlgorithm := dara.ToString(dara.Default(dara.StringValue(client.SignatureAlgorithm), "ACS3-HMAC-SHA256"))
  693. hashedRequestPayload := openapiutil.Hash(dara.BytesFromString("", "utf-8"), dara.String(signatureAlgorithm))
  694. if !dara.IsNil(request.Stream) {
  695. tmp, _err := dara.ReadAsBytes(request.Stream)
  696. if _err != nil {
  697. retriesAttempted++
  698. retryPolicyContext = &dara.RetryPolicyContext{
  699. RetriesAttempted: retriesAttempted,
  700. HttpRequest: request_,
  701. HttpResponse: response_,
  702. Exception: _err,
  703. }
  704. _resultErr = _err
  705. continue
  706. }
  707. hashedRequestPayload = openapiutil.Hash(tmp, dara.String(signatureAlgorithm))
  708. request_.Body = dara.ToReader(tmp)
  709. request_.Headers["content-type"] = dara.String("application/octet-stream")
  710. } else {
  711. if !dara.IsNil(request.Body) {
  712. if dara.StringValue(params.ReqBodyType) == "byte" {
  713. byteObj := []byte(dara.ToString(request.Body))
  714. hashedRequestPayload = openapiutil.Hash(byteObj, dara.String(signatureAlgorithm))
  715. request_.Body = dara.ToReader(byteObj)
  716. } else if dara.StringValue(params.ReqBodyType) == "json" {
  717. jsonObj := dara.Stringify(request.Body)
  718. hashedRequestPayload = openapiutil.Hash(dara.ToBytes(jsonObj, "utf8"), dara.String(signatureAlgorithm))
  719. request_.Body = dara.ToReader(dara.String(jsonObj))
  720. request_.Headers["content-type"] = dara.String("application/json; charset=utf-8")
  721. } else {
  722. m := dara.ToMap(request.Body)
  723. formObj := dara.StringValue(openapiutil.ToForm(m))
  724. hashedRequestPayload = openapiutil.Hash(dara.ToBytes(formObj, "utf8"), dara.String(signatureAlgorithm))
  725. request_.Body = dara.ToReader(dara.String(formObj))
  726. request_.Headers["content-type"] = dara.String("application/x-www-form-urlencoded")
  727. }
  728. }
  729. }
  730. request_.Headers["x-acs-content-sha256"] = dara.String(hex.EncodeToString(hashedRequestPayload))
  731. if dara.StringValue(params.AuthType) != "Anonymous" {
  732. if dara.IsNil(client.Credential) {
  733. _err = &ClientError{
  734. Code: dara.String("InvalidCredentials"),
  735. Message: dara.String("Please set up the credentials correctly. If you are setting them through environment variables, please ensure that ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET are set correctly. See https://help.aliyun.com/zh/sdk/developer-reference/configure-the-alibaba-cloud-accesskey-environment-variable-on-linux-macos-and-windows-systems for more details."),
  736. }
  737. if dara.BoolValue(client.DisableSDKError) != true {
  738. _err = dara.TeaSDKError(_err)
  739. }
  740. return _result, _err
  741. }
  742. credentialModel, _err := client.Credential.GetCredential()
  743. if _err != nil {
  744. retriesAttempted++
  745. retryPolicyContext = &dara.RetryPolicyContext{
  746. RetriesAttempted: retriesAttempted,
  747. HttpRequest: request_,
  748. HttpResponse: response_,
  749. Exception: _err,
  750. }
  751. _resultErr = _err
  752. continue
  753. }
  754. if !dara.IsNil(credentialModel.ProviderName) {
  755. request_.Headers["x-acs-credentials-provider"] = credentialModel.ProviderName
  756. }
  757. authType := dara.StringValue(credentialModel.Type)
  758. if authType == "bearer" {
  759. bearerToken := dara.StringValue(credentialModel.BearerToken)
  760. request_.Headers["x-acs-bearer-token"] = dara.String(bearerToken)
  761. if dara.StringValue(params.Style) == "RPC" {
  762. request_.Query["SignatureType"] = dara.String("BEARERTOKEN")
  763. } else {
  764. request_.Headers["x-acs-signature-type"] = dara.String("BEARERTOKEN")
  765. }
  766. } else if authType == "id_token" {
  767. idToken := dara.StringValue(credentialModel.SecurityToken)
  768. request_.Headers["x-acs-zero-trust-idtoken"] = dara.String(idToken)
  769. } else {
  770. accessKeyId := dara.StringValue(credentialModel.AccessKeyId)
  771. accessKeySecret := dara.StringValue(credentialModel.AccessKeySecret)
  772. securityToken := dara.StringValue(credentialModel.SecurityToken)
  773. if !dara.IsNil(dara.String(securityToken)) && securityToken != "" {
  774. request_.Headers["x-acs-accesskey-id"] = dara.String(accessKeyId)
  775. request_.Headers["x-acs-security-token"] = dara.String(securityToken)
  776. }
  777. request_.Headers["Authorization"] = openapiutil.GetAuthorization(request_, dara.String(signatureAlgorithm), dara.String(hex.EncodeToString(hashedRequestPayload)), dara.String(accessKeyId), dara.String(accessKeySecret))
  778. }
  779. }
  780. response_, _err = dara.DoRequestWithCtx(ctx, request_, _runtime)
  781. if _err != nil {
  782. retriesAttempted++
  783. retryPolicyContext = &dara.RetryPolicyContext{
  784. RetriesAttempted: retriesAttempted,
  785. HttpRequest: request_,
  786. HttpResponse: response_,
  787. Exception: _err,
  788. }
  789. _resultErr = _err
  790. continue
  791. }
  792. _result, _err = doRequestWithCtx_opResponse(response_, client, params)
  793. if _err != nil {
  794. retriesAttempted++
  795. retryPolicyContext = &dara.RetryPolicyContext{
  796. RetriesAttempted: retriesAttempted,
  797. HttpRequest: request_,
  798. HttpResponse: response_,
  799. Exception: _err,
  800. }
  801. _resultErr = _err
  802. continue
  803. }
  804. return _result, _err
  805. }
  806. if dara.BoolValue(client.DisableSDKError) != true {
  807. _resultErr = dara.TeaSDKError(_resultErr)
  808. }
  809. return _result, _resultErr
  810. }
  811. // Description:
  812. //
  813. // Encapsulate the request and invoke the network
  814. //
  815. // @param action - api name
  816. //
  817. // @param version - product version
  818. //
  819. // @param protocol - http or https
  820. //
  821. // @param method - e.g. GET
  822. //
  823. // @param authType - authorization type e.g. AK
  824. //
  825. // @param bodyType - response body type e.g. String
  826. //
  827. // @param request - object of OpenApiRequest
  828. //
  829. // @param runtime - which controls some details of call api, such as retry times
  830. //
  831. // @return the response
  832. func (client *Client) ExecuteWithCtx(ctx context.Context, params *openapiutil.Params, request *openapiutil.OpenApiRequest, runtime *dara.RuntimeOptions) (_result map[string]interface{}, _err error) {
  833. _runtime := dara.NewRuntimeObject(map[string]interface{}{
  834. "key": dara.ToString(dara.Default(dara.StringValue(runtime.Key), dara.StringValue(client.Key))),
  835. "cert": dara.ToString(dara.Default(dara.StringValue(runtime.Cert), dara.StringValue(client.Cert))),
  836. "ca": dara.ToString(dara.Default(dara.StringValue(runtime.Ca), dara.StringValue(client.Ca))),
  837. "readTimeout": dara.ForceInt(dara.Default(dara.IntValue(runtime.ReadTimeout), dara.IntValue(client.ReadTimeout))),
  838. "connectTimeout": dara.ForceInt(dara.Default(dara.IntValue(runtime.ConnectTimeout), dara.IntValue(client.ConnectTimeout))),
  839. "httpProxy": dara.ToString(dara.Default(dara.StringValue(runtime.HttpProxy), dara.StringValue(client.HttpProxy))),
  840. "httpsProxy": dara.ToString(dara.Default(dara.StringValue(runtime.HttpsProxy), dara.StringValue(client.HttpsProxy))),
  841. "noProxy": dara.ToString(dara.Default(dara.StringValue(runtime.NoProxy), dara.StringValue(client.NoProxy))),
  842. "socks5Proxy": dara.ToString(dara.Default(dara.StringValue(runtime.Socks5Proxy), dara.StringValue(client.Socks5Proxy))),
  843. "socks5NetWork": dara.ToString(dara.Default(dara.StringValue(runtime.Socks5NetWork), dara.StringValue(client.Socks5NetWork))),
  844. "maxIdleConns": dara.ForceInt(dara.Default(dara.IntValue(runtime.MaxIdleConns), dara.IntValue(client.MaxIdleConns))),
  845. "retryOptions": client.RetryOptions,
  846. "ignoreSSL": dara.BoolValue(runtime.IgnoreSSL),
  847. "httpClient": client.HttpClient,
  848. "tlsMinVersion": dara.StringValue(client.TlsMinVersion),
  849. "disableHttp2": dara.ForceBoolean(dara.Default(dara.BoolValue(client.DisableHttp2), false)),
  850. })
  851. var retryPolicyContext *dara.RetryPolicyContext
  852. var request_ *dara.Request
  853. var response_ *dara.Response
  854. var _resultErr error
  855. retriesAttempted := int(0)
  856. retryPolicyContext = &dara.RetryPolicyContext{
  857. RetriesAttempted: retriesAttempted,
  858. }
  859. _result = make(map[string]interface{})
  860. for dara.ShouldRetry(_runtime.RetryOptions, retryPolicyContext) {
  861. _resultErr = nil
  862. _backoffDelayTime := dara.GetBackoffDelay(_runtime.RetryOptions, retryPolicyContext)
  863. dara.Sleep(_backoffDelayTime)
  864. request_ = dara.NewRequest()
  865. // spi = new Gateway();//Gateway implements SPI,这一步在产品 SDK 中实例化
  866. headers, _err := client.GetRpcHeaders()
  867. if _err != nil {
  868. retriesAttempted++
  869. retryPolicyContext = &dara.RetryPolicyContext{
  870. RetriesAttempted: retriesAttempted,
  871. HttpRequest: request_,
  872. HttpResponse: response_,
  873. Exception: _err,
  874. }
  875. _resultErr = _err
  876. continue
  877. }
  878. globalQueries := make(map[string]*string)
  879. globalHeaders := make(map[string]*string)
  880. if !dara.IsNil(client.GlobalParameters) {
  881. globalParams := client.GlobalParameters
  882. if !dara.IsNil(globalParams.Queries) {
  883. globalQueries = globalParams.Queries
  884. }
  885. if !dara.IsNil(globalParams.Headers) {
  886. globalHeaders = globalParams.Headers
  887. }
  888. }
  889. extendsHeaders := make(map[string]*string)
  890. extendsQueries := make(map[string]*string)
  891. if !dara.IsNil(runtime.ExtendsParameters) {
  892. extendsParameters := runtime.ExtendsParameters
  893. if !dara.IsNil(extendsParameters.Headers) {
  894. extendsHeaders = extendsParameters.Headers
  895. }
  896. if !dara.IsNil(extendsParameters.Queries) {
  897. extendsQueries = extendsParameters.Queries
  898. }
  899. }
  900. requestContext := &spi.InterceptorContextRequest{
  901. Headers: dara.Merge(globalHeaders,
  902. extendsHeaders,
  903. request.Headers,
  904. headers),
  905. Query: dara.Merge(globalQueries,
  906. extendsQueries,
  907. request.Query),
  908. Body: request.Body,
  909. Stream: request.Stream,
  910. HostMap: request.HostMap,
  911. Pathname: params.Pathname,
  912. ProductId: client.ProductId,
  913. Action: params.Action,
  914. Version: params.Version,
  915. Protocol: dara.String(dara.ToString(dara.Default(dara.StringValue(client.Protocol), dara.StringValue(params.Protocol)))),
  916. Method: dara.String(dara.ToString(dara.Default(dara.StringValue(client.Method), dara.StringValue(params.Method)))),
  917. AuthType: params.AuthType,
  918. BodyType: params.BodyType,
  919. ReqBodyType: params.ReqBodyType,
  920. Style: params.Style,
  921. Credential: client.Credential,
  922. SignatureVersion: client.SignatureVersion,
  923. SignatureAlgorithm: client.SignatureAlgorithm,
  924. UserAgent: openapiutil.GetUserAgent(client.UserAgent),
  925. }
  926. configurationContext := &spi.InterceptorContextConfiguration{
  927. RegionId: client.RegionId,
  928. Endpoint: dara.String(dara.ToString(dara.Default(dara.StringValue(request.EndpointOverride), dara.StringValue(client.Endpoint)))),
  929. EndpointRule: client.EndpointRule,
  930. EndpointMap: client.EndpointMap,
  931. EndpointType: client.EndpointType,
  932. Network: client.Network,
  933. Suffix: client.Suffix,
  934. }
  935. interceptorContext := &spi.InterceptorContext{
  936. Request: requestContext,
  937. Configuration: configurationContext,
  938. }
  939. attributeMap := &spi.AttributeMap{}
  940. if !dara.IsNil(client.AttributeMap) {
  941. attributeMap = client.AttributeMap
  942. }
  943. // 1. spi.modifyConfiguration(context: SPI.InterceptorContext, attributeMap: SPI.AttributeMap);
  944. _err = client.Spi.ModifyConfiguration(interceptorContext, attributeMap)
  945. if _err != nil {
  946. retriesAttempted++
  947. retryPolicyContext = &dara.RetryPolicyContext{
  948. RetriesAttempted: retriesAttempted,
  949. HttpRequest: request_,
  950. HttpResponse: response_,
  951. Exception: _err,
  952. }
  953. _resultErr = _err
  954. continue
  955. }
  956. // 2. spi.modifyRequest(context: SPI.InterceptorContext, attributeMap: SPI.AttributeMap);
  957. _err = client.Spi.ModifyRequest(interceptorContext, attributeMap)
  958. if _err != nil {
  959. retriesAttempted++
  960. retryPolicyContext = &dara.RetryPolicyContext{
  961. RetriesAttempted: retriesAttempted,
  962. HttpRequest: request_,
  963. HttpResponse: response_,
  964. Exception: _err,
  965. }
  966. _resultErr = _err
  967. continue
  968. }
  969. request_.Protocol = interceptorContext.Request.Protocol
  970. request_.Method = interceptorContext.Request.Method
  971. request_.Pathname = interceptorContext.Request.Pathname
  972. request_.Query = interceptorContext.Request.Query
  973. request_.Body = interceptorContext.Request.Stream
  974. request_.Headers = interceptorContext.Request.Headers
  975. response_, _err = dara.DoRequestWithCtx(ctx, request_, _runtime)
  976. if _err != nil {
  977. retriesAttempted++
  978. retryPolicyContext = &dara.RetryPolicyContext{
  979. RetriesAttempted: retriesAttempted,
  980. HttpRequest: request_,
  981. HttpResponse: response_,
  982. Exception: _err,
  983. }
  984. _resultErr = _err
  985. continue
  986. }
  987. responseContext := &spi.InterceptorContextResponse{
  988. StatusCode: response_.StatusCode,
  989. Headers: response_.Headers,
  990. Body: response_.Body,
  991. }
  992. interceptorContext.Response = responseContext
  993. // 3. spi.modifyResponse(context: SPI.InterceptorContext, attributeMap: SPI.AttributeMap);
  994. _err = client.Spi.ModifyResponse(interceptorContext, attributeMap)
  995. if _err != nil {
  996. retriesAttempted++
  997. retryPolicyContext = &dara.RetryPolicyContext{
  998. RetriesAttempted: retriesAttempted,
  999. HttpRequest: request_,
  1000. HttpResponse: response_,
  1001. Exception: _err,
  1002. }
  1003. _resultErr = _err
  1004. continue
  1005. }
  1006. resp := map[string]interface{}{
  1007. "headers": interceptorContext.Response.Headers,
  1008. "statusCode": dara.IntValue(interceptorContext.Response.StatusCode),
  1009. "body": interceptorContext.Response.DeserializedBody,
  1010. }
  1011. _result = resp
  1012. return _result, _err
  1013. }
  1014. if dara.BoolValue(client.DisableSDKError) != true {
  1015. _resultErr = dara.TeaSDKError(_resultErr)
  1016. }
  1017. return _result, _resultErr
  1018. }
  1019. func (client *Client) CallSSEApiWithCtx(ctx context.Context, params *openapiutil.Params, request *openapiutil.OpenApiRequest, runtime *dara.RuntimeOptions, _yield chan *SSEResponse, _yieldErr chan error) {
  1020. defer close(_yield)
  1021. defer close(_yieldErr)
  1022. _runtime := dara.NewRuntimeObject(map[string]interface{}{
  1023. "key": dara.ToString(dara.Default(dara.StringValue(runtime.Key), dara.StringValue(client.Key))),
  1024. "cert": dara.ToString(dara.Default(dara.StringValue(runtime.Cert), dara.StringValue(client.Cert))),
  1025. "ca": dara.ToString(dara.Default(dara.StringValue(runtime.Ca), dara.StringValue(client.Ca))),
  1026. "readTimeout": dara.ForceInt(dara.Default(dara.IntValue(runtime.ReadTimeout), dara.IntValue(client.ReadTimeout))),
  1027. "connectTimeout": dara.ForceInt(dara.Default(dara.IntValue(runtime.ConnectTimeout), dara.IntValue(client.ConnectTimeout))),
  1028. "httpProxy": dara.ToString(dara.Default(dara.StringValue(runtime.HttpProxy), dara.StringValue(client.HttpProxy))),
  1029. "httpsProxy": dara.ToString(dara.Default(dara.StringValue(runtime.HttpsProxy), dara.StringValue(client.HttpsProxy))),
  1030. "noProxy": dara.ToString(dara.Default(dara.StringValue(runtime.NoProxy), dara.StringValue(client.NoProxy))),
  1031. "socks5Proxy": dara.ToString(dara.Default(dara.StringValue(runtime.Socks5Proxy), dara.StringValue(client.Socks5Proxy))),
  1032. "socks5NetWork": dara.ToString(dara.Default(dara.StringValue(runtime.Socks5NetWork), dara.StringValue(client.Socks5NetWork))),
  1033. "maxIdleConns": dara.ForceInt(dara.Default(dara.IntValue(runtime.MaxIdleConns), dara.IntValue(client.MaxIdleConns))),
  1034. "retryOptions": client.RetryOptions,
  1035. "ignoreSSL": dara.BoolValue(runtime.IgnoreSSL),
  1036. "httpClient": client.HttpClient,
  1037. "tlsMinVersion": dara.StringValue(client.TlsMinVersion),
  1038. })
  1039. var retryPolicyContext *dara.RetryPolicyContext
  1040. var request_ *dara.Request
  1041. var response_ *dara.Response
  1042. var _resultErr error
  1043. var _err error
  1044. retriesAttempted := int(0)
  1045. retryPolicyContext = &dara.RetryPolicyContext{
  1046. RetriesAttempted: retriesAttempted,
  1047. }
  1048. for dara.ShouldRetry(_runtime.RetryOptions, retryPolicyContext) {
  1049. _resultErr = nil
  1050. _backoffDelayTime := dara.GetBackoffDelay(_runtime.RetryOptions, retryPolicyContext)
  1051. dara.Sleep(_backoffDelayTime)
  1052. request_ = dara.NewRequest()
  1053. request_.Protocol = dara.String(dara.ToString(dara.Default(dara.StringValue(client.Protocol), dara.StringValue(params.Protocol))))
  1054. request_.Method = params.Method
  1055. request_.Pathname = params.Pathname
  1056. globalQueries := make(map[string]*string)
  1057. globalHeaders := make(map[string]*string)
  1058. if !dara.IsNil(client.GlobalParameters) {
  1059. globalParams := client.GlobalParameters
  1060. if !dara.IsNil(globalParams.Queries) {
  1061. globalQueries = globalParams.Queries
  1062. }
  1063. if !dara.IsNil(globalParams.Headers) {
  1064. globalHeaders = globalParams.Headers
  1065. }
  1066. }
  1067. extendsHeaders := make(map[string]*string)
  1068. extendsQueries := make(map[string]*string)
  1069. if !dara.IsNil(runtime.ExtendsParameters) {
  1070. extendsParameters := runtime.ExtendsParameters
  1071. if !dara.IsNil(extendsParameters.Headers) {
  1072. extendsHeaders = extendsParameters.Headers
  1073. }
  1074. if !dara.IsNil(extendsParameters.Queries) {
  1075. extendsQueries = extendsParameters.Queries
  1076. }
  1077. }
  1078. request_.Query = dara.Merge(globalQueries,
  1079. extendsQueries,
  1080. request.Query)
  1081. // endpoint is setted in product client
  1082. request_.Headers = dara.Merge(map[string]*string{
  1083. "host": client.Endpoint,
  1084. "x-acs-version": params.Version,
  1085. "x-acs-action": params.Action,
  1086. "user-agent": openapiutil.GetUserAgent(client.UserAgent),
  1087. "x-acs-date": openapiutil.GetTimestamp(),
  1088. "x-acs-signature-nonce": openapiutil.GetNonce(),
  1089. "accept": dara.String("application/json"),
  1090. }, extendsHeaders,
  1091. globalHeaders,
  1092. request.Headers)
  1093. if dara.StringValue(params.Style) == "RPC" {
  1094. headers, _err := client.GetRpcHeaders()
  1095. if _err != nil {
  1096. retriesAttempted++
  1097. retryPolicyContext = &dara.RetryPolicyContext{
  1098. RetriesAttempted: retriesAttempted,
  1099. HttpRequest: request_,
  1100. HttpResponse: response_,
  1101. Exception: _err,
  1102. }
  1103. _resultErr = _err
  1104. continue
  1105. }
  1106. if !dara.IsNil(headers) {
  1107. request_.Headers = dara.Merge(request_.Headers,
  1108. headers)
  1109. }
  1110. }
  1111. signatureAlgorithm := dara.ToString(dara.Default(dara.StringValue(client.SignatureAlgorithm), "ACS3-HMAC-SHA256"))
  1112. hashedRequestPayload := openapiutil.Hash(dara.BytesFromString("", "utf-8"), dara.String(signatureAlgorithm))
  1113. if !dara.IsNil(request.Stream) {
  1114. tmp, _err := dara.ReadAsBytes(request.Stream)
  1115. if _err != nil {
  1116. retriesAttempted++
  1117. retryPolicyContext = &dara.RetryPolicyContext{
  1118. RetriesAttempted: retriesAttempted,
  1119. HttpRequest: request_,
  1120. HttpResponse: response_,
  1121. Exception: _err,
  1122. }
  1123. _resultErr = _err
  1124. continue
  1125. }
  1126. hashedRequestPayload = openapiutil.Hash(tmp, dara.String(signatureAlgorithm))
  1127. request_.Body = dara.ToReader(tmp)
  1128. request_.Headers["content-type"] = dara.String("application/octet-stream")
  1129. } else {
  1130. if !dara.IsNil(request.Body) {
  1131. if dara.StringValue(params.ReqBodyType) == "byte" {
  1132. byteObj := []byte(dara.ToString(request.Body))
  1133. hashedRequestPayload = openapiutil.Hash(byteObj, dara.String(signatureAlgorithm))
  1134. request_.Body = dara.ToReader(byteObj)
  1135. } else if dara.StringValue(params.ReqBodyType) == "json" {
  1136. jsonObj := dara.Stringify(request.Body)
  1137. hashedRequestPayload = openapiutil.Hash(dara.ToBytes(jsonObj, "utf8"), dara.String(signatureAlgorithm))
  1138. request_.Body = dara.ToReader(dara.String(jsonObj))
  1139. request_.Headers["content-type"] = dara.String("application/json; charset=utf-8")
  1140. } else {
  1141. m := dara.ToMap(request.Body)
  1142. formObj := dara.StringValue(openapiutil.ToForm(m))
  1143. hashedRequestPayload = openapiutil.Hash(dara.ToBytes(formObj, "utf8"), dara.String(signatureAlgorithm))
  1144. request_.Body = dara.ToReader(dara.String(formObj))
  1145. request_.Headers["content-type"] = dara.String("application/x-www-form-urlencoded")
  1146. }
  1147. }
  1148. }
  1149. request_.Headers["x-acs-content-sha256"] = dara.String(hex.EncodeToString(hashedRequestPayload))
  1150. if dara.StringValue(params.AuthType) != "Anonymous" {
  1151. credentialModel, _err := client.Credential.GetCredential()
  1152. if _err != nil {
  1153. retriesAttempted++
  1154. retryPolicyContext = &dara.RetryPolicyContext{
  1155. RetriesAttempted: retriesAttempted,
  1156. HttpRequest: request_,
  1157. HttpResponse: response_,
  1158. Exception: _err,
  1159. }
  1160. _resultErr = _err
  1161. continue
  1162. }
  1163. if !dara.IsNil(credentialModel.ProviderName) {
  1164. request_.Headers["x-acs-credentials-provider"] = credentialModel.ProviderName
  1165. }
  1166. authType := dara.StringValue(credentialModel.Type)
  1167. if authType == "bearer" {
  1168. bearerToken := dara.StringValue(credentialModel.BearerToken)
  1169. request_.Headers["x-acs-bearer-token"] = dara.String(bearerToken)
  1170. } else if authType == "id_token" {
  1171. idToken := dara.StringValue(credentialModel.SecurityToken)
  1172. request_.Headers["x-acs-zero-trust-idtoken"] = dara.String(idToken)
  1173. } else {
  1174. accessKeyId := dara.StringValue(credentialModel.AccessKeyId)
  1175. accessKeySecret := dara.StringValue(credentialModel.AccessKeySecret)
  1176. securityToken := dara.StringValue(credentialModel.SecurityToken)
  1177. if !dara.IsNil(dara.String(securityToken)) && securityToken != "" {
  1178. request_.Headers["x-acs-accesskey-id"] = dara.String(accessKeyId)
  1179. request_.Headers["x-acs-security-token"] = dara.String(securityToken)
  1180. }
  1181. request_.Headers["Authorization"] = openapiutil.GetAuthorization(request_, dara.String(signatureAlgorithm), dara.String(hex.EncodeToString(hashedRequestPayload)), dara.String(accessKeyId), dara.String(accessKeySecret))
  1182. }
  1183. }
  1184. response_, _err = dara.DoRequestWithCtx(ctx, request_, _runtime)
  1185. if _err != nil {
  1186. retriesAttempted++
  1187. retryPolicyContext = &dara.RetryPolicyContext{
  1188. RetriesAttempted: retriesAttempted,
  1189. HttpRequest: request_,
  1190. HttpResponse: response_,
  1191. Exception: _err,
  1192. }
  1193. _resultErr = _err
  1194. continue
  1195. }
  1196. callSSEApiWithCtx_opResponse(ctx, _yield, _yieldErr, response_)
  1197. _err = <-_yieldErr
  1198. if _err != nil {
  1199. retriesAttempted++
  1200. retryPolicyContext = &dara.RetryPolicyContext{
  1201. RetriesAttempted: retriesAttempted,
  1202. HttpRequest: request_,
  1203. HttpResponse: response_,
  1204. Exception: _err,
  1205. }
  1206. _resultErr = _err
  1207. continue
  1208. }
  1209. return
  1210. }
  1211. _yieldErr <- _resultErr
  1212. return
  1213. }
  1214. func (client *Client) CallApiWithCtx(ctx context.Context, params *openapiutil.Params, request *openapiutil.OpenApiRequest, runtime *dara.RuntimeOptions) (_result map[string]interface{}, _err error) {
  1215. if dara.IsNil(params) {
  1216. _err = &ClientError{
  1217. Code: dara.String("ParameterMissing"),
  1218. Message: dara.String("'params' can not be unset"),
  1219. }
  1220. return _result, _err
  1221. }
  1222. if dara.IsNil(client.SignatureVersion) || dara.StringValue(client.SignatureVersion) != "v4" {
  1223. if dara.IsNil(client.SignatureAlgorithm) || dara.StringValue(client.SignatureAlgorithm) != "v2" {
  1224. _body, _err := client.DoRequestWithCtx(ctx, params, request, runtime)
  1225. if _err != nil {
  1226. return _result, _err
  1227. }
  1228. _result = _body
  1229. return _result, _err
  1230. } else if (dara.StringValue(params.Style) == "ROA") && (dara.StringValue(params.ReqBodyType) == "json") {
  1231. _body, _err := client.DoROARequestWithCtx(ctx, params.Action, params.Version, params.Protocol, params.Method, params.AuthType, params.Pathname, params.BodyType, request, runtime)
  1232. if _err != nil {
  1233. return _result, _err
  1234. }
  1235. _result = _body
  1236. return _result, _err
  1237. } else if dara.StringValue(params.Style) == "ROA" {
  1238. _body, _err := client.DoROAFormRequestWithCtx(ctx, params.Action, params.Version, params.Protocol, params.Method, params.AuthType, params.Pathname, params.BodyType, request, runtime)
  1239. if _err != nil {
  1240. return _result, _err
  1241. }
  1242. _result = _body
  1243. return _result, _err
  1244. } else {
  1245. _body, _err := client.DoRPCRequestWithCtx(ctx, params.Action, params.Version, params.Protocol, params.Method, params.AuthType, params.BodyType, request, runtime)
  1246. if _err != nil {
  1247. return _result, _err
  1248. }
  1249. _result = _body
  1250. return _result, _err
  1251. }
  1252. } else {
  1253. _body, _err := client.ExecuteWithCtx(ctx, params, request, runtime)
  1254. if _err != nil {
  1255. return _result, _err
  1256. }
  1257. _result = _body
  1258. return _result, _err
  1259. }
  1260. }
  1261. func doRPCRequestWithCtx_opResponse(response_ *dara.Response, client *Client, bodyType *string) (_result map[string]interface{}, _err error) {
  1262. if (dara.IntValue(response_.StatusCode) >= 400) && (dara.IntValue(response_.StatusCode) < 600) {
  1263. _res, _err := dara.ReadAsJSON(response_.Body)
  1264. if _err != nil {
  1265. return _result, _err
  1266. }
  1267. err := dara.ToMap(_res)
  1268. requestId := dara.Default(err["RequestId"], err["requestId"])
  1269. code := dara.Default(err["Code"], err["code"])
  1270. if (dara.ToString(code) == "Throttling") || (dara.ToString(code) == "Throttling.User") || (dara.ToString(code) == "Throttling.Api") {
  1271. _err = &ThrottlingError{
  1272. StatusCode: response_.StatusCode,
  1273. Code: dara.String(dara.ToString(code)),
  1274. Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + dara.ToString(requestId)),
  1275. Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
  1276. RetryAfter: openapiutil.GetThrottlingTimeLeft(response_.Headers),
  1277. Data: err,
  1278. RequestId: dara.String(dara.ToString(requestId)),
  1279. }
  1280. return _result, _err
  1281. } else if (dara.IntValue(response_.StatusCode) >= 400) && (dara.IntValue(response_.StatusCode) < 500) {
  1282. _err = &ClientError{
  1283. StatusCode: response_.StatusCode,
  1284. Code: dara.String(dara.ToString(code)),
  1285. Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + dara.ToString(requestId)),
  1286. Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
  1287. Data: err,
  1288. AccessDeniedDetail: client.GetAccessDeniedDetail(err),
  1289. RequestId: dara.String(dara.ToString(requestId)),
  1290. }
  1291. return _result, _err
  1292. } else {
  1293. _err = &ServerError{
  1294. StatusCode: response_.StatusCode,
  1295. Code: dara.String(dara.ToString(code)),
  1296. Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + dara.ToString(requestId)),
  1297. Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
  1298. Data: err,
  1299. RequestId: dara.String(dara.ToString(requestId)),
  1300. }
  1301. return _result, _err
  1302. }
  1303. }
  1304. if dara.StringValue(bodyType) == "binary" {
  1305. resp := map[string]interface{}{
  1306. "body": response_.Body,
  1307. "headers": response_.Headers,
  1308. "statusCode": dara.IntValue(response_.StatusCode),
  1309. }
  1310. _result = resp
  1311. return _result, _err
  1312. } else if dara.StringValue(bodyType) == "byte" {
  1313. byt, _err := dara.ReadAsBytes(response_.Body)
  1314. if _err != nil {
  1315. return _result, _err
  1316. }
  1317. _err = dara.Convert(map[string]interface{}{
  1318. "body": byt,
  1319. "headers": response_.Headers,
  1320. "statusCode": dara.IntValue(response_.StatusCode),
  1321. }, &_result)
  1322. return _result, _err
  1323. } else if dara.StringValue(bodyType) == "string" {
  1324. _str, _err := dara.ReadAsString(response_.Body)
  1325. if _err != nil {
  1326. return _result, _err
  1327. }
  1328. _err = dara.Convert(map[string]interface{}{
  1329. "body": _str,
  1330. "headers": response_.Headers,
  1331. "statusCode": dara.IntValue(response_.StatusCode),
  1332. }, &_result)
  1333. return _result, _err
  1334. } else if dara.StringValue(bodyType) == "json" {
  1335. obj, _err := dara.ReadAsJSON(response_.Body)
  1336. if _err != nil {
  1337. return _result, _err
  1338. }
  1339. res := dara.ToMap(obj)
  1340. _err = dara.Convert(map[string]interface{}{
  1341. "body": res,
  1342. "headers": response_.Headers,
  1343. "statusCode": dara.IntValue(response_.StatusCode),
  1344. }, &_result)
  1345. return _result, _err
  1346. } else if dara.StringValue(bodyType) == "array" {
  1347. arr, _err := dara.ReadAsJSON(response_.Body)
  1348. if _err != nil {
  1349. return _result, _err
  1350. }
  1351. _err = dara.Convert(map[string]interface{}{
  1352. "body": arr,
  1353. "headers": response_.Headers,
  1354. "statusCode": dara.IntValue(response_.StatusCode),
  1355. }, &_result)
  1356. return _result, _err
  1357. } else {
  1358. _err = dara.Convert(map[string]interface{}{
  1359. "headers": response_.Headers,
  1360. "statusCode": dara.IntValue(response_.StatusCode),
  1361. }, &_result)
  1362. return _result, _err
  1363. }
  1364. }
  1365. func doROARequestWithCtx_opResponse(response_ *dara.Response, client *Client, bodyType *string) (_result map[string]interface{}, _err error) {
  1366. if dara.IntValue(response_.StatusCode) == 204 {
  1367. _err = dara.Convert(map[string]map[string]*string{
  1368. "headers": response_.Headers,
  1369. }, &_result)
  1370. return _result, _err
  1371. }
  1372. if (dara.IntValue(response_.StatusCode) >= 400) && (dara.IntValue(response_.StatusCode) < 600) {
  1373. _res, _err := dara.ReadAsJSON(response_.Body)
  1374. if _err != nil {
  1375. return _result, _err
  1376. }
  1377. err := dara.ToMap(_res)
  1378. requestId := dara.ToString(dara.Default(err["RequestId"], err["requestId"]))
  1379. requestId = dara.ToString(dara.Default(requestId, err["requestid"]))
  1380. code := dara.ToString(dara.Default(err["Code"], err["code"]))
  1381. if (code == "Throttling") || (code == "Throttling.User") || (code == "Throttling.Api") {
  1382. _err = &ThrottlingError{
  1383. StatusCode: response_.StatusCode,
  1384. Code: dara.String(code),
  1385. Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + requestId),
  1386. Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
  1387. RetryAfter: openapiutil.GetThrottlingTimeLeft(response_.Headers),
  1388. Data: err,
  1389. RequestId: dara.String(requestId),
  1390. }
  1391. return _result, _err
  1392. } else if (dara.IntValue(response_.StatusCode) >= 400) && (dara.IntValue(response_.StatusCode) < 500) {
  1393. _err = &ClientError{
  1394. StatusCode: response_.StatusCode,
  1395. Code: dara.String(code),
  1396. Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + requestId),
  1397. Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
  1398. Data: err,
  1399. AccessDeniedDetail: client.GetAccessDeniedDetail(err),
  1400. RequestId: dara.String(requestId),
  1401. }
  1402. return _result, _err
  1403. } else {
  1404. _err = &ServerError{
  1405. StatusCode: response_.StatusCode,
  1406. Code: dara.String(code),
  1407. Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + requestId),
  1408. Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
  1409. Data: err,
  1410. RequestId: dara.String(requestId),
  1411. }
  1412. return _result, _err
  1413. }
  1414. }
  1415. if dara.StringValue(bodyType) == "binary" {
  1416. resp := map[string]interface{}{
  1417. "body": response_.Body,
  1418. "headers": response_.Headers,
  1419. "statusCode": dara.IntValue(response_.StatusCode),
  1420. }
  1421. _result = resp
  1422. return _result, _err
  1423. } else if dara.StringValue(bodyType) == "byte" {
  1424. byt, _err := dara.ReadAsBytes(response_.Body)
  1425. if _err != nil {
  1426. return _result, _err
  1427. }
  1428. _err = dara.Convert(map[string]interface{}{
  1429. "body": byt,
  1430. "headers": response_.Headers,
  1431. "statusCode": dara.IntValue(response_.StatusCode),
  1432. }, &_result)
  1433. return _result, _err
  1434. } else if dara.StringValue(bodyType) == "string" {
  1435. _str, _err := dara.ReadAsString(response_.Body)
  1436. if _err != nil {
  1437. return _result, _err
  1438. }
  1439. _err = dara.Convert(map[string]interface{}{
  1440. "body": _str,
  1441. "headers": response_.Headers,
  1442. "statusCode": dara.IntValue(response_.StatusCode),
  1443. }, &_result)
  1444. return _result, _err
  1445. } else if dara.StringValue(bodyType) == "json" {
  1446. obj, _err := dara.ReadAsJSON(response_.Body)
  1447. if _err != nil {
  1448. return _result, _err
  1449. }
  1450. res := dara.ToMap(obj)
  1451. _err = dara.Convert(map[string]interface{}{
  1452. "body": res,
  1453. "headers": response_.Headers,
  1454. "statusCode": dara.IntValue(response_.StatusCode),
  1455. }, &_result)
  1456. return _result, _err
  1457. } else if dara.StringValue(bodyType) == "array" {
  1458. arr, _err := dara.ReadAsJSON(response_.Body)
  1459. if _err != nil {
  1460. return _result, _err
  1461. }
  1462. _err = dara.Convert(map[string]interface{}{
  1463. "body": arr,
  1464. "headers": response_.Headers,
  1465. "statusCode": dara.IntValue(response_.StatusCode),
  1466. }, &_result)
  1467. return _result, _err
  1468. } else {
  1469. _err = dara.Convert(map[string]interface{}{
  1470. "headers": response_.Headers,
  1471. "statusCode": dara.IntValue(response_.StatusCode),
  1472. }, &_result)
  1473. return _result, _err
  1474. }
  1475. }
  1476. func doROAFormRequestWithCtx_opResponse(response_ *dara.Response, client *Client, bodyType *string) (_result map[string]interface{}, _err error) {
  1477. if dara.IntValue(response_.StatusCode) == 204 {
  1478. _err = dara.Convert(map[string]map[string]*string{
  1479. "headers": response_.Headers,
  1480. }, &_result)
  1481. return _result, _err
  1482. }
  1483. if (dara.IntValue(response_.StatusCode) >= 400) && (dara.IntValue(response_.StatusCode) < 600) {
  1484. _res, _err := dara.ReadAsJSON(response_.Body)
  1485. if _err != nil {
  1486. return _result, _err
  1487. }
  1488. err := dara.ToMap(_res)
  1489. requestId := dara.ToString(dara.Default(err["RequestId"], err["requestId"]))
  1490. code := dara.ToString(dara.Default(err["Code"], err["code"]))
  1491. if (code == "Throttling") || (code == "Throttling.User") || (code == "Throttling.Api") {
  1492. _err = &ThrottlingError{
  1493. StatusCode: response_.StatusCode,
  1494. Code: dara.String(code),
  1495. Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + requestId),
  1496. Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
  1497. RetryAfter: openapiutil.GetThrottlingTimeLeft(response_.Headers),
  1498. Data: err,
  1499. RequestId: dara.String(requestId),
  1500. }
  1501. return _result, _err
  1502. } else if (dara.IntValue(response_.StatusCode) >= 400) && (dara.IntValue(response_.StatusCode) < 500) {
  1503. _err = &ClientError{
  1504. StatusCode: response_.StatusCode,
  1505. Code: dara.String(code),
  1506. Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + requestId),
  1507. Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
  1508. Data: err,
  1509. AccessDeniedDetail: client.GetAccessDeniedDetail(err),
  1510. RequestId: dara.String(requestId),
  1511. }
  1512. return _result, _err
  1513. } else {
  1514. _err = &ServerError{
  1515. StatusCode: response_.StatusCode,
  1516. Code: dara.String(code),
  1517. Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + requestId),
  1518. Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
  1519. Data: err,
  1520. RequestId: dara.String(requestId),
  1521. }
  1522. return _result, _err
  1523. }
  1524. }
  1525. if dara.StringValue(bodyType) == "binary" {
  1526. resp := map[string]interface{}{
  1527. "body": response_.Body,
  1528. "headers": response_.Headers,
  1529. "statusCode": dara.IntValue(response_.StatusCode),
  1530. }
  1531. _result = resp
  1532. return _result, _err
  1533. } else if dara.StringValue(bodyType) == "byte" {
  1534. byt, _err := dara.ReadAsBytes(response_.Body)
  1535. if _err != nil {
  1536. return _result, _err
  1537. }
  1538. _err = dara.Convert(map[string]interface{}{
  1539. "body": byt,
  1540. "headers": response_.Headers,
  1541. "statusCode": dara.IntValue(response_.StatusCode),
  1542. }, &_result)
  1543. return _result, _err
  1544. } else if dara.StringValue(bodyType) == "string" {
  1545. _str, _err := dara.ReadAsString(response_.Body)
  1546. if _err != nil {
  1547. return _result, _err
  1548. }
  1549. _err = dara.Convert(map[string]interface{}{
  1550. "body": _str,
  1551. "headers": response_.Headers,
  1552. "statusCode": dara.IntValue(response_.StatusCode),
  1553. }, &_result)
  1554. return _result, _err
  1555. } else if dara.StringValue(bodyType) == "json" {
  1556. obj, _err := dara.ReadAsJSON(response_.Body)
  1557. if _err != nil {
  1558. return _result, _err
  1559. }
  1560. res := dara.ToMap(obj)
  1561. _err = dara.Convert(map[string]interface{}{
  1562. "body": res,
  1563. "headers": response_.Headers,
  1564. "statusCode": dara.IntValue(response_.StatusCode),
  1565. }, &_result)
  1566. return _result, _err
  1567. } else if dara.StringValue(bodyType) == "array" {
  1568. arr, _err := dara.ReadAsJSON(response_.Body)
  1569. if _err != nil {
  1570. return _result, _err
  1571. }
  1572. _err = dara.Convert(map[string]interface{}{
  1573. "body": arr,
  1574. "headers": response_.Headers,
  1575. "statusCode": dara.IntValue(response_.StatusCode),
  1576. }, &_result)
  1577. return _result, _err
  1578. } else {
  1579. _err = dara.Convert(map[string]interface{}{
  1580. "headers": response_.Headers,
  1581. "statusCode": dara.IntValue(response_.StatusCode),
  1582. }, &_result)
  1583. return _result, _err
  1584. }
  1585. }
  1586. func doRequestWithCtx_opResponse(response_ *dara.Response, client *Client, params *openapiutil.Params) (_result map[string]interface{}, _err error) {
  1587. if (dara.IntValue(response_.StatusCode) >= 400) && (dara.IntValue(response_.StatusCode) < 600) {
  1588. err := map[string]interface{}{}
  1589. if !dara.IsNil(response_.Headers["content-type"]) && dara.StringValue(response_.Headers["content-type"]) == "text/xml;charset=utf-8" {
  1590. _str, _err := dara.ReadAsString(response_.Body)
  1591. if _err != nil {
  1592. return _result, _err
  1593. }
  1594. respMap := dara.ParseXml(_str, nil)
  1595. err = dara.ToMap(respMap["Error"])
  1596. } else {
  1597. _res, _err := dara.ReadAsJSON(response_.Body)
  1598. if _err != nil {
  1599. return _result, _err
  1600. }
  1601. err = dara.ToMap(_res)
  1602. }
  1603. requestId := dara.ToString(dara.Default(err["RequestId"], err["requestId"]))
  1604. code := dara.ToString(dara.Default(err["Code"], err["code"]))
  1605. if (code == "Throttling") || (code == "Throttling.User") || (code == "Throttling.Api") {
  1606. _err = &ThrottlingError{
  1607. StatusCode: response_.StatusCode,
  1608. Code: dara.String(code),
  1609. Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + requestId),
  1610. Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
  1611. RetryAfter: openapiutil.GetThrottlingTimeLeft(response_.Headers),
  1612. Data: err,
  1613. RequestId: dara.String(requestId),
  1614. }
  1615. return _result, _err
  1616. } else if (dara.IntValue(response_.StatusCode) >= 400) && (dara.IntValue(response_.StatusCode) < 500) {
  1617. _err = &ClientError{
  1618. StatusCode: response_.StatusCode,
  1619. Code: dara.String(code),
  1620. Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + requestId),
  1621. Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
  1622. Data: err,
  1623. AccessDeniedDetail: client.GetAccessDeniedDetail(err),
  1624. RequestId: dara.String(requestId),
  1625. }
  1626. return _result, _err
  1627. } else {
  1628. _err = &ServerError{
  1629. StatusCode: response_.StatusCode,
  1630. Code: dara.String(code),
  1631. Message: dara.String("code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + requestId),
  1632. Description: dara.String(dara.ToString(dara.Default(err["Description"], err["description"]))),
  1633. Data: err,
  1634. RequestId: dara.String(requestId),
  1635. }
  1636. return _result, _err
  1637. }
  1638. }
  1639. if dara.StringValue(params.BodyType) == "binary" {
  1640. resp := map[string]interface{}{
  1641. "body": response_.Body,
  1642. "headers": response_.Headers,
  1643. "statusCode": dara.IntValue(response_.StatusCode),
  1644. }
  1645. _result = resp
  1646. return _result, _err
  1647. } else if dara.StringValue(params.BodyType) == "byte" {
  1648. byt, _err := dara.ReadAsBytes(response_.Body)
  1649. if _err != nil {
  1650. return _result, _err
  1651. }
  1652. _err = dara.Convert(map[string]interface{}{
  1653. "body": byt,
  1654. "headers": response_.Headers,
  1655. "statusCode": dara.IntValue(response_.StatusCode),
  1656. }, &_result)
  1657. return _result, _err
  1658. } else if dara.StringValue(params.BodyType) == "string" {
  1659. respStr, _err := dara.ReadAsString(response_.Body)
  1660. if _err != nil {
  1661. return _result, _err
  1662. }
  1663. _err = dara.Convert(map[string]interface{}{
  1664. "body": respStr,
  1665. "headers": response_.Headers,
  1666. "statusCode": dara.IntValue(response_.StatusCode),
  1667. }, &_result)
  1668. return _result, _err
  1669. } else if dara.StringValue(params.BodyType) == "json" {
  1670. obj, _err := dara.ReadAsJSON(response_.Body)
  1671. if _err != nil {
  1672. return _result, _err
  1673. }
  1674. res := dara.ToMap(obj)
  1675. _err = dara.Convert(map[string]interface{}{
  1676. "body": res,
  1677. "headers": response_.Headers,
  1678. "statusCode": dara.IntValue(response_.StatusCode),
  1679. }, &_result)
  1680. return _result, _err
  1681. } else if dara.StringValue(params.BodyType) == "array" {
  1682. arr, _err := dara.ReadAsJSON(response_.Body)
  1683. if _err != nil {
  1684. return _result, _err
  1685. }
  1686. _err = dara.Convert(map[string]interface{}{
  1687. "body": arr,
  1688. "headers": response_.Headers,
  1689. "statusCode": dara.IntValue(response_.StatusCode),
  1690. }, &_result)
  1691. return _result, _err
  1692. } else {
  1693. anything, _err := dara.ReadAsString(response_.Body)
  1694. if _err != nil {
  1695. return _result, _err
  1696. }
  1697. _err = dara.Convert(map[string]interface{}{
  1698. "body": anything,
  1699. "headers": response_.Headers,
  1700. "statusCode": dara.IntValue(response_.StatusCode),
  1701. }, &_result)
  1702. return _result, _err
  1703. }
  1704. }
  1705. func callSSEApiWithCtx_opResponse(ctx context.Context, _yield chan *SSEResponse, _yieldErr chan error, response_ *dara.Response) {
  1706. if (dara.IntValue(response_.StatusCode) >= 400) && (dara.IntValue(response_.StatusCode) < 600) {
  1707. err := map[string]interface{}{}
  1708. if !dara.IsNil(response_.Headers["content-type"]) && dara.StringValue(response_.Headers["content-type"]) == "text/xml;charset=utf-8" {
  1709. _str, _err := dara.ReadAsString(response_.Body)
  1710. if _err != nil {
  1711. _yieldErr <- _err
  1712. return
  1713. }
  1714. respMap := dara.ParseXml(_str, nil)
  1715. err = dara.ToMap(respMap["Error"])
  1716. } else {
  1717. _res, _err := dara.ReadAsJSON(response_.Body)
  1718. if _err != nil {
  1719. _yieldErr <- _err
  1720. return
  1721. }
  1722. err = dara.ToMap(_res)
  1723. }
  1724. err["statusCode"] = response_.StatusCode
  1725. _err := dara.NewSDKError(map[string]interface{}{
  1726. "code": dara.ToString(dara.Default(err["Code"], err["code"])),
  1727. "message": "code: " + dara.ToString(dara.IntValue(response_.StatusCode)) + ", " + dara.ToString(dara.Default(err["Message"], err["message"])) + " request id: " + dara.ToString(dara.Default(err["RequestId"], err["requestId"])),
  1728. "data": err,
  1729. "description": dara.ToString(dara.Default(err["Description"], err["description"])),
  1730. "accessDeniedDetail": dara.Default(err["AccessDeniedDetail"], err["accessDeniedDetail"]),
  1731. })
  1732. _yieldErr <- _err
  1733. return
  1734. }
  1735. events := make(chan *dara.SSEEvent, 1)
  1736. dara.ReadAsSSEWithContext(ctx, response_.Body, events, _yieldErr)
  1737. for event := range events {
  1738. _yield <- &SSEResponse{
  1739. StatusCode: response_.StatusCode,
  1740. Headers: response_.Headers,
  1741. Event: event,
  1742. }
  1743. }
  1744. return
  1745. }