22#include < alibabacloud/Dm20151123.hpp>
33#include < alibabacloud/Utils.hpp>
44#include < alibabacloud/Openapi.hpp>
5- #include < darabonba/http/Form.hpp>
5+ #include < darabonba/Runtime.hpp>
6+ #include < darabonba/policy/Retry.hpp>
7+ #include < darabonba/Exception.hpp>
68#include < darabonba/Convert.hpp>
9+ #include < darabonba/http/Form.hpp>
710#include < map>
811#include < darabonba/Stream.hpp>
912#include < darabonba/XML.hpp>
10- #include < darabonba/Runtime.hpp>
1113#include < alibabacloud/credential/Credential.hpp>
1214#include < darabonba/http/FileField.hpp>
1315using namespace std ;
@@ -32,43 +34,88 @@ AlibabaCloud::Dm20151123::Client::Client(AlibabaCloud::OpenApi::Utils::Models::C
3234}
3335
3436
35- Darabonba::Json Client::_postOSSObject (const string &bucketName, const Darabonba::Json &form) {
36- Darabonba::RuntimeOptions runtime_ (json ({}));
37-
38- Darabonba::Http::Request request_ = Darabonba::Http::Request ();
39- string boundary = Darabonba::Http::Form::getBoundary ();
40- request_.setProtocol (" HTTPS" );
41- request_.setMethod (" POST" );
42- request_.setPathname (DARA_STRING_TEMPLATE (" /" ));
43- request_.setHeaders (json ({
44- {" host" , Darabonba::Convert::stringVal (form[" host" ])},
45- {" date" , Utils::Utils::getDateUTCString ()},
46- {" user-agent" , Utils::Utils::getUserAgent (" " )}
47- }).get <map<string, string>>());
48- request_.addHeader (" content-type" , DARA_STRING_TEMPLATE (" multipart/form-data; boundary=" , boundary));
49- request_.setBody (Darabonba::Http::Form::toFileForm (form, boundary));
50- auto futureResp_ = Darabonba::Core::doAction (request_, runtime_);
51- shared_ptr<Darabonba::Http::MCurlResponse> response_ = futureResp_.get ();
52-
53- json respMap = nullptr ;
54- string bodyStr = Darabonba::Stream::readAsString (response_->body ());
55- if ((response_->statusCode () >= 400 ) && (response_->statusCode () < 600 )) {
56- respMap = Darabonba::XML::parseXml (bodyStr, nullptr );
57- json err = json (respMap[" Error" ]);
58- throw ClientException (json ({
59- {" code" , Darabonba::Convert::stringVal (err[" Code" ])},
60- {" message" , Darabonba::Convert::stringVal (err[" Message" ])},
61- {" data" , json ({
62- {" httpCode" , response_->statusCode ()},
63- {" requestId" , Darabonba::Convert::stringVal (err[" RequestId" ])},
64- {" hostId" , Darabonba::Convert::stringVal (err[" HostId" ])}
65- })}
37+ Darabonba::Json Client::_postOSSObject (const string &bucketName, const Darabonba::Json &form, const Darabonba::RuntimeOptions &runtime) {
38+ Darabonba::RuntimeOptions runtime_ (json ({
39+ {" key" , Darabonba::Convert::stringVal (Darabonba::defaultVal (runtime.key (), _key))},
40+ {" cert" , Darabonba::Convert::stringVal (Darabonba::defaultVal (runtime.cert (), _cert))},
41+ {" ca" , Darabonba::Convert::stringVal (Darabonba::defaultVal (runtime.ca (), _ca))},
42+ {" readTimeout" , Darabonba::Convert::int64Val (Darabonba::defaultVal (runtime.readTimeout (), _readTimeout))},
43+ {" connectTimeout" , Darabonba::Convert::int64Val (Darabonba::defaultVal (runtime.connectTimeout (), _connectTimeout))},
44+ {" httpProxy" , Darabonba::Convert::stringVal (Darabonba::defaultVal (runtime.httpProxy (), _httpProxy))},
45+ {" httpsProxy" , Darabonba::Convert::stringVal (Darabonba::defaultVal (runtime.httpsProxy (), _httpsProxy))},
46+ {" noProxy" , Darabonba::Convert::stringVal (Darabonba::defaultVal (runtime.noProxy (), _noProxy))},
47+ {" socks5Proxy" , Darabonba::Convert::stringVal (Darabonba::defaultVal (runtime.socks5Proxy (), _socks5Proxy))},
48+ {" socks5NetWork" , Darabonba::Convert::stringVal (Darabonba::defaultVal (runtime.socks5NetWork (), _socks5NetWork))},
49+ {" maxIdleConns" , Darabonba::Convert::int64Val (Darabonba::defaultVal (runtime.maxIdleConns (), _maxIdleConns))},
50+ {" retryOptions" , _retryOptions},
51+ {" ignoreSSL" , Darabonba::Convert::boolVal (Darabonba::defaultVal (runtime.ignoreSSL (), false ))},
52+ {" tlsMinVersion" , _tlsMinVersion}
6653 }));
54+
55+ shared_ptr<Darabonba::Http::Request> _lastRequest = nullptr ;
56+ shared_ptr<Darabonba::Http::MCurlResponse> _lastResponse = nullptr ;
57+ Darabonba::Exception _lastException;
58+ int _retriesAttempted = 0 ;
59+ Darabonba::Policy::RetryPolicyContext _context = json ({
60+ {" retriesAttempted" , _retriesAttempted}
61+ });
62+ while (Darabonba::allowRetry (runtime_.retryOptions (), _context)) {
63+ if (_retriesAttempted > 0 ) {
64+ int _backoffTime = Darabonba::getBackoffTime (runtime_.retryOptions (), _context);
65+ if (_backoffTime > 0 ) {
66+ Darabonba::sleep (_backoffTime);
67+ }
68+ }
69+ _retriesAttempted++;
70+ try {
71+ Darabonba::Http::Request request_ = Darabonba::Http::Request ();
72+ string boundary = Darabonba::Http::Form::getBoundary ();
73+ request_.setProtocol (" HTTPS" );
74+ request_.setMethod (" POST" );
75+ request_.setPathname (DARA_STRING_TEMPLATE (" /" ));
76+ request_.setHeaders (json ({
77+ {" host" , Darabonba::Convert::stringVal (form[" host" ])},
78+ {" date" , Utils::Utils::getDateUTCString ()},
79+ {" user-agent" , Utils::Utils::getUserAgent (" " )}
80+ }).get <map<string, string>>());
81+ request_.addHeader (" content-type" , DARA_STRING_TEMPLATE (" multipart/form-data; boundary=" , boundary));
82+ request_.setBody (Darabonba::Http::Form::toFileForm (form, boundary));
83+ _lastRequest = make_shared<Darabonba::Http::Request>(request_);
84+ auto futureResp_ = Darabonba::Core::doAction (request_, runtime_);
85+ shared_ptr<Darabonba::Http::MCurlResponse> response_ = futureResp_.get ();
86+ _lastResponse = response_;
87+
88+ json respMap = nullptr ;
89+ string bodyStr = Darabonba::Stream::readAsString (response_->body ());
90+ if ((response_->statusCode () >= 400 ) && (response_->statusCode () < 600 )) {
91+ respMap = Darabonba::XML::parseXml (bodyStr, nullptr );
92+ json err = json (respMap[" Error" ]);
93+ throw ClientException (json ({
94+ {" code" , Darabonba::Convert::stringVal (err[" Code" ])},
95+ {" message" , Darabonba::Convert::stringVal (err[" Message" ])},
96+ {" data" , json ({
97+ {" httpCode" , response_->statusCode ()},
98+ {" requestId" , Darabonba::Convert::stringVal (err[" RequestId" ])},
99+ {" hostId" , Darabonba::Convert::stringVal (err[" HostId" ])}
100+ })}
101+ }));
102+ }
103+
104+ respMap = Darabonba::XML::parseXml (bodyStr, nullptr );
105+ return Darabonba::Core::merge (respMap
106+ );
107+ } catch (const Darabonba::Exception& ex) {
108+ _context = Darabonba::Policy::RetryPolicyContext (json ({
109+ {" retriesAttempted" , _retriesAttempted},
110+ {" lastRequest" , _lastRequest},
111+ {" lastResponse" , _lastResponse},
112+ {" exception" , ex},
113+ }));
114+ continue ;
115+ }
67116 }
68117
69- respMap = Darabonba::XML::parseXml (bodyStr, nullptr );
70- return Darabonba::Core::merge (respMap
71- );
118+ throw *_context.exception ();
72119}
73120
74121string Client::getEndpoint (const string &productId, const string ®ionId, const string &endpointRule, const string &network, const string &suffix, const map<string, string> &endpointMap, const string &endpoint) {
@@ -3906,7 +3953,7 @@ SendValidateFileResponse Client::sendValidateFileAdvance(const SendValidateFileA
39063953 {" file" , fileObj},
39073954 {" success_action_status" , " 201" }
39083955 });
3909- _postOSSObject (authResponseBody.at (" Bucket" ), ossHeader);
3956+ _postOSSObject (authResponseBody.at (" Bucket" ), ossHeader, runtime );
39103957 sendValidateFileReq.setFileUrl (DARA_STRING_TEMPLATE (" http://" , authResponseBody.at (" Bucket" ) , " ." , authResponseBody.at (" Endpoint" ) , " /" , authResponseBody.at (" ObjectKey" )));
39113958 }
39123959
@@ -4347,7 +4394,7 @@ SingleSendMailResponse Client::singleSendMailAdvance(const SingleSendMailAdvance
43474394 {" file" , fileObj},
43484395 {" success_action_status" , " 201" }
43494396 });
4350- _postOSSObject (authResponseBody.at (" Bucket" ), ossHeader);
4397+ _postOSSObject (authResponseBody.at (" Bucket" ), ossHeader, runtime );
43514398 SingleSendMailRequestAttachments tmpObj = singleSendMailReq.attachments ().at (i0);
43524399 tmpObj.setAttachmentUrl (DARA_STRING_TEMPLATE (" http://" , authResponseBody.at (" Bucket" ) , " ." , authResponseBody.at (" Endpoint" ) , " /" , authResponseBody.at (" ObjectKey" )));
43534400 i0++;
@@ -4522,6 +4569,10 @@ UpdateUserResponse Client::updateUser(const UpdateUserRequest &request) {
45224569ValidateEmailResponse Client::validateEmailWithOptions (const ValidateEmailRequest &request, const Darabonba::RuntimeOptions &runtime) {
45234570 request.validate ();
45244571 json query = {};
4572+ if (!!request.hasCheckGraylist ()) {
4573+ query[" CheckGraylist" ] = request.checkGraylist ();
4574+ }
4575+
45254576 if (!!request.hasEmail ()) {
45264577 query[" Email" ] = request.email ();
45274578 }
0 commit comments