S3Client.cpp 235 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193
  1. /**
  2. * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
  3. * SPDX-License-Identifier: Apache-2.0.
  4. */
  5. #include <aws/core/utils/Outcome.h>
  6. #include <aws/core/auth/AWSAuthSigner.h>
  7. #include <aws/core/client/CoreErrors.h>
  8. #include <aws/core/client/RetryStrategy.h>
  9. #include <aws/core/http/HttpClient.h>
  10. #include <aws/core/http/HttpResponse.h>
  11. #include <aws/core/http/HttpClientFactory.h>
  12. #include <aws/core/auth/AWSCredentialsProviderChain.h>
  13. #include <aws/core/utils/xml/XmlSerializer.h>
  14. #include <aws/core/utils/memory/stl/AWSStringStream.h>
  15. #include <aws/core/utils/threading/Executor.h>
  16. #include <aws/core/utils/DNS.h>
  17. #include <aws/core/utils/logging/LogMacros.h>
  18. #include <aws/core/utils/event/EventStream.h>
  19. #include <aws/s3/S3Client.h>
  20. #include <aws/s3/S3Endpoint.h>
  21. #include <aws/s3/S3ErrorMarshaller.h>
  22. #include <aws/s3/S3ARN.h>
  23. #include <aws/s3/model/AbortMultipartUploadRequest.h>
  24. #include <aws/s3/model/CompleteMultipartUploadRequest.h>
  25. #include <aws/s3/model/CopyObjectRequest.h>
  26. #include <aws/s3/model/CreateBucketRequest.h>
  27. #include <aws/s3/model/CreateMultipartUploadRequest.h>
  28. #include <aws/s3/model/DeleteBucketRequest.h>
  29. #include <aws/s3/model/DeleteBucketAnalyticsConfigurationRequest.h>
  30. #include <aws/s3/model/DeleteBucketCorsRequest.h>
  31. #include <aws/s3/model/DeleteBucketEncryptionRequest.h>
  32. #include <aws/s3/model/DeleteBucketIntelligentTieringConfigurationRequest.h>
  33. #include <aws/s3/model/DeleteBucketInventoryConfigurationRequest.h>
  34. #include <aws/s3/model/DeleteBucketLifecycleRequest.h>
  35. #include <aws/s3/model/DeleteBucketMetricsConfigurationRequest.h>
  36. #include <aws/s3/model/DeleteBucketOwnershipControlsRequest.h>
  37. #include <aws/s3/model/DeleteBucketPolicyRequest.h>
  38. #include <aws/s3/model/DeleteBucketReplicationRequest.h>
  39. #include <aws/s3/model/DeleteBucketTaggingRequest.h>
  40. #include <aws/s3/model/DeleteBucketWebsiteRequest.h>
  41. #include <aws/s3/model/DeleteObjectRequest.h>
  42. #include <aws/s3/model/DeleteObjectTaggingRequest.h>
  43. #include <aws/s3/model/DeleteObjectsRequest.h>
  44. #include <aws/s3/model/DeletePublicAccessBlockRequest.h>
  45. #include <aws/s3/model/GetBucketAccelerateConfigurationRequest.h>
  46. #include <aws/s3/model/GetBucketAclRequest.h>
  47. #include <aws/s3/model/GetBucketAnalyticsConfigurationRequest.h>
  48. #include <aws/s3/model/GetBucketCorsRequest.h>
  49. #include <aws/s3/model/GetBucketEncryptionRequest.h>
  50. #include <aws/s3/model/GetBucketIntelligentTieringConfigurationRequest.h>
  51. #include <aws/s3/model/GetBucketInventoryConfigurationRequest.h>
  52. #include <aws/s3/model/GetBucketLifecycleConfigurationRequest.h>
  53. #include <aws/s3/model/GetBucketLocationRequest.h>
  54. #include <aws/s3/model/GetBucketLoggingRequest.h>
  55. #include <aws/s3/model/GetBucketMetricsConfigurationRequest.h>
  56. #include <aws/s3/model/GetBucketNotificationConfigurationRequest.h>
  57. #include <aws/s3/model/GetBucketOwnershipControlsRequest.h>
  58. #include <aws/s3/model/GetBucketPolicyRequest.h>
  59. #include <aws/s3/model/GetBucketPolicyStatusRequest.h>
  60. #include <aws/s3/model/GetBucketReplicationRequest.h>
  61. #include <aws/s3/model/GetBucketRequestPaymentRequest.h>
  62. #include <aws/s3/model/GetBucketTaggingRequest.h>
  63. #include <aws/s3/model/GetBucketVersioningRequest.h>
  64. #include <aws/s3/model/GetBucketWebsiteRequest.h>
  65. #include <aws/s3/model/GetObjectRequest.h>
  66. #include <aws/s3/model/GetObjectAclRequest.h>
  67. #include <aws/s3/model/GetObjectLegalHoldRequest.h>
  68. #include <aws/s3/model/GetObjectLockConfigurationRequest.h>
  69. #include <aws/s3/model/GetObjectRetentionRequest.h>
  70. #include <aws/s3/model/GetObjectTaggingRequest.h>
  71. #include <aws/s3/model/GetObjectTorrentRequest.h>
  72. #include <aws/s3/model/GetPublicAccessBlockRequest.h>
  73. #include <aws/s3/model/HeadBucketRequest.h>
  74. #include <aws/s3/model/HeadObjectRequest.h>
  75. #include <aws/s3/model/ListBucketAnalyticsConfigurationsRequest.h>
  76. #include <aws/s3/model/ListBucketIntelligentTieringConfigurationsRequest.h>
  77. #include <aws/s3/model/ListBucketInventoryConfigurationsRequest.h>
  78. #include <aws/s3/model/ListBucketMetricsConfigurationsRequest.h>
  79. #include <aws/s3/model/ListMultipartUploadsRequest.h>
  80. #include <aws/s3/model/ListObjectVersionsRequest.h>
  81. #include <aws/s3/model/ListObjectsRequest.h>
  82. #include <aws/s3/model/ListObjectsV2Request.h>
  83. #include <aws/s3/model/ListPartsRequest.h>
  84. #include <aws/s3/model/PutBucketAccelerateConfigurationRequest.h>
  85. #include <aws/s3/model/PutBucketAclRequest.h>
  86. #include <aws/s3/model/PutBucketAnalyticsConfigurationRequest.h>
  87. #include <aws/s3/model/PutBucketCorsRequest.h>
  88. #include <aws/s3/model/PutBucketEncryptionRequest.h>
  89. #include <aws/s3/model/PutBucketIntelligentTieringConfigurationRequest.h>
  90. #include <aws/s3/model/PutBucketInventoryConfigurationRequest.h>
  91. #include <aws/s3/model/PutBucketLifecycleConfigurationRequest.h>
  92. #include <aws/s3/model/PutBucketLoggingRequest.h>
  93. #include <aws/s3/model/PutBucketMetricsConfigurationRequest.h>
  94. #include <aws/s3/model/PutBucketNotificationConfigurationRequest.h>
  95. #include <aws/s3/model/PutBucketOwnershipControlsRequest.h>
  96. #include <aws/s3/model/PutBucketPolicyRequest.h>
  97. #include <aws/s3/model/PutBucketReplicationRequest.h>
  98. #include <aws/s3/model/PutBucketRequestPaymentRequest.h>
  99. #include <aws/s3/model/PutBucketTaggingRequest.h>
  100. #include <aws/s3/model/PutBucketVersioningRequest.h>
  101. #include <aws/s3/model/PutBucketWebsiteRequest.h>
  102. #include <aws/s3/model/PutObjectRequest.h>
  103. #include <aws/s3/model/PutObjectAclRequest.h>
  104. #include <aws/s3/model/PutObjectLegalHoldRequest.h>
  105. #include <aws/s3/model/PutObjectLockConfigurationRequest.h>
  106. #include <aws/s3/model/PutObjectRetentionRequest.h>
  107. #include <aws/s3/model/PutObjectTaggingRequest.h>
  108. #include <aws/s3/model/PutPublicAccessBlockRequest.h>
  109. #include <aws/s3/model/RestoreObjectRequest.h>
  110. #include <aws/s3/model/SelectObjectContentRequest.h>
  111. #include <aws/s3/model/UploadPartRequest.h>
  112. #include <aws/s3/model/UploadPartCopyRequest.h>
  113. #include <aws/s3/model/WriteGetObjectResponseRequest.h>
  114. using namespace Aws;
  115. using namespace Aws::Auth;
  116. using namespace Aws::Client;
  117. using namespace Aws::S3;
  118. using namespace Aws::S3::Model;
  119. using namespace Aws::Http;
  120. using namespace Aws::Utils::Xml;
  121. static const char* SERVICE_NAME = "s3";
  122. static const char* ALLOCATION_TAG = "S3Client";
  123. S3Client::S3Client(const Client::ClientConfiguration& clientConfiguration, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy signPayloads, bool useVirtualAddressing, Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION USEast1RegionalEndPointOption) :
  124. BASECLASS(clientConfiguration,
  125. Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, Aws::MakeShared<DefaultAWSCredentialsProviderChain>(ALLOCATION_TAG),
  126. SERVICE_NAME, Aws::Region::ComputeSignerRegion(clientConfiguration.region), signPayloads, false),
  127. Aws::MakeShared<S3ErrorMarshaller>(ALLOCATION_TAG)),
  128. m_executor(clientConfiguration.executor), m_useVirtualAddressing(useVirtualAddressing), m_USEast1RegionalEndpointOption(USEast1RegionalEndPointOption)
  129. {
  130. init(clientConfiguration);
  131. }
  132. S3Client::S3Client(const AWSCredentials& credentials, const Client::ClientConfiguration& clientConfiguration, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy signPayloads, bool useVirtualAddressing, Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION USEast1RegionalEndPointOption) :
  133. BASECLASS(clientConfiguration,
  134. Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, Aws::MakeShared<SimpleAWSCredentialsProvider>(ALLOCATION_TAG, credentials),
  135. SERVICE_NAME, Aws::Region::ComputeSignerRegion(clientConfiguration.region), signPayloads, false),
  136. Aws::MakeShared<S3ErrorMarshaller>(ALLOCATION_TAG)),
  137. m_executor(clientConfiguration.executor), m_useVirtualAddressing(useVirtualAddressing), m_USEast1RegionalEndpointOption(USEast1RegionalEndPointOption)
  138. {
  139. init(clientConfiguration);
  140. }
  141. S3Client::S3Client(const std::shared_ptr<AWSCredentialsProvider>& credentialsProvider,
  142. const Client::ClientConfiguration& clientConfiguration, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy signPayloads, bool useVirtualAddressing, Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION USEast1RegionalEndPointOption) :
  143. BASECLASS(clientConfiguration,
  144. Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, credentialsProvider,
  145. SERVICE_NAME, Aws::Region::ComputeSignerRegion(clientConfiguration.region), signPayloads, false),
  146. Aws::MakeShared<S3ErrorMarshaller>(ALLOCATION_TAG)),
  147. m_executor(clientConfiguration.executor), m_useVirtualAddressing(useVirtualAddressing), m_USEast1RegionalEndpointOption(USEast1RegionalEndPointOption)
  148. {
  149. init(clientConfiguration);
  150. }
  151. S3Client::~S3Client()
  152. {
  153. }
  154. void S3Client::init(const ClientConfiguration& config)
  155. {
  156. SetServiceClientName("S3");
  157. LoadS3SpecificConfig(config.profileName);
  158. m_configScheme = SchemeMapper::ToString(config.scheme);
  159. m_scheme = m_configScheme;
  160. m_useDualStack = config.useDualStack;
  161. if (config.endpointOverride.empty())
  162. {
  163. m_useCustomEndpoint = false;
  164. m_baseUri = S3Endpoint::ForRegion(config.region, config.useDualStack, m_USEast1RegionalEndpointOption == Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION::REGIONAL);
  165. }
  166. else
  167. {
  168. m_useCustomEndpoint = true;
  169. OverrideEndpoint(config.endpointOverride);
  170. }
  171. m_enableHostPrefixInjection = config.enableHostPrefixInjection;
  172. }
  173. void S3Client::OverrideEndpoint(const Aws::String& endpoint)
  174. {
  175. if (endpoint.compare(0, 7, "http://") == 0)
  176. {
  177. m_scheme = "http";
  178. m_baseUri = endpoint.substr(7);
  179. }
  180. else if (endpoint.compare(0, 8, "https://") == 0)
  181. {
  182. m_scheme = "https";
  183. m_baseUri = endpoint.substr(8);
  184. }
  185. else
  186. {
  187. m_scheme = m_configScheme;
  188. m_baseUri = endpoint;
  189. }
  190. }
  191. AbortMultipartUploadOutcome S3Client::AbortMultipartUpload(const AbortMultipartUploadRequest& request) const
  192. {
  193. if (!request.BucketHasBeenSet())
  194. {
  195. AWS_LOGSTREAM_ERROR("AbortMultipartUpload", "Required field: Bucket, is not set");
  196. return AbortMultipartUploadOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  197. }
  198. if (!request.KeyHasBeenSet())
  199. {
  200. AWS_LOGSTREAM_ERROR("AbortMultipartUpload", "Required field: Key, is not set");
  201. return AbortMultipartUploadOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  202. }
  203. if (!request.UploadIdHasBeenSet())
  204. {
  205. AWS_LOGSTREAM_ERROR("AbortMultipartUpload", "Required field: UploadId, is not set");
  206. return AbortMultipartUploadOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [UploadId]", false));
  207. }
  208. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  209. if (!computeEndpointOutcome.IsSuccess())
  210. {
  211. return AbortMultipartUploadOutcome(computeEndpointOutcome.GetError());
  212. }
  213. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  214. Aws::StringStream ss;
  215. ss << "/";
  216. ss << request.GetKey();
  217. uri.SetPath(uri.GetPath() + ss.str());
  218. return AbortMultipartUploadOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  219. }
  220. AbortMultipartUploadOutcomeCallable S3Client::AbortMultipartUploadCallable(const AbortMultipartUploadRequest& request) const
  221. {
  222. auto task = Aws::MakeShared< std::packaged_task< AbortMultipartUploadOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->AbortMultipartUpload(request); } );
  223. auto packagedFunction = [task]() { (*task)(); };
  224. m_executor->Submit(packagedFunction);
  225. return task->get_future();
  226. }
  227. void S3Client::AbortMultipartUploadAsync(const AbortMultipartUploadRequest& request, const AbortMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  228. {
  229. m_executor->Submit( [this, request, handler, context](){ this->AbortMultipartUploadAsyncHelper( request, handler, context ); } );
  230. }
  231. void S3Client::AbortMultipartUploadAsyncHelper(const AbortMultipartUploadRequest& request, const AbortMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  232. {
  233. handler(this, request, AbortMultipartUpload(request), context);
  234. }
  235. CompleteMultipartUploadOutcome S3Client::CompleteMultipartUpload(const CompleteMultipartUploadRequest& request) const
  236. {
  237. if (!request.BucketHasBeenSet())
  238. {
  239. AWS_LOGSTREAM_ERROR("CompleteMultipartUpload", "Required field: Bucket, is not set");
  240. return CompleteMultipartUploadOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  241. }
  242. if (!request.KeyHasBeenSet())
  243. {
  244. AWS_LOGSTREAM_ERROR("CompleteMultipartUpload", "Required field: Key, is not set");
  245. return CompleteMultipartUploadOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  246. }
  247. if (!request.UploadIdHasBeenSet())
  248. {
  249. AWS_LOGSTREAM_ERROR("CompleteMultipartUpload", "Required field: UploadId, is not set");
  250. return CompleteMultipartUploadOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [UploadId]", false));
  251. }
  252. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  253. if (!computeEndpointOutcome.IsSuccess())
  254. {
  255. return CompleteMultipartUploadOutcome(computeEndpointOutcome.GetError());
  256. }
  257. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  258. Aws::StringStream ss;
  259. ss << "/";
  260. ss << request.GetKey();
  261. uri.SetPath(uri.GetPath() + ss.str());
  262. return CompleteMultipartUploadOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  263. }
  264. CompleteMultipartUploadOutcomeCallable S3Client::CompleteMultipartUploadCallable(const CompleteMultipartUploadRequest& request) const
  265. {
  266. auto task = Aws::MakeShared< std::packaged_task< CompleteMultipartUploadOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->CompleteMultipartUpload(request); } );
  267. auto packagedFunction = [task]() { (*task)(); };
  268. m_executor->Submit(packagedFunction);
  269. return task->get_future();
  270. }
  271. void S3Client::CompleteMultipartUploadAsync(const CompleteMultipartUploadRequest& request, const CompleteMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  272. {
  273. m_executor->Submit( [this, request, handler, context](){ this->CompleteMultipartUploadAsyncHelper( request, handler, context ); } );
  274. }
  275. void S3Client::CompleteMultipartUploadAsyncHelper(const CompleteMultipartUploadRequest& request, const CompleteMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  276. {
  277. handler(this, request, CompleteMultipartUpload(request), context);
  278. }
  279. CopyObjectOutcome S3Client::CopyObject(const CopyObjectRequest& request) const
  280. {
  281. if (!request.BucketHasBeenSet())
  282. {
  283. AWS_LOGSTREAM_ERROR("CopyObject", "Required field: Bucket, is not set");
  284. return CopyObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  285. }
  286. if (!request.CopySourceHasBeenSet())
  287. {
  288. AWS_LOGSTREAM_ERROR("CopyObject", "Required field: CopySource, is not set");
  289. return CopyObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [CopySource]", false));
  290. }
  291. if (!request.KeyHasBeenSet())
  292. {
  293. AWS_LOGSTREAM_ERROR("CopyObject", "Required field: Key, is not set");
  294. return CopyObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  295. }
  296. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  297. if (!computeEndpointOutcome.IsSuccess())
  298. {
  299. return CopyObjectOutcome(computeEndpointOutcome.GetError());
  300. }
  301. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  302. Aws::StringStream ss;
  303. ss << "/";
  304. ss << request.GetKey();
  305. uri.SetPath(uri.GetPath() + ss.str());
  306. return CopyObjectOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  307. }
  308. CopyObjectOutcomeCallable S3Client::CopyObjectCallable(const CopyObjectRequest& request) const
  309. {
  310. auto task = Aws::MakeShared< std::packaged_task< CopyObjectOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->CopyObject(request); } );
  311. auto packagedFunction = [task]() { (*task)(); };
  312. m_executor->Submit(packagedFunction);
  313. return task->get_future();
  314. }
  315. void S3Client::CopyObjectAsync(const CopyObjectRequest& request, const CopyObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  316. {
  317. m_executor->Submit( [this, request, handler, context](){ this->CopyObjectAsyncHelper( request, handler, context ); } );
  318. }
  319. void S3Client::CopyObjectAsyncHelper(const CopyObjectRequest& request, const CopyObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  320. {
  321. handler(this, request, CopyObject(request), context);
  322. }
  323. CreateBucketOutcome S3Client::CreateBucket(const CreateBucketRequest& request) const
  324. {
  325. if (!request.BucketHasBeenSet())
  326. {
  327. AWS_LOGSTREAM_ERROR("CreateBucket", "Required field: Bucket, is not set");
  328. return CreateBucketOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  329. }
  330. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString();
  331. if (!computeEndpointOutcome.IsSuccess())
  332. {
  333. return CreateBucketOutcome(computeEndpointOutcome.GetError());
  334. }
  335. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  336. Aws::StringStream ss;
  337. ss << "/";
  338. ss << request.GetBucket();
  339. uri.SetPath(uri.GetPath() + ss.str());
  340. return CreateBucketOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  341. }
  342. CreateBucketOutcomeCallable S3Client::CreateBucketCallable(const CreateBucketRequest& request) const
  343. {
  344. auto task = Aws::MakeShared< std::packaged_task< CreateBucketOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->CreateBucket(request); } );
  345. auto packagedFunction = [task]() { (*task)(); };
  346. m_executor->Submit(packagedFunction);
  347. return task->get_future();
  348. }
  349. void S3Client::CreateBucketAsync(const CreateBucketRequest& request, const CreateBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  350. {
  351. m_executor->Submit( [this, request, handler, context](){ this->CreateBucketAsyncHelper( request, handler, context ); } );
  352. }
  353. void S3Client::CreateBucketAsyncHelper(const CreateBucketRequest& request, const CreateBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  354. {
  355. handler(this, request, CreateBucket(request), context);
  356. }
  357. CreateMultipartUploadOutcome S3Client::CreateMultipartUpload(const CreateMultipartUploadRequest& request) const
  358. {
  359. if (!request.BucketHasBeenSet())
  360. {
  361. AWS_LOGSTREAM_ERROR("CreateMultipartUpload", "Required field: Bucket, is not set");
  362. return CreateMultipartUploadOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  363. }
  364. if (!request.KeyHasBeenSet())
  365. {
  366. AWS_LOGSTREAM_ERROR("CreateMultipartUpload", "Required field: Key, is not set");
  367. return CreateMultipartUploadOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  368. }
  369. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  370. if (!computeEndpointOutcome.IsSuccess())
  371. {
  372. return CreateMultipartUploadOutcome(computeEndpointOutcome.GetError());
  373. }
  374. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  375. Aws::StringStream ss;
  376. ss << "/";
  377. ss << request.GetKey();
  378. uri.SetPath(uri.GetPath() + ss.str());
  379. ss.str("?uploads");
  380. uri.SetQueryString(ss.str());
  381. return CreateMultipartUploadOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  382. }
  383. CreateMultipartUploadOutcomeCallable S3Client::CreateMultipartUploadCallable(const CreateMultipartUploadRequest& request) const
  384. {
  385. auto task = Aws::MakeShared< std::packaged_task< CreateMultipartUploadOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->CreateMultipartUpload(request); } );
  386. auto packagedFunction = [task]() { (*task)(); };
  387. m_executor->Submit(packagedFunction);
  388. return task->get_future();
  389. }
  390. void S3Client::CreateMultipartUploadAsync(const CreateMultipartUploadRequest& request, const CreateMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  391. {
  392. m_executor->Submit( [this, request, handler, context](){ this->CreateMultipartUploadAsyncHelper( request, handler, context ); } );
  393. }
  394. void S3Client::CreateMultipartUploadAsyncHelper(const CreateMultipartUploadRequest& request, const CreateMultipartUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  395. {
  396. handler(this, request, CreateMultipartUpload(request), context);
  397. }
  398. DeleteBucketOutcome S3Client::DeleteBucket(const DeleteBucketRequest& request) const
  399. {
  400. if (!request.BucketHasBeenSet())
  401. {
  402. AWS_LOGSTREAM_ERROR("DeleteBucket", "Required field: Bucket, is not set");
  403. return DeleteBucketOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  404. }
  405. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  406. if (!computeEndpointOutcome.IsSuccess())
  407. {
  408. return DeleteBucketOutcome(computeEndpointOutcome.GetError());
  409. }
  410. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  411. Aws::StringStream ss;
  412. uri.SetPath(uri.GetPath() + ss.str());
  413. return DeleteBucketOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  414. }
  415. DeleteBucketOutcomeCallable S3Client::DeleteBucketCallable(const DeleteBucketRequest& request) const
  416. {
  417. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucket(request); } );
  418. auto packagedFunction = [task]() { (*task)(); };
  419. m_executor->Submit(packagedFunction);
  420. return task->get_future();
  421. }
  422. void S3Client::DeleteBucketAsync(const DeleteBucketRequest& request, const DeleteBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  423. {
  424. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketAsyncHelper( request, handler, context ); } );
  425. }
  426. void S3Client::DeleteBucketAsyncHelper(const DeleteBucketRequest& request, const DeleteBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  427. {
  428. handler(this, request, DeleteBucket(request), context);
  429. }
  430. DeleteBucketAnalyticsConfigurationOutcome S3Client::DeleteBucketAnalyticsConfiguration(const DeleteBucketAnalyticsConfigurationRequest& request) const
  431. {
  432. if (!request.BucketHasBeenSet())
  433. {
  434. AWS_LOGSTREAM_ERROR("DeleteBucketAnalyticsConfiguration", "Required field: Bucket, is not set");
  435. return DeleteBucketAnalyticsConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  436. }
  437. if (!request.IdHasBeenSet())
  438. {
  439. AWS_LOGSTREAM_ERROR("DeleteBucketAnalyticsConfiguration", "Required field: Id, is not set");
  440. return DeleteBucketAnalyticsConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Id]", false));
  441. }
  442. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  443. if (!computeEndpointOutcome.IsSuccess())
  444. {
  445. return DeleteBucketAnalyticsConfigurationOutcome(computeEndpointOutcome.GetError());
  446. }
  447. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  448. Aws::StringStream ss;
  449. ss.str("?analytics");
  450. uri.SetQueryString(ss.str());
  451. return DeleteBucketAnalyticsConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  452. }
  453. DeleteBucketAnalyticsConfigurationOutcomeCallable S3Client::DeleteBucketAnalyticsConfigurationCallable(const DeleteBucketAnalyticsConfigurationRequest& request) const
  454. {
  455. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketAnalyticsConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucketAnalyticsConfiguration(request); } );
  456. auto packagedFunction = [task]() { (*task)(); };
  457. m_executor->Submit(packagedFunction);
  458. return task->get_future();
  459. }
  460. void S3Client::DeleteBucketAnalyticsConfigurationAsync(const DeleteBucketAnalyticsConfigurationRequest& request, const DeleteBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  461. {
  462. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketAnalyticsConfigurationAsyncHelper( request, handler, context ); } );
  463. }
  464. void S3Client::DeleteBucketAnalyticsConfigurationAsyncHelper(const DeleteBucketAnalyticsConfigurationRequest& request, const DeleteBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  465. {
  466. handler(this, request, DeleteBucketAnalyticsConfiguration(request), context);
  467. }
  468. DeleteBucketCorsOutcome S3Client::DeleteBucketCors(const DeleteBucketCorsRequest& request) const
  469. {
  470. if (!request.BucketHasBeenSet())
  471. {
  472. AWS_LOGSTREAM_ERROR("DeleteBucketCors", "Required field: Bucket, is not set");
  473. return DeleteBucketCorsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  474. }
  475. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  476. if (!computeEndpointOutcome.IsSuccess())
  477. {
  478. return DeleteBucketCorsOutcome(computeEndpointOutcome.GetError());
  479. }
  480. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  481. Aws::StringStream ss;
  482. ss.str("?cors");
  483. uri.SetQueryString(ss.str());
  484. return DeleteBucketCorsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  485. }
  486. DeleteBucketCorsOutcomeCallable S3Client::DeleteBucketCorsCallable(const DeleteBucketCorsRequest& request) const
  487. {
  488. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketCorsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucketCors(request); } );
  489. auto packagedFunction = [task]() { (*task)(); };
  490. m_executor->Submit(packagedFunction);
  491. return task->get_future();
  492. }
  493. void S3Client::DeleteBucketCorsAsync(const DeleteBucketCorsRequest& request, const DeleteBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  494. {
  495. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketCorsAsyncHelper( request, handler, context ); } );
  496. }
  497. void S3Client::DeleteBucketCorsAsyncHelper(const DeleteBucketCorsRequest& request, const DeleteBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  498. {
  499. handler(this, request, DeleteBucketCors(request), context);
  500. }
  501. DeleteBucketEncryptionOutcome S3Client::DeleteBucketEncryption(const DeleteBucketEncryptionRequest& request) const
  502. {
  503. if (!request.BucketHasBeenSet())
  504. {
  505. AWS_LOGSTREAM_ERROR("DeleteBucketEncryption", "Required field: Bucket, is not set");
  506. return DeleteBucketEncryptionOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  507. }
  508. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  509. if (!computeEndpointOutcome.IsSuccess())
  510. {
  511. return DeleteBucketEncryptionOutcome(computeEndpointOutcome.GetError());
  512. }
  513. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  514. Aws::StringStream ss;
  515. ss.str("?encryption");
  516. uri.SetQueryString(ss.str());
  517. return DeleteBucketEncryptionOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  518. }
  519. DeleteBucketEncryptionOutcomeCallable S3Client::DeleteBucketEncryptionCallable(const DeleteBucketEncryptionRequest& request) const
  520. {
  521. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketEncryptionOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucketEncryption(request); } );
  522. auto packagedFunction = [task]() { (*task)(); };
  523. m_executor->Submit(packagedFunction);
  524. return task->get_future();
  525. }
  526. void S3Client::DeleteBucketEncryptionAsync(const DeleteBucketEncryptionRequest& request, const DeleteBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  527. {
  528. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketEncryptionAsyncHelper( request, handler, context ); } );
  529. }
  530. void S3Client::DeleteBucketEncryptionAsyncHelper(const DeleteBucketEncryptionRequest& request, const DeleteBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  531. {
  532. handler(this, request, DeleteBucketEncryption(request), context);
  533. }
  534. DeleteBucketIntelligentTieringConfigurationOutcome S3Client::DeleteBucketIntelligentTieringConfiguration(const DeleteBucketIntelligentTieringConfigurationRequest& request) const
  535. {
  536. if (!request.BucketHasBeenSet())
  537. {
  538. AWS_LOGSTREAM_ERROR("DeleteBucketIntelligentTieringConfiguration", "Required field: Bucket, is not set");
  539. return DeleteBucketIntelligentTieringConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  540. }
  541. if (!request.IdHasBeenSet())
  542. {
  543. AWS_LOGSTREAM_ERROR("DeleteBucketIntelligentTieringConfiguration", "Required field: Id, is not set");
  544. return DeleteBucketIntelligentTieringConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Id]", false));
  545. }
  546. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  547. if (!computeEndpointOutcome.IsSuccess())
  548. {
  549. return DeleteBucketIntelligentTieringConfigurationOutcome(computeEndpointOutcome.GetError());
  550. }
  551. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  552. Aws::StringStream ss;
  553. ss.str("?intelligent-tiering");
  554. uri.SetQueryString(ss.str());
  555. return DeleteBucketIntelligentTieringConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  556. }
  557. DeleteBucketIntelligentTieringConfigurationOutcomeCallable S3Client::DeleteBucketIntelligentTieringConfigurationCallable(const DeleteBucketIntelligentTieringConfigurationRequest& request) const
  558. {
  559. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketIntelligentTieringConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucketIntelligentTieringConfiguration(request); } );
  560. auto packagedFunction = [task]() { (*task)(); };
  561. m_executor->Submit(packagedFunction);
  562. return task->get_future();
  563. }
  564. void S3Client::DeleteBucketIntelligentTieringConfigurationAsync(const DeleteBucketIntelligentTieringConfigurationRequest& request, const DeleteBucketIntelligentTieringConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  565. {
  566. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketIntelligentTieringConfigurationAsyncHelper( request, handler, context ); } );
  567. }
  568. void S3Client::DeleteBucketIntelligentTieringConfigurationAsyncHelper(const DeleteBucketIntelligentTieringConfigurationRequest& request, const DeleteBucketIntelligentTieringConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  569. {
  570. handler(this, request, DeleteBucketIntelligentTieringConfiguration(request), context);
  571. }
  572. DeleteBucketInventoryConfigurationOutcome S3Client::DeleteBucketInventoryConfiguration(const DeleteBucketInventoryConfigurationRequest& request) const
  573. {
  574. if (!request.BucketHasBeenSet())
  575. {
  576. AWS_LOGSTREAM_ERROR("DeleteBucketInventoryConfiguration", "Required field: Bucket, is not set");
  577. return DeleteBucketInventoryConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  578. }
  579. if (!request.IdHasBeenSet())
  580. {
  581. AWS_LOGSTREAM_ERROR("DeleteBucketInventoryConfiguration", "Required field: Id, is not set");
  582. return DeleteBucketInventoryConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Id]", false));
  583. }
  584. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  585. if (!computeEndpointOutcome.IsSuccess())
  586. {
  587. return DeleteBucketInventoryConfigurationOutcome(computeEndpointOutcome.GetError());
  588. }
  589. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  590. Aws::StringStream ss;
  591. ss.str("?inventory");
  592. uri.SetQueryString(ss.str());
  593. return DeleteBucketInventoryConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  594. }
  595. DeleteBucketInventoryConfigurationOutcomeCallable S3Client::DeleteBucketInventoryConfigurationCallable(const DeleteBucketInventoryConfigurationRequest& request) const
  596. {
  597. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketInventoryConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucketInventoryConfiguration(request); } );
  598. auto packagedFunction = [task]() { (*task)(); };
  599. m_executor->Submit(packagedFunction);
  600. return task->get_future();
  601. }
  602. void S3Client::DeleteBucketInventoryConfigurationAsync(const DeleteBucketInventoryConfigurationRequest& request, const DeleteBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  603. {
  604. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketInventoryConfigurationAsyncHelper( request, handler, context ); } );
  605. }
  606. void S3Client::DeleteBucketInventoryConfigurationAsyncHelper(const DeleteBucketInventoryConfigurationRequest& request, const DeleteBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  607. {
  608. handler(this, request, DeleteBucketInventoryConfiguration(request), context);
  609. }
  610. DeleteBucketLifecycleOutcome S3Client::DeleteBucketLifecycle(const DeleteBucketLifecycleRequest& request) const
  611. {
  612. if (!request.BucketHasBeenSet())
  613. {
  614. AWS_LOGSTREAM_ERROR("DeleteBucketLifecycle", "Required field: Bucket, is not set");
  615. return DeleteBucketLifecycleOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  616. }
  617. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  618. if (!computeEndpointOutcome.IsSuccess())
  619. {
  620. return DeleteBucketLifecycleOutcome(computeEndpointOutcome.GetError());
  621. }
  622. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  623. Aws::StringStream ss;
  624. ss.str("?lifecycle");
  625. uri.SetQueryString(ss.str());
  626. return DeleteBucketLifecycleOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  627. }
  628. DeleteBucketLifecycleOutcomeCallable S3Client::DeleteBucketLifecycleCallable(const DeleteBucketLifecycleRequest& request) const
  629. {
  630. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketLifecycleOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucketLifecycle(request); } );
  631. auto packagedFunction = [task]() { (*task)(); };
  632. m_executor->Submit(packagedFunction);
  633. return task->get_future();
  634. }
  635. void S3Client::DeleteBucketLifecycleAsync(const DeleteBucketLifecycleRequest& request, const DeleteBucketLifecycleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  636. {
  637. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketLifecycleAsyncHelper( request, handler, context ); } );
  638. }
  639. void S3Client::DeleteBucketLifecycleAsyncHelper(const DeleteBucketLifecycleRequest& request, const DeleteBucketLifecycleResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  640. {
  641. handler(this, request, DeleteBucketLifecycle(request), context);
  642. }
  643. DeleteBucketMetricsConfigurationOutcome S3Client::DeleteBucketMetricsConfiguration(const DeleteBucketMetricsConfigurationRequest& request) const
  644. {
  645. if (!request.BucketHasBeenSet())
  646. {
  647. AWS_LOGSTREAM_ERROR("DeleteBucketMetricsConfiguration", "Required field: Bucket, is not set");
  648. return DeleteBucketMetricsConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  649. }
  650. if (!request.IdHasBeenSet())
  651. {
  652. AWS_LOGSTREAM_ERROR("DeleteBucketMetricsConfiguration", "Required field: Id, is not set");
  653. return DeleteBucketMetricsConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Id]", false));
  654. }
  655. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  656. if (!computeEndpointOutcome.IsSuccess())
  657. {
  658. return DeleteBucketMetricsConfigurationOutcome(computeEndpointOutcome.GetError());
  659. }
  660. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  661. Aws::StringStream ss;
  662. ss.str("?metrics");
  663. uri.SetQueryString(ss.str());
  664. return DeleteBucketMetricsConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  665. }
  666. DeleteBucketMetricsConfigurationOutcomeCallable S3Client::DeleteBucketMetricsConfigurationCallable(const DeleteBucketMetricsConfigurationRequest& request) const
  667. {
  668. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketMetricsConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucketMetricsConfiguration(request); } );
  669. auto packagedFunction = [task]() { (*task)(); };
  670. m_executor->Submit(packagedFunction);
  671. return task->get_future();
  672. }
  673. void S3Client::DeleteBucketMetricsConfigurationAsync(const DeleteBucketMetricsConfigurationRequest& request, const DeleteBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  674. {
  675. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketMetricsConfigurationAsyncHelper( request, handler, context ); } );
  676. }
  677. void S3Client::DeleteBucketMetricsConfigurationAsyncHelper(const DeleteBucketMetricsConfigurationRequest& request, const DeleteBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  678. {
  679. handler(this, request, DeleteBucketMetricsConfiguration(request), context);
  680. }
  681. DeleteBucketOwnershipControlsOutcome S3Client::DeleteBucketOwnershipControls(const DeleteBucketOwnershipControlsRequest& request) const
  682. {
  683. if (!request.BucketHasBeenSet())
  684. {
  685. AWS_LOGSTREAM_ERROR("DeleteBucketOwnershipControls", "Required field: Bucket, is not set");
  686. return DeleteBucketOwnershipControlsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  687. }
  688. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  689. if (!computeEndpointOutcome.IsSuccess())
  690. {
  691. return DeleteBucketOwnershipControlsOutcome(computeEndpointOutcome.GetError());
  692. }
  693. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  694. Aws::StringStream ss;
  695. ss.str("?ownershipControls");
  696. uri.SetQueryString(ss.str());
  697. return DeleteBucketOwnershipControlsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  698. }
  699. DeleteBucketOwnershipControlsOutcomeCallable S3Client::DeleteBucketOwnershipControlsCallable(const DeleteBucketOwnershipControlsRequest& request) const
  700. {
  701. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketOwnershipControlsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucketOwnershipControls(request); } );
  702. auto packagedFunction = [task]() { (*task)(); };
  703. m_executor->Submit(packagedFunction);
  704. return task->get_future();
  705. }
  706. void S3Client::DeleteBucketOwnershipControlsAsync(const DeleteBucketOwnershipControlsRequest& request, const DeleteBucketOwnershipControlsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  707. {
  708. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketOwnershipControlsAsyncHelper( request, handler, context ); } );
  709. }
  710. void S3Client::DeleteBucketOwnershipControlsAsyncHelper(const DeleteBucketOwnershipControlsRequest& request, const DeleteBucketOwnershipControlsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  711. {
  712. handler(this, request, DeleteBucketOwnershipControls(request), context);
  713. }
  714. DeleteBucketPolicyOutcome S3Client::DeleteBucketPolicy(const DeleteBucketPolicyRequest& request) const
  715. {
  716. if (!request.BucketHasBeenSet())
  717. {
  718. AWS_LOGSTREAM_ERROR("DeleteBucketPolicy", "Required field: Bucket, is not set");
  719. return DeleteBucketPolicyOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  720. }
  721. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  722. if (!computeEndpointOutcome.IsSuccess())
  723. {
  724. return DeleteBucketPolicyOutcome(computeEndpointOutcome.GetError());
  725. }
  726. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  727. Aws::StringStream ss;
  728. ss.str("?policy");
  729. uri.SetQueryString(ss.str());
  730. return DeleteBucketPolicyOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  731. }
  732. DeleteBucketPolicyOutcomeCallable S3Client::DeleteBucketPolicyCallable(const DeleteBucketPolicyRequest& request) const
  733. {
  734. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketPolicyOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucketPolicy(request); } );
  735. auto packagedFunction = [task]() { (*task)(); };
  736. m_executor->Submit(packagedFunction);
  737. return task->get_future();
  738. }
  739. void S3Client::DeleteBucketPolicyAsync(const DeleteBucketPolicyRequest& request, const DeleteBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  740. {
  741. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketPolicyAsyncHelper( request, handler, context ); } );
  742. }
  743. void S3Client::DeleteBucketPolicyAsyncHelper(const DeleteBucketPolicyRequest& request, const DeleteBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  744. {
  745. handler(this, request, DeleteBucketPolicy(request), context);
  746. }
  747. DeleteBucketReplicationOutcome S3Client::DeleteBucketReplication(const DeleteBucketReplicationRequest& request) const
  748. {
  749. if (!request.BucketHasBeenSet())
  750. {
  751. AWS_LOGSTREAM_ERROR("DeleteBucketReplication", "Required field: Bucket, is not set");
  752. return DeleteBucketReplicationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  753. }
  754. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  755. if (!computeEndpointOutcome.IsSuccess())
  756. {
  757. return DeleteBucketReplicationOutcome(computeEndpointOutcome.GetError());
  758. }
  759. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  760. Aws::StringStream ss;
  761. ss.str("?replication");
  762. uri.SetQueryString(ss.str());
  763. return DeleteBucketReplicationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  764. }
  765. DeleteBucketReplicationOutcomeCallable S3Client::DeleteBucketReplicationCallable(const DeleteBucketReplicationRequest& request) const
  766. {
  767. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketReplicationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucketReplication(request); } );
  768. auto packagedFunction = [task]() { (*task)(); };
  769. m_executor->Submit(packagedFunction);
  770. return task->get_future();
  771. }
  772. void S3Client::DeleteBucketReplicationAsync(const DeleteBucketReplicationRequest& request, const DeleteBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  773. {
  774. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketReplicationAsyncHelper( request, handler, context ); } );
  775. }
  776. void S3Client::DeleteBucketReplicationAsyncHelper(const DeleteBucketReplicationRequest& request, const DeleteBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  777. {
  778. handler(this, request, DeleteBucketReplication(request), context);
  779. }
  780. DeleteBucketTaggingOutcome S3Client::DeleteBucketTagging(const DeleteBucketTaggingRequest& request) const
  781. {
  782. if (!request.BucketHasBeenSet())
  783. {
  784. AWS_LOGSTREAM_ERROR("DeleteBucketTagging", "Required field: Bucket, is not set");
  785. return DeleteBucketTaggingOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  786. }
  787. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  788. if (!computeEndpointOutcome.IsSuccess())
  789. {
  790. return DeleteBucketTaggingOutcome(computeEndpointOutcome.GetError());
  791. }
  792. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  793. Aws::StringStream ss;
  794. ss.str("?tagging");
  795. uri.SetQueryString(ss.str());
  796. return DeleteBucketTaggingOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  797. }
  798. DeleteBucketTaggingOutcomeCallable S3Client::DeleteBucketTaggingCallable(const DeleteBucketTaggingRequest& request) const
  799. {
  800. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketTaggingOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucketTagging(request); } );
  801. auto packagedFunction = [task]() { (*task)(); };
  802. m_executor->Submit(packagedFunction);
  803. return task->get_future();
  804. }
  805. void S3Client::DeleteBucketTaggingAsync(const DeleteBucketTaggingRequest& request, const DeleteBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  806. {
  807. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketTaggingAsyncHelper( request, handler, context ); } );
  808. }
  809. void S3Client::DeleteBucketTaggingAsyncHelper(const DeleteBucketTaggingRequest& request, const DeleteBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  810. {
  811. handler(this, request, DeleteBucketTagging(request), context);
  812. }
  813. DeleteBucketWebsiteOutcome S3Client::DeleteBucketWebsite(const DeleteBucketWebsiteRequest& request) const
  814. {
  815. if (!request.BucketHasBeenSet())
  816. {
  817. AWS_LOGSTREAM_ERROR("DeleteBucketWebsite", "Required field: Bucket, is not set");
  818. return DeleteBucketWebsiteOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  819. }
  820. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  821. if (!computeEndpointOutcome.IsSuccess())
  822. {
  823. return DeleteBucketWebsiteOutcome(computeEndpointOutcome.GetError());
  824. }
  825. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  826. Aws::StringStream ss;
  827. ss.str("?website");
  828. uri.SetQueryString(ss.str());
  829. return DeleteBucketWebsiteOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  830. }
  831. DeleteBucketWebsiteOutcomeCallable S3Client::DeleteBucketWebsiteCallable(const DeleteBucketWebsiteRequest& request) const
  832. {
  833. auto task = Aws::MakeShared< std::packaged_task< DeleteBucketWebsiteOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteBucketWebsite(request); } );
  834. auto packagedFunction = [task]() { (*task)(); };
  835. m_executor->Submit(packagedFunction);
  836. return task->get_future();
  837. }
  838. void S3Client::DeleteBucketWebsiteAsync(const DeleteBucketWebsiteRequest& request, const DeleteBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  839. {
  840. m_executor->Submit( [this, request, handler, context](){ this->DeleteBucketWebsiteAsyncHelper( request, handler, context ); } );
  841. }
  842. void S3Client::DeleteBucketWebsiteAsyncHelper(const DeleteBucketWebsiteRequest& request, const DeleteBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  843. {
  844. handler(this, request, DeleteBucketWebsite(request), context);
  845. }
  846. DeleteObjectOutcome S3Client::DeleteObject(const DeleteObjectRequest& request) const
  847. {
  848. if (!request.BucketHasBeenSet())
  849. {
  850. AWS_LOGSTREAM_ERROR("DeleteObject", "Required field: Bucket, is not set");
  851. return DeleteObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  852. }
  853. if (!request.KeyHasBeenSet())
  854. {
  855. AWS_LOGSTREAM_ERROR("DeleteObject", "Required field: Key, is not set");
  856. return DeleteObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  857. }
  858. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  859. if (!computeEndpointOutcome.IsSuccess())
  860. {
  861. return DeleteObjectOutcome(computeEndpointOutcome.GetError());
  862. }
  863. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  864. Aws::StringStream ss;
  865. ss << "/";
  866. ss << request.GetKey();
  867. uri.SetPath(uri.GetPath() + ss.str());
  868. return DeleteObjectOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  869. }
  870. DeleteObjectOutcomeCallable S3Client::DeleteObjectCallable(const DeleteObjectRequest& request) const
  871. {
  872. auto task = Aws::MakeShared< std::packaged_task< DeleteObjectOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteObject(request); } );
  873. auto packagedFunction = [task]() { (*task)(); };
  874. m_executor->Submit(packagedFunction);
  875. return task->get_future();
  876. }
  877. void S3Client::DeleteObjectAsync(const DeleteObjectRequest& request, const DeleteObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  878. {
  879. m_executor->Submit( [this, request, handler, context](){ this->DeleteObjectAsyncHelper( request, handler, context ); } );
  880. }
  881. void S3Client::DeleteObjectAsyncHelper(const DeleteObjectRequest& request, const DeleteObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  882. {
  883. handler(this, request, DeleteObject(request), context);
  884. }
  885. DeleteObjectTaggingOutcome S3Client::DeleteObjectTagging(const DeleteObjectTaggingRequest& request) const
  886. {
  887. if (!request.BucketHasBeenSet())
  888. {
  889. AWS_LOGSTREAM_ERROR("DeleteObjectTagging", "Required field: Bucket, is not set");
  890. return DeleteObjectTaggingOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  891. }
  892. if (!request.KeyHasBeenSet())
  893. {
  894. AWS_LOGSTREAM_ERROR("DeleteObjectTagging", "Required field: Key, is not set");
  895. return DeleteObjectTaggingOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  896. }
  897. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  898. if (!computeEndpointOutcome.IsSuccess())
  899. {
  900. return DeleteObjectTaggingOutcome(computeEndpointOutcome.GetError());
  901. }
  902. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  903. Aws::StringStream ss;
  904. ss << "/";
  905. ss << request.GetKey();
  906. uri.SetPath(uri.GetPath() + ss.str());
  907. ss.str("?tagging");
  908. uri.SetQueryString(ss.str());
  909. return DeleteObjectTaggingOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  910. }
  911. DeleteObjectTaggingOutcomeCallable S3Client::DeleteObjectTaggingCallable(const DeleteObjectTaggingRequest& request) const
  912. {
  913. auto task = Aws::MakeShared< std::packaged_task< DeleteObjectTaggingOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteObjectTagging(request); } );
  914. auto packagedFunction = [task]() { (*task)(); };
  915. m_executor->Submit(packagedFunction);
  916. return task->get_future();
  917. }
  918. void S3Client::DeleteObjectTaggingAsync(const DeleteObjectTaggingRequest& request, const DeleteObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  919. {
  920. m_executor->Submit( [this, request, handler, context](){ this->DeleteObjectTaggingAsyncHelper( request, handler, context ); } );
  921. }
  922. void S3Client::DeleteObjectTaggingAsyncHelper(const DeleteObjectTaggingRequest& request, const DeleteObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  923. {
  924. handler(this, request, DeleteObjectTagging(request), context);
  925. }
  926. DeleteObjectsOutcome S3Client::DeleteObjects(const DeleteObjectsRequest& request) const
  927. {
  928. if (!request.BucketHasBeenSet())
  929. {
  930. AWS_LOGSTREAM_ERROR("DeleteObjects", "Required field: Bucket, is not set");
  931. return DeleteObjectsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  932. }
  933. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  934. if (!computeEndpointOutcome.IsSuccess())
  935. {
  936. return DeleteObjectsOutcome(computeEndpointOutcome.GetError());
  937. }
  938. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  939. Aws::StringStream ss;
  940. ss.str("?delete");
  941. uri.SetQueryString(ss.str());
  942. return DeleteObjectsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  943. }
  944. DeleteObjectsOutcomeCallable S3Client::DeleteObjectsCallable(const DeleteObjectsRequest& request) const
  945. {
  946. auto task = Aws::MakeShared< std::packaged_task< DeleteObjectsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteObjects(request); } );
  947. auto packagedFunction = [task]() { (*task)(); };
  948. m_executor->Submit(packagedFunction);
  949. return task->get_future();
  950. }
  951. void S3Client::DeleteObjectsAsync(const DeleteObjectsRequest& request, const DeleteObjectsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  952. {
  953. m_executor->Submit( [this, request, handler, context](){ this->DeleteObjectsAsyncHelper( request, handler, context ); } );
  954. }
  955. void S3Client::DeleteObjectsAsyncHelper(const DeleteObjectsRequest& request, const DeleteObjectsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  956. {
  957. handler(this, request, DeleteObjects(request), context);
  958. }
  959. DeletePublicAccessBlockOutcome S3Client::DeletePublicAccessBlock(const DeletePublicAccessBlockRequest& request) const
  960. {
  961. if (!request.BucketHasBeenSet())
  962. {
  963. AWS_LOGSTREAM_ERROR("DeletePublicAccessBlock", "Required field: Bucket, is not set");
  964. return DeletePublicAccessBlockOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  965. }
  966. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  967. if (!computeEndpointOutcome.IsSuccess())
  968. {
  969. return DeletePublicAccessBlockOutcome(computeEndpointOutcome.GetError());
  970. }
  971. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  972. Aws::StringStream ss;
  973. ss.str("?publicAccessBlock");
  974. uri.SetQueryString(ss.str());
  975. return DeletePublicAccessBlockOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_DELETE, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  976. }
  977. DeletePublicAccessBlockOutcomeCallable S3Client::DeletePublicAccessBlockCallable(const DeletePublicAccessBlockRequest& request) const
  978. {
  979. auto task = Aws::MakeShared< std::packaged_task< DeletePublicAccessBlockOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeletePublicAccessBlock(request); } );
  980. auto packagedFunction = [task]() { (*task)(); };
  981. m_executor->Submit(packagedFunction);
  982. return task->get_future();
  983. }
  984. void S3Client::DeletePublicAccessBlockAsync(const DeletePublicAccessBlockRequest& request, const DeletePublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  985. {
  986. m_executor->Submit( [this, request, handler, context](){ this->DeletePublicAccessBlockAsyncHelper( request, handler, context ); } );
  987. }
  988. void S3Client::DeletePublicAccessBlockAsyncHelper(const DeletePublicAccessBlockRequest& request, const DeletePublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  989. {
  990. handler(this, request, DeletePublicAccessBlock(request), context);
  991. }
  992. GetBucketAccelerateConfigurationOutcome S3Client::GetBucketAccelerateConfiguration(const GetBucketAccelerateConfigurationRequest& request) const
  993. {
  994. if (!request.BucketHasBeenSet())
  995. {
  996. AWS_LOGSTREAM_ERROR("GetBucketAccelerateConfiguration", "Required field: Bucket, is not set");
  997. return GetBucketAccelerateConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  998. }
  999. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1000. if (!computeEndpointOutcome.IsSuccess())
  1001. {
  1002. return GetBucketAccelerateConfigurationOutcome(computeEndpointOutcome.GetError());
  1003. }
  1004. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1005. Aws::StringStream ss;
  1006. ss.str("?accelerate");
  1007. uri.SetQueryString(ss.str());
  1008. return GetBucketAccelerateConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1009. }
  1010. GetBucketAccelerateConfigurationOutcomeCallable S3Client::GetBucketAccelerateConfigurationCallable(const GetBucketAccelerateConfigurationRequest& request) const
  1011. {
  1012. auto task = Aws::MakeShared< std::packaged_task< GetBucketAccelerateConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketAccelerateConfiguration(request); } );
  1013. auto packagedFunction = [task]() { (*task)(); };
  1014. m_executor->Submit(packagedFunction);
  1015. return task->get_future();
  1016. }
  1017. void S3Client::GetBucketAccelerateConfigurationAsync(const GetBucketAccelerateConfigurationRequest& request, const GetBucketAccelerateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1018. {
  1019. m_executor->Submit( [this, request, handler, context](){ this->GetBucketAccelerateConfigurationAsyncHelper( request, handler, context ); } );
  1020. }
  1021. void S3Client::GetBucketAccelerateConfigurationAsyncHelper(const GetBucketAccelerateConfigurationRequest& request, const GetBucketAccelerateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1022. {
  1023. handler(this, request, GetBucketAccelerateConfiguration(request), context);
  1024. }
  1025. GetBucketAclOutcome S3Client::GetBucketAcl(const GetBucketAclRequest& request) const
  1026. {
  1027. if (!request.BucketHasBeenSet())
  1028. {
  1029. AWS_LOGSTREAM_ERROR("GetBucketAcl", "Required field: Bucket, is not set");
  1030. return GetBucketAclOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1031. }
  1032. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1033. if (!computeEndpointOutcome.IsSuccess())
  1034. {
  1035. return GetBucketAclOutcome(computeEndpointOutcome.GetError());
  1036. }
  1037. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1038. Aws::StringStream ss;
  1039. ss.str("?acl");
  1040. uri.SetQueryString(ss.str());
  1041. return GetBucketAclOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1042. }
  1043. GetBucketAclOutcomeCallable S3Client::GetBucketAclCallable(const GetBucketAclRequest& request) const
  1044. {
  1045. auto task = Aws::MakeShared< std::packaged_task< GetBucketAclOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketAcl(request); } );
  1046. auto packagedFunction = [task]() { (*task)(); };
  1047. m_executor->Submit(packagedFunction);
  1048. return task->get_future();
  1049. }
  1050. void S3Client::GetBucketAclAsync(const GetBucketAclRequest& request, const GetBucketAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1051. {
  1052. m_executor->Submit( [this, request, handler, context](){ this->GetBucketAclAsyncHelper( request, handler, context ); } );
  1053. }
  1054. void S3Client::GetBucketAclAsyncHelper(const GetBucketAclRequest& request, const GetBucketAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1055. {
  1056. handler(this, request, GetBucketAcl(request), context);
  1057. }
  1058. GetBucketAnalyticsConfigurationOutcome S3Client::GetBucketAnalyticsConfiguration(const GetBucketAnalyticsConfigurationRequest& request) const
  1059. {
  1060. if (!request.BucketHasBeenSet())
  1061. {
  1062. AWS_LOGSTREAM_ERROR("GetBucketAnalyticsConfiguration", "Required field: Bucket, is not set");
  1063. return GetBucketAnalyticsConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1064. }
  1065. if (!request.IdHasBeenSet())
  1066. {
  1067. AWS_LOGSTREAM_ERROR("GetBucketAnalyticsConfiguration", "Required field: Id, is not set");
  1068. return GetBucketAnalyticsConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Id]", false));
  1069. }
  1070. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1071. if (!computeEndpointOutcome.IsSuccess())
  1072. {
  1073. return GetBucketAnalyticsConfigurationOutcome(computeEndpointOutcome.GetError());
  1074. }
  1075. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1076. Aws::StringStream ss;
  1077. ss.str("?analytics");
  1078. uri.SetQueryString(ss.str());
  1079. return GetBucketAnalyticsConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1080. }
  1081. GetBucketAnalyticsConfigurationOutcomeCallable S3Client::GetBucketAnalyticsConfigurationCallable(const GetBucketAnalyticsConfigurationRequest& request) const
  1082. {
  1083. auto task = Aws::MakeShared< std::packaged_task< GetBucketAnalyticsConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketAnalyticsConfiguration(request); } );
  1084. auto packagedFunction = [task]() { (*task)(); };
  1085. m_executor->Submit(packagedFunction);
  1086. return task->get_future();
  1087. }
  1088. void S3Client::GetBucketAnalyticsConfigurationAsync(const GetBucketAnalyticsConfigurationRequest& request, const GetBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1089. {
  1090. m_executor->Submit( [this, request, handler, context](){ this->GetBucketAnalyticsConfigurationAsyncHelper( request, handler, context ); } );
  1091. }
  1092. void S3Client::GetBucketAnalyticsConfigurationAsyncHelper(const GetBucketAnalyticsConfigurationRequest& request, const GetBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1093. {
  1094. handler(this, request, GetBucketAnalyticsConfiguration(request), context);
  1095. }
  1096. GetBucketCorsOutcome S3Client::GetBucketCors(const GetBucketCorsRequest& request) const
  1097. {
  1098. if (!request.BucketHasBeenSet())
  1099. {
  1100. AWS_LOGSTREAM_ERROR("GetBucketCors", "Required field: Bucket, is not set");
  1101. return GetBucketCorsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1102. }
  1103. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1104. if (!computeEndpointOutcome.IsSuccess())
  1105. {
  1106. return GetBucketCorsOutcome(computeEndpointOutcome.GetError());
  1107. }
  1108. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1109. Aws::StringStream ss;
  1110. ss.str("?cors");
  1111. uri.SetQueryString(ss.str());
  1112. return GetBucketCorsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1113. }
  1114. GetBucketCorsOutcomeCallable S3Client::GetBucketCorsCallable(const GetBucketCorsRequest& request) const
  1115. {
  1116. auto task = Aws::MakeShared< std::packaged_task< GetBucketCorsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketCors(request); } );
  1117. auto packagedFunction = [task]() { (*task)(); };
  1118. m_executor->Submit(packagedFunction);
  1119. return task->get_future();
  1120. }
  1121. void S3Client::GetBucketCorsAsync(const GetBucketCorsRequest& request, const GetBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1122. {
  1123. m_executor->Submit( [this, request, handler, context](){ this->GetBucketCorsAsyncHelper( request, handler, context ); } );
  1124. }
  1125. void S3Client::GetBucketCorsAsyncHelper(const GetBucketCorsRequest& request, const GetBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1126. {
  1127. handler(this, request, GetBucketCors(request), context);
  1128. }
  1129. GetBucketEncryptionOutcome S3Client::GetBucketEncryption(const GetBucketEncryptionRequest& request) const
  1130. {
  1131. if (!request.BucketHasBeenSet())
  1132. {
  1133. AWS_LOGSTREAM_ERROR("GetBucketEncryption", "Required field: Bucket, is not set");
  1134. return GetBucketEncryptionOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1135. }
  1136. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1137. if (!computeEndpointOutcome.IsSuccess())
  1138. {
  1139. return GetBucketEncryptionOutcome(computeEndpointOutcome.GetError());
  1140. }
  1141. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1142. Aws::StringStream ss;
  1143. ss.str("?encryption");
  1144. uri.SetQueryString(ss.str());
  1145. return GetBucketEncryptionOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1146. }
  1147. GetBucketEncryptionOutcomeCallable S3Client::GetBucketEncryptionCallable(const GetBucketEncryptionRequest& request) const
  1148. {
  1149. auto task = Aws::MakeShared< std::packaged_task< GetBucketEncryptionOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketEncryption(request); } );
  1150. auto packagedFunction = [task]() { (*task)(); };
  1151. m_executor->Submit(packagedFunction);
  1152. return task->get_future();
  1153. }
  1154. void S3Client::GetBucketEncryptionAsync(const GetBucketEncryptionRequest& request, const GetBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1155. {
  1156. m_executor->Submit( [this, request, handler, context](){ this->GetBucketEncryptionAsyncHelper( request, handler, context ); } );
  1157. }
  1158. void S3Client::GetBucketEncryptionAsyncHelper(const GetBucketEncryptionRequest& request, const GetBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1159. {
  1160. handler(this, request, GetBucketEncryption(request), context);
  1161. }
  1162. GetBucketIntelligentTieringConfigurationOutcome S3Client::GetBucketIntelligentTieringConfiguration(const GetBucketIntelligentTieringConfigurationRequest& request) const
  1163. {
  1164. if (!request.BucketHasBeenSet())
  1165. {
  1166. AWS_LOGSTREAM_ERROR("GetBucketIntelligentTieringConfiguration", "Required field: Bucket, is not set");
  1167. return GetBucketIntelligentTieringConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1168. }
  1169. if (!request.IdHasBeenSet())
  1170. {
  1171. AWS_LOGSTREAM_ERROR("GetBucketIntelligentTieringConfiguration", "Required field: Id, is not set");
  1172. return GetBucketIntelligentTieringConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Id]", false));
  1173. }
  1174. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1175. if (!computeEndpointOutcome.IsSuccess())
  1176. {
  1177. return GetBucketIntelligentTieringConfigurationOutcome(computeEndpointOutcome.GetError());
  1178. }
  1179. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1180. Aws::StringStream ss;
  1181. ss.str("?intelligent-tiering");
  1182. uri.SetQueryString(ss.str());
  1183. return GetBucketIntelligentTieringConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1184. }
  1185. GetBucketIntelligentTieringConfigurationOutcomeCallable S3Client::GetBucketIntelligentTieringConfigurationCallable(const GetBucketIntelligentTieringConfigurationRequest& request) const
  1186. {
  1187. auto task = Aws::MakeShared< std::packaged_task< GetBucketIntelligentTieringConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketIntelligentTieringConfiguration(request); } );
  1188. auto packagedFunction = [task]() { (*task)(); };
  1189. m_executor->Submit(packagedFunction);
  1190. return task->get_future();
  1191. }
  1192. void S3Client::GetBucketIntelligentTieringConfigurationAsync(const GetBucketIntelligentTieringConfigurationRequest& request, const GetBucketIntelligentTieringConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1193. {
  1194. m_executor->Submit( [this, request, handler, context](){ this->GetBucketIntelligentTieringConfigurationAsyncHelper( request, handler, context ); } );
  1195. }
  1196. void S3Client::GetBucketIntelligentTieringConfigurationAsyncHelper(const GetBucketIntelligentTieringConfigurationRequest& request, const GetBucketIntelligentTieringConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1197. {
  1198. handler(this, request, GetBucketIntelligentTieringConfiguration(request), context);
  1199. }
  1200. GetBucketInventoryConfigurationOutcome S3Client::GetBucketInventoryConfiguration(const GetBucketInventoryConfigurationRequest& request) const
  1201. {
  1202. if (!request.BucketHasBeenSet())
  1203. {
  1204. AWS_LOGSTREAM_ERROR("GetBucketInventoryConfiguration", "Required field: Bucket, is not set");
  1205. return GetBucketInventoryConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1206. }
  1207. if (!request.IdHasBeenSet())
  1208. {
  1209. AWS_LOGSTREAM_ERROR("GetBucketInventoryConfiguration", "Required field: Id, is not set");
  1210. return GetBucketInventoryConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Id]", false));
  1211. }
  1212. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1213. if (!computeEndpointOutcome.IsSuccess())
  1214. {
  1215. return GetBucketInventoryConfigurationOutcome(computeEndpointOutcome.GetError());
  1216. }
  1217. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1218. Aws::StringStream ss;
  1219. ss.str("?inventory");
  1220. uri.SetQueryString(ss.str());
  1221. return GetBucketInventoryConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1222. }
  1223. GetBucketInventoryConfigurationOutcomeCallable S3Client::GetBucketInventoryConfigurationCallable(const GetBucketInventoryConfigurationRequest& request) const
  1224. {
  1225. auto task = Aws::MakeShared< std::packaged_task< GetBucketInventoryConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketInventoryConfiguration(request); } );
  1226. auto packagedFunction = [task]() { (*task)(); };
  1227. m_executor->Submit(packagedFunction);
  1228. return task->get_future();
  1229. }
  1230. void S3Client::GetBucketInventoryConfigurationAsync(const GetBucketInventoryConfigurationRequest& request, const GetBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1231. {
  1232. m_executor->Submit( [this, request, handler, context](){ this->GetBucketInventoryConfigurationAsyncHelper( request, handler, context ); } );
  1233. }
  1234. void S3Client::GetBucketInventoryConfigurationAsyncHelper(const GetBucketInventoryConfigurationRequest& request, const GetBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1235. {
  1236. handler(this, request, GetBucketInventoryConfiguration(request), context);
  1237. }
  1238. GetBucketLifecycleConfigurationOutcome S3Client::GetBucketLifecycleConfiguration(const GetBucketLifecycleConfigurationRequest& request) const
  1239. {
  1240. if (!request.BucketHasBeenSet())
  1241. {
  1242. AWS_LOGSTREAM_ERROR("GetBucketLifecycleConfiguration", "Required field: Bucket, is not set");
  1243. return GetBucketLifecycleConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1244. }
  1245. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1246. if (!computeEndpointOutcome.IsSuccess())
  1247. {
  1248. return GetBucketLifecycleConfigurationOutcome(computeEndpointOutcome.GetError());
  1249. }
  1250. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1251. Aws::StringStream ss;
  1252. ss.str("?lifecycle");
  1253. uri.SetQueryString(ss.str());
  1254. return GetBucketLifecycleConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1255. }
  1256. GetBucketLifecycleConfigurationOutcomeCallable S3Client::GetBucketLifecycleConfigurationCallable(const GetBucketLifecycleConfigurationRequest& request) const
  1257. {
  1258. auto task = Aws::MakeShared< std::packaged_task< GetBucketLifecycleConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketLifecycleConfiguration(request); } );
  1259. auto packagedFunction = [task]() { (*task)(); };
  1260. m_executor->Submit(packagedFunction);
  1261. return task->get_future();
  1262. }
  1263. void S3Client::GetBucketLifecycleConfigurationAsync(const GetBucketLifecycleConfigurationRequest& request, const GetBucketLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1264. {
  1265. m_executor->Submit( [this, request, handler, context](){ this->GetBucketLifecycleConfigurationAsyncHelper( request, handler, context ); } );
  1266. }
  1267. void S3Client::GetBucketLifecycleConfigurationAsyncHelper(const GetBucketLifecycleConfigurationRequest& request, const GetBucketLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1268. {
  1269. handler(this, request, GetBucketLifecycleConfiguration(request), context);
  1270. }
  1271. GetBucketLocationOutcome S3Client::GetBucketLocation(const GetBucketLocationRequest& request) const
  1272. {
  1273. if (!request.BucketHasBeenSet())
  1274. {
  1275. AWS_LOGSTREAM_ERROR("GetBucketLocation", "Required field: Bucket, is not set");
  1276. return GetBucketLocationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1277. }
  1278. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1279. if (!computeEndpointOutcome.IsSuccess())
  1280. {
  1281. return GetBucketLocationOutcome(computeEndpointOutcome.GetError());
  1282. }
  1283. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1284. Aws::StringStream ss;
  1285. ss.str("?location");
  1286. uri.SetQueryString(ss.str());
  1287. return GetBucketLocationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1288. }
  1289. GetBucketLocationOutcomeCallable S3Client::GetBucketLocationCallable(const GetBucketLocationRequest& request) const
  1290. {
  1291. auto task = Aws::MakeShared< std::packaged_task< GetBucketLocationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketLocation(request); } );
  1292. auto packagedFunction = [task]() { (*task)(); };
  1293. m_executor->Submit(packagedFunction);
  1294. return task->get_future();
  1295. }
  1296. void S3Client::GetBucketLocationAsync(const GetBucketLocationRequest& request, const GetBucketLocationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1297. {
  1298. m_executor->Submit( [this, request, handler, context](){ this->GetBucketLocationAsyncHelper( request, handler, context ); } );
  1299. }
  1300. void S3Client::GetBucketLocationAsyncHelper(const GetBucketLocationRequest& request, const GetBucketLocationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1301. {
  1302. handler(this, request, GetBucketLocation(request), context);
  1303. }
  1304. GetBucketLoggingOutcome S3Client::GetBucketLogging(const GetBucketLoggingRequest& request) const
  1305. {
  1306. if (!request.BucketHasBeenSet())
  1307. {
  1308. AWS_LOGSTREAM_ERROR("GetBucketLogging", "Required field: Bucket, is not set");
  1309. return GetBucketLoggingOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1310. }
  1311. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1312. if (!computeEndpointOutcome.IsSuccess())
  1313. {
  1314. return GetBucketLoggingOutcome(computeEndpointOutcome.GetError());
  1315. }
  1316. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1317. Aws::StringStream ss;
  1318. ss.str("?logging");
  1319. uri.SetQueryString(ss.str());
  1320. return GetBucketLoggingOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1321. }
  1322. GetBucketLoggingOutcomeCallable S3Client::GetBucketLoggingCallable(const GetBucketLoggingRequest& request) const
  1323. {
  1324. auto task = Aws::MakeShared< std::packaged_task< GetBucketLoggingOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketLogging(request); } );
  1325. auto packagedFunction = [task]() { (*task)(); };
  1326. m_executor->Submit(packagedFunction);
  1327. return task->get_future();
  1328. }
  1329. void S3Client::GetBucketLoggingAsync(const GetBucketLoggingRequest& request, const GetBucketLoggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1330. {
  1331. m_executor->Submit( [this, request, handler, context](){ this->GetBucketLoggingAsyncHelper( request, handler, context ); } );
  1332. }
  1333. void S3Client::GetBucketLoggingAsyncHelper(const GetBucketLoggingRequest& request, const GetBucketLoggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1334. {
  1335. handler(this, request, GetBucketLogging(request), context);
  1336. }
  1337. GetBucketMetricsConfigurationOutcome S3Client::GetBucketMetricsConfiguration(const GetBucketMetricsConfigurationRequest& request) const
  1338. {
  1339. if (!request.BucketHasBeenSet())
  1340. {
  1341. AWS_LOGSTREAM_ERROR("GetBucketMetricsConfiguration", "Required field: Bucket, is not set");
  1342. return GetBucketMetricsConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1343. }
  1344. if (!request.IdHasBeenSet())
  1345. {
  1346. AWS_LOGSTREAM_ERROR("GetBucketMetricsConfiguration", "Required field: Id, is not set");
  1347. return GetBucketMetricsConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Id]", false));
  1348. }
  1349. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1350. if (!computeEndpointOutcome.IsSuccess())
  1351. {
  1352. return GetBucketMetricsConfigurationOutcome(computeEndpointOutcome.GetError());
  1353. }
  1354. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1355. Aws::StringStream ss;
  1356. ss.str("?metrics");
  1357. uri.SetQueryString(ss.str());
  1358. return GetBucketMetricsConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1359. }
  1360. GetBucketMetricsConfigurationOutcomeCallable S3Client::GetBucketMetricsConfigurationCallable(const GetBucketMetricsConfigurationRequest& request) const
  1361. {
  1362. auto task = Aws::MakeShared< std::packaged_task< GetBucketMetricsConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketMetricsConfiguration(request); } );
  1363. auto packagedFunction = [task]() { (*task)(); };
  1364. m_executor->Submit(packagedFunction);
  1365. return task->get_future();
  1366. }
  1367. void S3Client::GetBucketMetricsConfigurationAsync(const GetBucketMetricsConfigurationRequest& request, const GetBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1368. {
  1369. m_executor->Submit( [this, request, handler, context](){ this->GetBucketMetricsConfigurationAsyncHelper( request, handler, context ); } );
  1370. }
  1371. void S3Client::GetBucketMetricsConfigurationAsyncHelper(const GetBucketMetricsConfigurationRequest& request, const GetBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1372. {
  1373. handler(this, request, GetBucketMetricsConfiguration(request), context);
  1374. }
  1375. GetBucketNotificationConfigurationOutcome S3Client::GetBucketNotificationConfiguration(const GetBucketNotificationConfigurationRequest& request) const
  1376. {
  1377. if (!request.BucketHasBeenSet())
  1378. {
  1379. AWS_LOGSTREAM_ERROR("GetBucketNotificationConfiguration", "Required field: Bucket, is not set");
  1380. return GetBucketNotificationConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1381. }
  1382. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1383. if (!computeEndpointOutcome.IsSuccess())
  1384. {
  1385. return GetBucketNotificationConfigurationOutcome(computeEndpointOutcome.GetError());
  1386. }
  1387. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1388. Aws::StringStream ss;
  1389. ss.str("?notification");
  1390. uri.SetQueryString(ss.str());
  1391. return GetBucketNotificationConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1392. }
  1393. GetBucketNotificationConfigurationOutcomeCallable S3Client::GetBucketNotificationConfigurationCallable(const GetBucketNotificationConfigurationRequest& request) const
  1394. {
  1395. auto task = Aws::MakeShared< std::packaged_task< GetBucketNotificationConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketNotificationConfiguration(request); } );
  1396. auto packagedFunction = [task]() { (*task)(); };
  1397. m_executor->Submit(packagedFunction);
  1398. return task->get_future();
  1399. }
  1400. void S3Client::GetBucketNotificationConfigurationAsync(const GetBucketNotificationConfigurationRequest& request, const GetBucketNotificationConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1401. {
  1402. m_executor->Submit( [this, request, handler, context](){ this->GetBucketNotificationConfigurationAsyncHelper( request, handler, context ); } );
  1403. }
  1404. void S3Client::GetBucketNotificationConfigurationAsyncHelper(const GetBucketNotificationConfigurationRequest& request, const GetBucketNotificationConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1405. {
  1406. handler(this, request, GetBucketNotificationConfiguration(request), context);
  1407. }
  1408. GetBucketOwnershipControlsOutcome S3Client::GetBucketOwnershipControls(const GetBucketOwnershipControlsRequest& request) const
  1409. {
  1410. if (!request.BucketHasBeenSet())
  1411. {
  1412. AWS_LOGSTREAM_ERROR("GetBucketOwnershipControls", "Required field: Bucket, is not set");
  1413. return GetBucketOwnershipControlsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1414. }
  1415. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1416. if (!computeEndpointOutcome.IsSuccess())
  1417. {
  1418. return GetBucketOwnershipControlsOutcome(computeEndpointOutcome.GetError());
  1419. }
  1420. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1421. Aws::StringStream ss;
  1422. ss.str("?ownershipControls");
  1423. uri.SetQueryString(ss.str());
  1424. return GetBucketOwnershipControlsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1425. }
  1426. GetBucketOwnershipControlsOutcomeCallable S3Client::GetBucketOwnershipControlsCallable(const GetBucketOwnershipControlsRequest& request) const
  1427. {
  1428. auto task = Aws::MakeShared< std::packaged_task< GetBucketOwnershipControlsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketOwnershipControls(request); } );
  1429. auto packagedFunction = [task]() { (*task)(); };
  1430. m_executor->Submit(packagedFunction);
  1431. return task->get_future();
  1432. }
  1433. void S3Client::GetBucketOwnershipControlsAsync(const GetBucketOwnershipControlsRequest& request, const GetBucketOwnershipControlsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1434. {
  1435. m_executor->Submit( [this, request, handler, context](){ this->GetBucketOwnershipControlsAsyncHelper( request, handler, context ); } );
  1436. }
  1437. void S3Client::GetBucketOwnershipControlsAsyncHelper(const GetBucketOwnershipControlsRequest& request, const GetBucketOwnershipControlsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1438. {
  1439. handler(this, request, GetBucketOwnershipControls(request), context);
  1440. }
  1441. GetBucketPolicyOutcome S3Client::GetBucketPolicy(const GetBucketPolicyRequest& request) const
  1442. {
  1443. if (!request.BucketHasBeenSet())
  1444. {
  1445. AWS_LOGSTREAM_ERROR("GetBucketPolicy", "Required field: Bucket, is not set");
  1446. return GetBucketPolicyOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1447. }
  1448. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1449. if (!computeEndpointOutcome.IsSuccess())
  1450. {
  1451. return GetBucketPolicyOutcome(computeEndpointOutcome.GetError());
  1452. }
  1453. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1454. Aws::StringStream ss;
  1455. ss.str("?policy");
  1456. uri.SetQueryString(ss.str());
  1457. return GetBucketPolicyOutcome(MakeRequestWithUnparsedResponse(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1458. }
  1459. GetBucketPolicyOutcomeCallable S3Client::GetBucketPolicyCallable(const GetBucketPolicyRequest& request) const
  1460. {
  1461. auto task = Aws::MakeShared< std::packaged_task< GetBucketPolicyOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketPolicy(request); } );
  1462. auto packagedFunction = [task]() { (*task)(); };
  1463. m_executor->Submit(packagedFunction);
  1464. return task->get_future();
  1465. }
  1466. void S3Client::GetBucketPolicyAsync(const GetBucketPolicyRequest& request, const GetBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1467. {
  1468. m_executor->Submit( [this, request, handler, context](){ this->GetBucketPolicyAsyncHelper( request, handler, context ); } );
  1469. }
  1470. void S3Client::GetBucketPolicyAsyncHelper(const GetBucketPolicyRequest& request, const GetBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1471. {
  1472. handler(this, request, GetBucketPolicy(request), context);
  1473. }
  1474. GetBucketPolicyStatusOutcome S3Client::GetBucketPolicyStatus(const GetBucketPolicyStatusRequest& request) const
  1475. {
  1476. if (!request.BucketHasBeenSet())
  1477. {
  1478. AWS_LOGSTREAM_ERROR("GetBucketPolicyStatus", "Required field: Bucket, is not set");
  1479. return GetBucketPolicyStatusOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1480. }
  1481. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1482. if (!computeEndpointOutcome.IsSuccess())
  1483. {
  1484. return GetBucketPolicyStatusOutcome(computeEndpointOutcome.GetError());
  1485. }
  1486. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1487. Aws::StringStream ss;
  1488. ss.str("?policyStatus");
  1489. uri.SetQueryString(ss.str());
  1490. return GetBucketPolicyStatusOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1491. }
  1492. GetBucketPolicyStatusOutcomeCallable S3Client::GetBucketPolicyStatusCallable(const GetBucketPolicyStatusRequest& request) const
  1493. {
  1494. auto task = Aws::MakeShared< std::packaged_task< GetBucketPolicyStatusOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketPolicyStatus(request); } );
  1495. auto packagedFunction = [task]() { (*task)(); };
  1496. m_executor->Submit(packagedFunction);
  1497. return task->get_future();
  1498. }
  1499. void S3Client::GetBucketPolicyStatusAsync(const GetBucketPolicyStatusRequest& request, const GetBucketPolicyStatusResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1500. {
  1501. m_executor->Submit( [this, request, handler, context](){ this->GetBucketPolicyStatusAsyncHelper( request, handler, context ); } );
  1502. }
  1503. void S3Client::GetBucketPolicyStatusAsyncHelper(const GetBucketPolicyStatusRequest& request, const GetBucketPolicyStatusResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1504. {
  1505. handler(this, request, GetBucketPolicyStatus(request), context);
  1506. }
  1507. GetBucketReplicationOutcome S3Client::GetBucketReplication(const GetBucketReplicationRequest& request) const
  1508. {
  1509. if (!request.BucketHasBeenSet())
  1510. {
  1511. AWS_LOGSTREAM_ERROR("GetBucketReplication", "Required field: Bucket, is not set");
  1512. return GetBucketReplicationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1513. }
  1514. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1515. if (!computeEndpointOutcome.IsSuccess())
  1516. {
  1517. return GetBucketReplicationOutcome(computeEndpointOutcome.GetError());
  1518. }
  1519. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1520. Aws::StringStream ss;
  1521. ss.str("?replication");
  1522. uri.SetQueryString(ss.str());
  1523. return GetBucketReplicationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1524. }
  1525. GetBucketReplicationOutcomeCallable S3Client::GetBucketReplicationCallable(const GetBucketReplicationRequest& request) const
  1526. {
  1527. auto task = Aws::MakeShared< std::packaged_task< GetBucketReplicationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketReplication(request); } );
  1528. auto packagedFunction = [task]() { (*task)(); };
  1529. m_executor->Submit(packagedFunction);
  1530. return task->get_future();
  1531. }
  1532. void S3Client::GetBucketReplicationAsync(const GetBucketReplicationRequest& request, const GetBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1533. {
  1534. m_executor->Submit( [this, request, handler, context](){ this->GetBucketReplicationAsyncHelper( request, handler, context ); } );
  1535. }
  1536. void S3Client::GetBucketReplicationAsyncHelper(const GetBucketReplicationRequest& request, const GetBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1537. {
  1538. handler(this, request, GetBucketReplication(request), context);
  1539. }
  1540. GetBucketRequestPaymentOutcome S3Client::GetBucketRequestPayment(const GetBucketRequestPaymentRequest& request) const
  1541. {
  1542. if (!request.BucketHasBeenSet())
  1543. {
  1544. AWS_LOGSTREAM_ERROR("GetBucketRequestPayment", "Required field: Bucket, is not set");
  1545. return GetBucketRequestPaymentOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1546. }
  1547. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1548. if (!computeEndpointOutcome.IsSuccess())
  1549. {
  1550. return GetBucketRequestPaymentOutcome(computeEndpointOutcome.GetError());
  1551. }
  1552. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1553. Aws::StringStream ss;
  1554. ss.str("?requestPayment");
  1555. uri.SetQueryString(ss.str());
  1556. return GetBucketRequestPaymentOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1557. }
  1558. GetBucketRequestPaymentOutcomeCallable S3Client::GetBucketRequestPaymentCallable(const GetBucketRequestPaymentRequest& request) const
  1559. {
  1560. auto task = Aws::MakeShared< std::packaged_task< GetBucketRequestPaymentOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketRequestPayment(request); } );
  1561. auto packagedFunction = [task]() { (*task)(); };
  1562. m_executor->Submit(packagedFunction);
  1563. return task->get_future();
  1564. }
  1565. void S3Client::GetBucketRequestPaymentAsync(const GetBucketRequestPaymentRequest& request, const GetBucketRequestPaymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1566. {
  1567. m_executor->Submit( [this, request, handler, context](){ this->GetBucketRequestPaymentAsyncHelper( request, handler, context ); } );
  1568. }
  1569. void S3Client::GetBucketRequestPaymentAsyncHelper(const GetBucketRequestPaymentRequest& request, const GetBucketRequestPaymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1570. {
  1571. handler(this, request, GetBucketRequestPayment(request), context);
  1572. }
  1573. GetBucketTaggingOutcome S3Client::GetBucketTagging(const GetBucketTaggingRequest& request) const
  1574. {
  1575. if (!request.BucketHasBeenSet())
  1576. {
  1577. AWS_LOGSTREAM_ERROR("GetBucketTagging", "Required field: Bucket, is not set");
  1578. return GetBucketTaggingOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1579. }
  1580. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1581. if (!computeEndpointOutcome.IsSuccess())
  1582. {
  1583. return GetBucketTaggingOutcome(computeEndpointOutcome.GetError());
  1584. }
  1585. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1586. Aws::StringStream ss;
  1587. ss.str("?tagging");
  1588. uri.SetQueryString(ss.str());
  1589. return GetBucketTaggingOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1590. }
  1591. GetBucketTaggingOutcomeCallable S3Client::GetBucketTaggingCallable(const GetBucketTaggingRequest& request) const
  1592. {
  1593. auto task = Aws::MakeShared< std::packaged_task< GetBucketTaggingOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketTagging(request); } );
  1594. auto packagedFunction = [task]() { (*task)(); };
  1595. m_executor->Submit(packagedFunction);
  1596. return task->get_future();
  1597. }
  1598. void S3Client::GetBucketTaggingAsync(const GetBucketTaggingRequest& request, const GetBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1599. {
  1600. m_executor->Submit( [this, request, handler, context](){ this->GetBucketTaggingAsyncHelper( request, handler, context ); } );
  1601. }
  1602. void S3Client::GetBucketTaggingAsyncHelper(const GetBucketTaggingRequest& request, const GetBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1603. {
  1604. handler(this, request, GetBucketTagging(request), context);
  1605. }
  1606. GetBucketVersioningOutcome S3Client::GetBucketVersioning(const GetBucketVersioningRequest& request) const
  1607. {
  1608. if (!request.BucketHasBeenSet())
  1609. {
  1610. AWS_LOGSTREAM_ERROR("GetBucketVersioning", "Required field: Bucket, is not set");
  1611. return GetBucketVersioningOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1612. }
  1613. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1614. if (!computeEndpointOutcome.IsSuccess())
  1615. {
  1616. return GetBucketVersioningOutcome(computeEndpointOutcome.GetError());
  1617. }
  1618. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1619. Aws::StringStream ss;
  1620. ss.str("?versioning");
  1621. uri.SetQueryString(ss.str());
  1622. return GetBucketVersioningOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1623. }
  1624. GetBucketVersioningOutcomeCallable S3Client::GetBucketVersioningCallable(const GetBucketVersioningRequest& request) const
  1625. {
  1626. auto task = Aws::MakeShared< std::packaged_task< GetBucketVersioningOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketVersioning(request); } );
  1627. auto packagedFunction = [task]() { (*task)(); };
  1628. m_executor->Submit(packagedFunction);
  1629. return task->get_future();
  1630. }
  1631. void S3Client::GetBucketVersioningAsync(const GetBucketVersioningRequest& request, const GetBucketVersioningResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1632. {
  1633. m_executor->Submit( [this, request, handler, context](){ this->GetBucketVersioningAsyncHelper( request, handler, context ); } );
  1634. }
  1635. void S3Client::GetBucketVersioningAsyncHelper(const GetBucketVersioningRequest& request, const GetBucketVersioningResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1636. {
  1637. handler(this, request, GetBucketVersioning(request), context);
  1638. }
  1639. GetBucketWebsiteOutcome S3Client::GetBucketWebsite(const GetBucketWebsiteRequest& request) const
  1640. {
  1641. if (!request.BucketHasBeenSet())
  1642. {
  1643. AWS_LOGSTREAM_ERROR("GetBucketWebsite", "Required field: Bucket, is not set");
  1644. return GetBucketWebsiteOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1645. }
  1646. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1647. if (!computeEndpointOutcome.IsSuccess())
  1648. {
  1649. return GetBucketWebsiteOutcome(computeEndpointOutcome.GetError());
  1650. }
  1651. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1652. Aws::StringStream ss;
  1653. ss.str("?website");
  1654. uri.SetQueryString(ss.str());
  1655. return GetBucketWebsiteOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1656. }
  1657. GetBucketWebsiteOutcomeCallable S3Client::GetBucketWebsiteCallable(const GetBucketWebsiteRequest& request) const
  1658. {
  1659. auto task = Aws::MakeShared< std::packaged_task< GetBucketWebsiteOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetBucketWebsite(request); } );
  1660. auto packagedFunction = [task]() { (*task)(); };
  1661. m_executor->Submit(packagedFunction);
  1662. return task->get_future();
  1663. }
  1664. void S3Client::GetBucketWebsiteAsync(const GetBucketWebsiteRequest& request, const GetBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1665. {
  1666. m_executor->Submit( [this, request, handler, context](){ this->GetBucketWebsiteAsyncHelper( request, handler, context ); } );
  1667. }
  1668. void S3Client::GetBucketWebsiteAsyncHelper(const GetBucketWebsiteRequest& request, const GetBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1669. {
  1670. handler(this, request, GetBucketWebsite(request), context);
  1671. }
  1672. GetObjectOutcome S3Client::GetObject(const GetObjectRequest& request) const
  1673. {
  1674. if (!request.BucketHasBeenSet())
  1675. {
  1676. AWS_LOGSTREAM_ERROR("GetObject", "Required field: Bucket, is not set");
  1677. return GetObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1678. }
  1679. if (!request.KeyHasBeenSet())
  1680. {
  1681. AWS_LOGSTREAM_ERROR("GetObject", "Required field: Key, is not set");
  1682. return GetObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  1683. }
  1684. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1685. if (!computeEndpointOutcome.IsSuccess())
  1686. {
  1687. return GetObjectOutcome(computeEndpointOutcome.GetError());
  1688. }
  1689. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1690. Aws::StringStream ss;
  1691. ss << "/";
  1692. ss << request.GetKey();
  1693. uri.SetPath(uri.GetPath() + ss.str());
  1694. return GetObjectOutcome(MakeRequestWithUnparsedResponse(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1695. }
  1696. GetObjectOutcomeCallable S3Client::GetObjectCallable(const GetObjectRequest& request) const
  1697. {
  1698. auto task = Aws::MakeShared< std::packaged_task< GetObjectOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetObject(request); } );
  1699. auto packagedFunction = [task]() { (*task)(); };
  1700. m_executor->Submit(packagedFunction);
  1701. return task->get_future();
  1702. }
  1703. void S3Client::GetObjectAsync(const GetObjectRequest& request, const GetObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1704. {
  1705. m_executor->Submit( [this, request, handler, context](){ this->GetObjectAsyncHelper( request, handler, context ); } );
  1706. }
  1707. void S3Client::GetObjectAsyncHelper(const GetObjectRequest& request, const GetObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1708. {
  1709. handler(this, request, GetObject(request), context);
  1710. }
  1711. GetObjectAclOutcome S3Client::GetObjectAcl(const GetObjectAclRequest& request) const
  1712. {
  1713. if (!request.BucketHasBeenSet())
  1714. {
  1715. AWS_LOGSTREAM_ERROR("GetObjectAcl", "Required field: Bucket, is not set");
  1716. return GetObjectAclOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1717. }
  1718. if (!request.KeyHasBeenSet())
  1719. {
  1720. AWS_LOGSTREAM_ERROR("GetObjectAcl", "Required field: Key, is not set");
  1721. return GetObjectAclOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  1722. }
  1723. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1724. if (!computeEndpointOutcome.IsSuccess())
  1725. {
  1726. return GetObjectAclOutcome(computeEndpointOutcome.GetError());
  1727. }
  1728. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1729. Aws::StringStream ss;
  1730. ss << "/";
  1731. ss << request.GetKey();
  1732. uri.SetPath(uri.GetPath() + ss.str());
  1733. ss.str("?acl");
  1734. uri.SetQueryString(ss.str());
  1735. return GetObjectAclOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1736. }
  1737. GetObjectAclOutcomeCallable S3Client::GetObjectAclCallable(const GetObjectAclRequest& request) const
  1738. {
  1739. auto task = Aws::MakeShared< std::packaged_task< GetObjectAclOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetObjectAcl(request); } );
  1740. auto packagedFunction = [task]() { (*task)(); };
  1741. m_executor->Submit(packagedFunction);
  1742. return task->get_future();
  1743. }
  1744. void S3Client::GetObjectAclAsync(const GetObjectAclRequest& request, const GetObjectAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1745. {
  1746. m_executor->Submit( [this, request, handler, context](){ this->GetObjectAclAsyncHelper( request, handler, context ); } );
  1747. }
  1748. void S3Client::GetObjectAclAsyncHelper(const GetObjectAclRequest& request, const GetObjectAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1749. {
  1750. handler(this, request, GetObjectAcl(request), context);
  1751. }
  1752. GetObjectLegalHoldOutcome S3Client::GetObjectLegalHold(const GetObjectLegalHoldRequest& request) const
  1753. {
  1754. if (!request.BucketHasBeenSet())
  1755. {
  1756. AWS_LOGSTREAM_ERROR("GetObjectLegalHold", "Required field: Bucket, is not set");
  1757. return GetObjectLegalHoldOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1758. }
  1759. if (!request.KeyHasBeenSet())
  1760. {
  1761. AWS_LOGSTREAM_ERROR("GetObjectLegalHold", "Required field: Key, is not set");
  1762. return GetObjectLegalHoldOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  1763. }
  1764. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1765. if (!computeEndpointOutcome.IsSuccess())
  1766. {
  1767. return GetObjectLegalHoldOutcome(computeEndpointOutcome.GetError());
  1768. }
  1769. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1770. Aws::StringStream ss;
  1771. ss << "/";
  1772. ss << request.GetKey();
  1773. uri.SetPath(uri.GetPath() + ss.str());
  1774. ss.str("?legal-hold");
  1775. uri.SetQueryString(ss.str());
  1776. return GetObjectLegalHoldOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1777. }
  1778. GetObjectLegalHoldOutcomeCallable S3Client::GetObjectLegalHoldCallable(const GetObjectLegalHoldRequest& request) const
  1779. {
  1780. auto task = Aws::MakeShared< std::packaged_task< GetObjectLegalHoldOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetObjectLegalHold(request); } );
  1781. auto packagedFunction = [task]() { (*task)(); };
  1782. m_executor->Submit(packagedFunction);
  1783. return task->get_future();
  1784. }
  1785. void S3Client::GetObjectLegalHoldAsync(const GetObjectLegalHoldRequest& request, const GetObjectLegalHoldResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1786. {
  1787. m_executor->Submit( [this, request, handler, context](){ this->GetObjectLegalHoldAsyncHelper( request, handler, context ); } );
  1788. }
  1789. void S3Client::GetObjectLegalHoldAsyncHelper(const GetObjectLegalHoldRequest& request, const GetObjectLegalHoldResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1790. {
  1791. handler(this, request, GetObjectLegalHold(request), context);
  1792. }
  1793. GetObjectLockConfigurationOutcome S3Client::GetObjectLockConfiguration(const GetObjectLockConfigurationRequest& request) const
  1794. {
  1795. if (!request.BucketHasBeenSet())
  1796. {
  1797. AWS_LOGSTREAM_ERROR("GetObjectLockConfiguration", "Required field: Bucket, is not set");
  1798. return GetObjectLockConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1799. }
  1800. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1801. if (!computeEndpointOutcome.IsSuccess())
  1802. {
  1803. return GetObjectLockConfigurationOutcome(computeEndpointOutcome.GetError());
  1804. }
  1805. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1806. Aws::StringStream ss;
  1807. ss.str("?object-lock");
  1808. uri.SetQueryString(ss.str());
  1809. return GetObjectLockConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1810. }
  1811. GetObjectLockConfigurationOutcomeCallable S3Client::GetObjectLockConfigurationCallable(const GetObjectLockConfigurationRequest& request) const
  1812. {
  1813. auto task = Aws::MakeShared< std::packaged_task< GetObjectLockConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetObjectLockConfiguration(request); } );
  1814. auto packagedFunction = [task]() { (*task)(); };
  1815. m_executor->Submit(packagedFunction);
  1816. return task->get_future();
  1817. }
  1818. void S3Client::GetObjectLockConfigurationAsync(const GetObjectLockConfigurationRequest& request, const GetObjectLockConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1819. {
  1820. m_executor->Submit( [this, request, handler, context](){ this->GetObjectLockConfigurationAsyncHelper( request, handler, context ); } );
  1821. }
  1822. void S3Client::GetObjectLockConfigurationAsyncHelper(const GetObjectLockConfigurationRequest& request, const GetObjectLockConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1823. {
  1824. handler(this, request, GetObjectLockConfiguration(request), context);
  1825. }
  1826. GetObjectRetentionOutcome S3Client::GetObjectRetention(const GetObjectRetentionRequest& request) const
  1827. {
  1828. if (!request.BucketHasBeenSet())
  1829. {
  1830. AWS_LOGSTREAM_ERROR("GetObjectRetention", "Required field: Bucket, is not set");
  1831. return GetObjectRetentionOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1832. }
  1833. if (!request.KeyHasBeenSet())
  1834. {
  1835. AWS_LOGSTREAM_ERROR("GetObjectRetention", "Required field: Key, is not set");
  1836. return GetObjectRetentionOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  1837. }
  1838. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1839. if (!computeEndpointOutcome.IsSuccess())
  1840. {
  1841. return GetObjectRetentionOutcome(computeEndpointOutcome.GetError());
  1842. }
  1843. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1844. Aws::StringStream ss;
  1845. ss << "/";
  1846. ss << request.GetKey();
  1847. uri.SetPath(uri.GetPath() + ss.str());
  1848. ss.str("?retention");
  1849. uri.SetQueryString(ss.str());
  1850. return GetObjectRetentionOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1851. }
  1852. GetObjectRetentionOutcomeCallable S3Client::GetObjectRetentionCallable(const GetObjectRetentionRequest& request) const
  1853. {
  1854. auto task = Aws::MakeShared< std::packaged_task< GetObjectRetentionOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetObjectRetention(request); } );
  1855. auto packagedFunction = [task]() { (*task)(); };
  1856. m_executor->Submit(packagedFunction);
  1857. return task->get_future();
  1858. }
  1859. void S3Client::GetObjectRetentionAsync(const GetObjectRetentionRequest& request, const GetObjectRetentionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1860. {
  1861. m_executor->Submit( [this, request, handler, context](){ this->GetObjectRetentionAsyncHelper( request, handler, context ); } );
  1862. }
  1863. void S3Client::GetObjectRetentionAsyncHelper(const GetObjectRetentionRequest& request, const GetObjectRetentionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1864. {
  1865. handler(this, request, GetObjectRetention(request), context);
  1866. }
  1867. GetObjectTaggingOutcome S3Client::GetObjectTagging(const GetObjectTaggingRequest& request) const
  1868. {
  1869. if (!request.BucketHasBeenSet())
  1870. {
  1871. AWS_LOGSTREAM_ERROR("GetObjectTagging", "Required field: Bucket, is not set");
  1872. return GetObjectTaggingOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1873. }
  1874. if (!request.KeyHasBeenSet())
  1875. {
  1876. AWS_LOGSTREAM_ERROR("GetObjectTagging", "Required field: Key, is not set");
  1877. return GetObjectTaggingOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  1878. }
  1879. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1880. if (!computeEndpointOutcome.IsSuccess())
  1881. {
  1882. return GetObjectTaggingOutcome(computeEndpointOutcome.GetError());
  1883. }
  1884. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1885. Aws::StringStream ss;
  1886. ss << "/";
  1887. ss << request.GetKey();
  1888. uri.SetPath(uri.GetPath() + ss.str());
  1889. ss.str("?tagging");
  1890. uri.SetQueryString(ss.str());
  1891. return GetObjectTaggingOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1892. }
  1893. GetObjectTaggingOutcomeCallable S3Client::GetObjectTaggingCallable(const GetObjectTaggingRequest& request) const
  1894. {
  1895. auto task = Aws::MakeShared< std::packaged_task< GetObjectTaggingOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetObjectTagging(request); } );
  1896. auto packagedFunction = [task]() { (*task)(); };
  1897. m_executor->Submit(packagedFunction);
  1898. return task->get_future();
  1899. }
  1900. void S3Client::GetObjectTaggingAsync(const GetObjectTaggingRequest& request, const GetObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1901. {
  1902. m_executor->Submit( [this, request, handler, context](){ this->GetObjectTaggingAsyncHelper( request, handler, context ); } );
  1903. }
  1904. void S3Client::GetObjectTaggingAsyncHelper(const GetObjectTaggingRequest& request, const GetObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1905. {
  1906. handler(this, request, GetObjectTagging(request), context);
  1907. }
  1908. GetObjectTorrentOutcome S3Client::GetObjectTorrent(const GetObjectTorrentRequest& request) const
  1909. {
  1910. if (!request.BucketHasBeenSet())
  1911. {
  1912. AWS_LOGSTREAM_ERROR("GetObjectTorrent", "Required field: Bucket, is not set");
  1913. return GetObjectTorrentOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1914. }
  1915. if (!request.KeyHasBeenSet())
  1916. {
  1917. AWS_LOGSTREAM_ERROR("GetObjectTorrent", "Required field: Key, is not set");
  1918. return GetObjectTorrentOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  1919. }
  1920. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1921. if (!computeEndpointOutcome.IsSuccess())
  1922. {
  1923. return GetObjectTorrentOutcome(computeEndpointOutcome.GetError());
  1924. }
  1925. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1926. Aws::StringStream ss;
  1927. ss << "/";
  1928. ss << request.GetKey();
  1929. uri.SetPath(uri.GetPath() + ss.str());
  1930. ss.str("?torrent");
  1931. uri.SetQueryString(ss.str());
  1932. return GetObjectTorrentOutcome(MakeRequestWithUnparsedResponse(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1933. }
  1934. GetObjectTorrentOutcomeCallable S3Client::GetObjectTorrentCallable(const GetObjectTorrentRequest& request) const
  1935. {
  1936. auto task = Aws::MakeShared< std::packaged_task< GetObjectTorrentOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetObjectTorrent(request); } );
  1937. auto packagedFunction = [task]() { (*task)(); };
  1938. m_executor->Submit(packagedFunction);
  1939. return task->get_future();
  1940. }
  1941. void S3Client::GetObjectTorrentAsync(const GetObjectTorrentRequest& request, const GetObjectTorrentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1942. {
  1943. m_executor->Submit( [this, request, handler, context](){ this->GetObjectTorrentAsyncHelper( request, handler, context ); } );
  1944. }
  1945. void S3Client::GetObjectTorrentAsyncHelper(const GetObjectTorrentRequest& request, const GetObjectTorrentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1946. {
  1947. handler(this, request, GetObjectTorrent(request), context);
  1948. }
  1949. GetPublicAccessBlockOutcome S3Client::GetPublicAccessBlock(const GetPublicAccessBlockRequest& request) const
  1950. {
  1951. if (!request.BucketHasBeenSet())
  1952. {
  1953. AWS_LOGSTREAM_ERROR("GetPublicAccessBlock", "Required field: Bucket, is not set");
  1954. return GetPublicAccessBlockOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1955. }
  1956. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1957. if (!computeEndpointOutcome.IsSuccess())
  1958. {
  1959. return GetPublicAccessBlockOutcome(computeEndpointOutcome.GetError());
  1960. }
  1961. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1962. Aws::StringStream ss;
  1963. ss.str("?publicAccessBlock");
  1964. uri.SetQueryString(ss.str());
  1965. return GetPublicAccessBlockOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1966. }
  1967. GetPublicAccessBlockOutcomeCallable S3Client::GetPublicAccessBlockCallable(const GetPublicAccessBlockRequest& request) const
  1968. {
  1969. auto task = Aws::MakeShared< std::packaged_task< GetPublicAccessBlockOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->GetPublicAccessBlock(request); } );
  1970. auto packagedFunction = [task]() { (*task)(); };
  1971. m_executor->Submit(packagedFunction);
  1972. return task->get_future();
  1973. }
  1974. void S3Client::GetPublicAccessBlockAsync(const GetPublicAccessBlockRequest& request, const GetPublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1975. {
  1976. m_executor->Submit( [this, request, handler, context](){ this->GetPublicAccessBlockAsyncHelper( request, handler, context ); } );
  1977. }
  1978. void S3Client::GetPublicAccessBlockAsyncHelper(const GetPublicAccessBlockRequest& request, const GetPublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  1979. {
  1980. handler(this, request, GetPublicAccessBlock(request), context);
  1981. }
  1982. HeadBucketOutcome S3Client::HeadBucket(const HeadBucketRequest& request) const
  1983. {
  1984. if (!request.BucketHasBeenSet())
  1985. {
  1986. AWS_LOGSTREAM_ERROR("HeadBucket", "Required field: Bucket, is not set");
  1987. return HeadBucketOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  1988. }
  1989. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  1990. if (!computeEndpointOutcome.IsSuccess())
  1991. {
  1992. return HeadBucketOutcome(computeEndpointOutcome.GetError());
  1993. }
  1994. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  1995. Aws::StringStream ss;
  1996. uri.SetPath(uri.GetPath() + ss.str());
  1997. return HeadBucketOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_HEAD, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  1998. }
  1999. HeadBucketOutcomeCallable S3Client::HeadBucketCallable(const HeadBucketRequest& request) const
  2000. {
  2001. auto task = Aws::MakeShared< std::packaged_task< HeadBucketOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->HeadBucket(request); } );
  2002. auto packagedFunction = [task]() { (*task)(); };
  2003. m_executor->Submit(packagedFunction);
  2004. return task->get_future();
  2005. }
  2006. void S3Client::HeadBucketAsync(const HeadBucketRequest& request, const HeadBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2007. {
  2008. m_executor->Submit( [this, request, handler, context](){ this->HeadBucketAsyncHelper( request, handler, context ); } );
  2009. }
  2010. void S3Client::HeadBucketAsyncHelper(const HeadBucketRequest& request, const HeadBucketResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2011. {
  2012. handler(this, request, HeadBucket(request), context);
  2013. }
  2014. HeadObjectOutcome S3Client::HeadObject(const HeadObjectRequest& request) const
  2015. {
  2016. if (!request.BucketHasBeenSet())
  2017. {
  2018. AWS_LOGSTREAM_ERROR("HeadObject", "Required field: Bucket, is not set");
  2019. return HeadObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2020. }
  2021. if (!request.KeyHasBeenSet())
  2022. {
  2023. AWS_LOGSTREAM_ERROR("HeadObject", "Required field: Key, is not set");
  2024. return HeadObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  2025. }
  2026. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2027. if (!computeEndpointOutcome.IsSuccess())
  2028. {
  2029. return HeadObjectOutcome(computeEndpointOutcome.GetError());
  2030. }
  2031. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2032. Aws::StringStream ss;
  2033. ss << "/";
  2034. ss << request.GetKey();
  2035. uri.SetPath(uri.GetPath() + ss.str());
  2036. return HeadObjectOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_HEAD, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2037. }
  2038. HeadObjectOutcomeCallable S3Client::HeadObjectCallable(const HeadObjectRequest& request) const
  2039. {
  2040. auto task = Aws::MakeShared< std::packaged_task< HeadObjectOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->HeadObject(request); } );
  2041. auto packagedFunction = [task]() { (*task)(); };
  2042. m_executor->Submit(packagedFunction);
  2043. return task->get_future();
  2044. }
  2045. void S3Client::HeadObjectAsync(const HeadObjectRequest& request, const HeadObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2046. {
  2047. m_executor->Submit( [this, request, handler, context](){ this->HeadObjectAsyncHelper( request, handler, context ); } );
  2048. }
  2049. void S3Client::HeadObjectAsyncHelper(const HeadObjectRequest& request, const HeadObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2050. {
  2051. handler(this, request, HeadObject(request), context);
  2052. }
  2053. ListBucketAnalyticsConfigurationsOutcome S3Client::ListBucketAnalyticsConfigurations(const ListBucketAnalyticsConfigurationsRequest& request) const
  2054. {
  2055. if (!request.BucketHasBeenSet())
  2056. {
  2057. AWS_LOGSTREAM_ERROR("ListBucketAnalyticsConfigurations", "Required field: Bucket, is not set");
  2058. return ListBucketAnalyticsConfigurationsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2059. }
  2060. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2061. if (!computeEndpointOutcome.IsSuccess())
  2062. {
  2063. return ListBucketAnalyticsConfigurationsOutcome(computeEndpointOutcome.GetError());
  2064. }
  2065. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2066. Aws::StringStream ss;
  2067. ss.str("?analytics");
  2068. uri.SetQueryString(ss.str());
  2069. return ListBucketAnalyticsConfigurationsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2070. }
  2071. ListBucketAnalyticsConfigurationsOutcomeCallable S3Client::ListBucketAnalyticsConfigurationsCallable(const ListBucketAnalyticsConfigurationsRequest& request) const
  2072. {
  2073. auto task = Aws::MakeShared< std::packaged_task< ListBucketAnalyticsConfigurationsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListBucketAnalyticsConfigurations(request); } );
  2074. auto packagedFunction = [task]() { (*task)(); };
  2075. m_executor->Submit(packagedFunction);
  2076. return task->get_future();
  2077. }
  2078. void S3Client::ListBucketAnalyticsConfigurationsAsync(const ListBucketAnalyticsConfigurationsRequest& request, const ListBucketAnalyticsConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2079. {
  2080. m_executor->Submit( [this, request, handler, context](){ this->ListBucketAnalyticsConfigurationsAsyncHelper( request, handler, context ); } );
  2081. }
  2082. void S3Client::ListBucketAnalyticsConfigurationsAsyncHelper(const ListBucketAnalyticsConfigurationsRequest& request, const ListBucketAnalyticsConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2083. {
  2084. handler(this, request, ListBucketAnalyticsConfigurations(request), context);
  2085. }
  2086. ListBucketIntelligentTieringConfigurationsOutcome S3Client::ListBucketIntelligentTieringConfigurations(const ListBucketIntelligentTieringConfigurationsRequest& request) const
  2087. {
  2088. if (!request.BucketHasBeenSet())
  2089. {
  2090. AWS_LOGSTREAM_ERROR("ListBucketIntelligentTieringConfigurations", "Required field: Bucket, is not set");
  2091. return ListBucketIntelligentTieringConfigurationsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2092. }
  2093. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2094. if (!computeEndpointOutcome.IsSuccess())
  2095. {
  2096. return ListBucketIntelligentTieringConfigurationsOutcome(computeEndpointOutcome.GetError());
  2097. }
  2098. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2099. Aws::StringStream ss;
  2100. ss.str("?intelligent-tiering");
  2101. uri.SetQueryString(ss.str());
  2102. return ListBucketIntelligentTieringConfigurationsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2103. }
  2104. ListBucketIntelligentTieringConfigurationsOutcomeCallable S3Client::ListBucketIntelligentTieringConfigurationsCallable(const ListBucketIntelligentTieringConfigurationsRequest& request) const
  2105. {
  2106. auto task = Aws::MakeShared< std::packaged_task< ListBucketIntelligentTieringConfigurationsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListBucketIntelligentTieringConfigurations(request); } );
  2107. auto packagedFunction = [task]() { (*task)(); };
  2108. m_executor->Submit(packagedFunction);
  2109. return task->get_future();
  2110. }
  2111. void S3Client::ListBucketIntelligentTieringConfigurationsAsync(const ListBucketIntelligentTieringConfigurationsRequest& request, const ListBucketIntelligentTieringConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2112. {
  2113. m_executor->Submit( [this, request, handler, context](){ this->ListBucketIntelligentTieringConfigurationsAsyncHelper( request, handler, context ); } );
  2114. }
  2115. void S3Client::ListBucketIntelligentTieringConfigurationsAsyncHelper(const ListBucketIntelligentTieringConfigurationsRequest& request, const ListBucketIntelligentTieringConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2116. {
  2117. handler(this, request, ListBucketIntelligentTieringConfigurations(request), context);
  2118. }
  2119. ListBucketInventoryConfigurationsOutcome S3Client::ListBucketInventoryConfigurations(const ListBucketInventoryConfigurationsRequest& request) const
  2120. {
  2121. if (!request.BucketHasBeenSet())
  2122. {
  2123. AWS_LOGSTREAM_ERROR("ListBucketInventoryConfigurations", "Required field: Bucket, is not set");
  2124. return ListBucketInventoryConfigurationsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2125. }
  2126. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2127. if (!computeEndpointOutcome.IsSuccess())
  2128. {
  2129. return ListBucketInventoryConfigurationsOutcome(computeEndpointOutcome.GetError());
  2130. }
  2131. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2132. Aws::StringStream ss;
  2133. ss.str("?inventory");
  2134. uri.SetQueryString(ss.str());
  2135. return ListBucketInventoryConfigurationsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2136. }
  2137. ListBucketInventoryConfigurationsOutcomeCallable S3Client::ListBucketInventoryConfigurationsCallable(const ListBucketInventoryConfigurationsRequest& request) const
  2138. {
  2139. auto task = Aws::MakeShared< std::packaged_task< ListBucketInventoryConfigurationsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListBucketInventoryConfigurations(request); } );
  2140. auto packagedFunction = [task]() { (*task)(); };
  2141. m_executor->Submit(packagedFunction);
  2142. return task->get_future();
  2143. }
  2144. void S3Client::ListBucketInventoryConfigurationsAsync(const ListBucketInventoryConfigurationsRequest& request, const ListBucketInventoryConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2145. {
  2146. m_executor->Submit( [this, request, handler, context](){ this->ListBucketInventoryConfigurationsAsyncHelper( request, handler, context ); } );
  2147. }
  2148. void S3Client::ListBucketInventoryConfigurationsAsyncHelper(const ListBucketInventoryConfigurationsRequest& request, const ListBucketInventoryConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2149. {
  2150. handler(this, request, ListBucketInventoryConfigurations(request), context);
  2151. }
  2152. ListBucketMetricsConfigurationsOutcome S3Client::ListBucketMetricsConfigurations(const ListBucketMetricsConfigurationsRequest& request) const
  2153. {
  2154. if (!request.BucketHasBeenSet())
  2155. {
  2156. AWS_LOGSTREAM_ERROR("ListBucketMetricsConfigurations", "Required field: Bucket, is not set");
  2157. return ListBucketMetricsConfigurationsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2158. }
  2159. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2160. if (!computeEndpointOutcome.IsSuccess())
  2161. {
  2162. return ListBucketMetricsConfigurationsOutcome(computeEndpointOutcome.GetError());
  2163. }
  2164. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2165. Aws::StringStream ss;
  2166. ss.str("?metrics");
  2167. uri.SetQueryString(ss.str());
  2168. return ListBucketMetricsConfigurationsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2169. }
  2170. ListBucketMetricsConfigurationsOutcomeCallable S3Client::ListBucketMetricsConfigurationsCallable(const ListBucketMetricsConfigurationsRequest& request) const
  2171. {
  2172. auto task = Aws::MakeShared< std::packaged_task< ListBucketMetricsConfigurationsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListBucketMetricsConfigurations(request); } );
  2173. auto packagedFunction = [task]() { (*task)(); };
  2174. m_executor->Submit(packagedFunction);
  2175. return task->get_future();
  2176. }
  2177. void S3Client::ListBucketMetricsConfigurationsAsync(const ListBucketMetricsConfigurationsRequest& request, const ListBucketMetricsConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2178. {
  2179. m_executor->Submit( [this, request, handler, context](){ this->ListBucketMetricsConfigurationsAsyncHelper( request, handler, context ); } );
  2180. }
  2181. void S3Client::ListBucketMetricsConfigurationsAsyncHelper(const ListBucketMetricsConfigurationsRequest& request, const ListBucketMetricsConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2182. {
  2183. handler(this, request, ListBucketMetricsConfigurations(request), context);
  2184. }
  2185. ListBucketsOutcome S3Client::ListBuckets() const
  2186. {
  2187. Aws::StringStream ss;
  2188. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString();
  2189. if (!computeEndpointOutcome.IsSuccess())
  2190. {
  2191. return ListBucketsOutcome(computeEndpointOutcome.GetError());
  2192. }
  2193. ss << computeEndpointOutcome.GetResult().endpoint;
  2194. return ListBucketsOutcome(MakeRequest(ss.str(), Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, "ListBuckets", computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2195. }
  2196. ListBucketsOutcomeCallable S3Client::ListBucketsCallable() const
  2197. {
  2198. auto task = Aws::MakeShared< std::packaged_task< ListBucketsOutcome() > >(ALLOCATION_TAG, [this](){ return this->ListBuckets(); } );
  2199. auto packagedFunction = [task]() { (*task)(); };
  2200. m_executor->Submit(packagedFunction);
  2201. return task->get_future();
  2202. }
  2203. void S3Client::ListBucketsAsync(const ListBucketsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2204. {
  2205. m_executor->Submit( [this, handler, context](){ this->ListBucketsAsyncHelper( handler, context ); } );
  2206. }
  2207. void S3Client::ListBucketsAsyncHelper(const ListBucketsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2208. {
  2209. handler(this, ListBuckets(), context);
  2210. }
  2211. ListMultipartUploadsOutcome S3Client::ListMultipartUploads(const ListMultipartUploadsRequest& request) const
  2212. {
  2213. if (!request.BucketHasBeenSet())
  2214. {
  2215. AWS_LOGSTREAM_ERROR("ListMultipartUploads", "Required field: Bucket, is not set");
  2216. return ListMultipartUploadsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2217. }
  2218. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2219. if (!computeEndpointOutcome.IsSuccess())
  2220. {
  2221. return ListMultipartUploadsOutcome(computeEndpointOutcome.GetError());
  2222. }
  2223. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2224. Aws::StringStream ss;
  2225. ss.str("?uploads");
  2226. uri.SetQueryString(ss.str());
  2227. return ListMultipartUploadsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2228. }
  2229. ListMultipartUploadsOutcomeCallable S3Client::ListMultipartUploadsCallable(const ListMultipartUploadsRequest& request) const
  2230. {
  2231. auto task = Aws::MakeShared< std::packaged_task< ListMultipartUploadsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListMultipartUploads(request); } );
  2232. auto packagedFunction = [task]() { (*task)(); };
  2233. m_executor->Submit(packagedFunction);
  2234. return task->get_future();
  2235. }
  2236. void S3Client::ListMultipartUploadsAsync(const ListMultipartUploadsRequest& request, const ListMultipartUploadsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2237. {
  2238. m_executor->Submit( [this, request, handler, context](){ this->ListMultipartUploadsAsyncHelper( request, handler, context ); } );
  2239. }
  2240. void S3Client::ListMultipartUploadsAsyncHelper(const ListMultipartUploadsRequest& request, const ListMultipartUploadsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2241. {
  2242. handler(this, request, ListMultipartUploads(request), context);
  2243. }
  2244. ListObjectVersionsOutcome S3Client::ListObjectVersions(const ListObjectVersionsRequest& request) const
  2245. {
  2246. if (!request.BucketHasBeenSet())
  2247. {
  2248. AWS_LOGSTREAM_ERROR("ListObjectVersions", "Required field: Bucket, is not set");
  2249. return ListObjectVersionsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2250. }
  2251. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2252. if (!computeEndpointOutcome.IsSuccess())
  2253. {
  2254. return ListObjectVersionsOutcome(computeEndpointOutcome.GetError());
  2255. }
  2256. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2257. Aws::StringStream ss;
  2258. ss.str("?versions");
  2259. uri.SetQueryString(ss.str());
  2260. return ListObjectVersionsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2261. }
  2262. ListObjectVersionsOutcomeCallable S3Client::ListObjectVersionsCallable(const ListObjectVersionsRequest& request) const
  2263. {
  2264. auto task = Aws::MakeShared< std::packaged_task< ListObjectVersionsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListObjectVersions(request); } );
  2265. auto packagedFunction = [task]() { (*task)(); };
  2266. m_executor->Submit(packagedFunction);
  2267. return task->get_future();
  2268. }
  2269. void S3Client::ListObjectVersionsAsync(const ListObjectVersionsRequest& request, const ListObjectVersionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2270. {
  2271. m_executor->Submit( [this, request, handler, context](){ this->ListObjectVersionsAsyncHelper( request, handler, context ); } );
  2272. }
  2273. void S3Client::ListObjectVersionsAsyncHelper(const ListObjectVersionsRequest& request, const ListObjectVersionsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2274. {
  2275. handler(this, request, ListObjectVersions(request), context);
  2276. }
  2277. ListObjectsOutcome S3Client::ListObjects(const ListObjectsRequest& request) const
  2278. {
  2279. if (!request.BucketHasBeenSet())
  2280. {
  2281. AWS_LOGSTREAM_ERROR("ListObjects", "Required field: Bucket, is not set");
  2282. return ListObjectsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2283. }
  2284. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2285. if (!computeEndpointOutcome.IsSuccess())
  2286. {
  2287. return ListObjectsOutcome(computeEndpointOutcome.GetError());
  2288. }
  2289. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2290. Aws::StringStream ss;
  2291. uri.SetPath(uri.GetPath() + ss.str());
  2292. return ListObjectsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2293. }
  2294. ListObjectsOutcomeCallable S3Client::ListObjectsCallable(const ListObjectsRequest& request) const
  2295. {
  2296. auto task = Aws::MakeShared< std::packaged_task< ListObjectsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListObjects(request); } );
  2297. auto packagedFunction = [task]() { (*task)(); };
  2298. m_executor->Submit(packagedFunction);
  2299. return task->get_future();
  2300. }
  2301. void S3Client::ListObjectsAsync(const ListObjectsRequest& request, const ListObjectsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2302. {
  2303. m_executor->Submit( [this, request, handler, context](){ this->ListObjectsAsyncHelper( request, handler, context ); } );
  2304. }
  2305. void S3Client::ListObjectsAsyncHelper(const ListObjectsRequest& request, const ListObjectsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2306. {
  2307. handler(this, request, ListObjects(request), context);
  2308. }
  2309. ListObjectsV2Outcome S3Client::ListObjectsV2(const ListObjectsV2Request& request) const
  2310. {
  2311. if (!request.BucketHasBeenSet())
  2312. {
  2313. AWS_LOGSTREAM_ERROR("ListObjectsV2", "Required field: Bucket, is not set");
  2314. return ListObjectsV2Outcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2315. }
  2316. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2317. if (!computeEndpointOutcome.IsSuccess())
  2318. {
  2319. return ListObjectsV2Outcome(computeEndpointOutcome.GetError());
  2320. }
  2321. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2322. Aws::StringStream ss;
  2323. ss.str("?list-type=2");
  2324. uri.SetQueryString(ss.str());
  2325. return ListObjectsV2Outcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2326. }
  2327. ListObjectsV2OutcomeCallable S3Client::ListObjectsV2Callable(const ListObjectsV2Request& request) const
  2328. {
  2329. auto task = Aws::MakeShared< std::packaged_task< ListObjectsV2Outcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListObjectsV2(request); } );
  2330. auto packagedFunction = [task]() { (*task)(); };
  2331. m_executor->Submit(packagedFunction);
  2332. return task->get_future();
  2333. }
  2334. void S3Client::ListObjectsV2Async(const ListObjectsV2Request& request, const ListObjectsV2ResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2335. {
  2336. m_executor->Submit( [this, request, handler, context](){ this->ListObjectsV2AsyncHelper( request, handler, context ); } );
  2337. }
  2338. void S3Client::ListObjectsV2AsyncHelper(const ListObjectsV2Request& request, const ListObjectsV2ResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2339. {
  2340. handler(this, request, ListObjectsV2(request), context);
  2341. }
  2342. ListPartsOutcome S3Client::ListParts(const ListPartsRequest& request) const
  2343. {
  2344. if (!request.BucketHasBeenSet())
  2345. {
  2346. AWS_LOGSTREAM_ERROR("ListParts", "Required field: Bucket, is not set");
  2347. return ListPartsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2348. }
  2349. if (!request.KeyHasBeenSet())
  2350. {
  2351. AWS_LOGSTREAM_ERROR("ListParts", "Required field: Key, is not set");
  2352. return ListPartsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  2353. }
  2354. if (!request.UploadIdHasBeenSet())
  2355. {
  2356. AWS_LOGSTREAM_ERROR("ListParts", "Required field: UploadId, is not set");
  2357. return ListPartsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [UploadId]", false));
  2358. }
  2359. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2360. if (!computeEndpointOutcome.IsSuccess())
  2361. {
  2362. return ListPartsOutcome(computeEndpointOutcome.GetError());
  2363. }
  2364. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2365. Aws::StringStream ss;
  2366. ss << "/";
  2367. ss << request.GetKey();
  2368. uri.SetPath(uri.GetPath() + ss.str());
  2369. return ListPartsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_GET, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2370. }
  2371. ListPartsOutcomeCallable S3Client::ListPartsCallable(const ListPartsRequest& request) const
  2372. {
  2373. auto task = Aws::MakeShared< std::packaged_task< ListPartsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListParts(request); } );
  2374. auto packagedFunction = [task]() { (*task)(); };
  2375. m_executor->Submit(packagedFunction);
  2376. return task->get_future();
  2377. }
  2378. void S3Client::ListPartsAsync(const ListPartsRequest& request, const ListPartsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2379. {
  2380. m_executor->Submit( [this, request, handler, context](){ this->ListPartsAsyncHelper( request, handler, context ); } );
  2381. }
  2382. void S3Client::ListPartsAsyncHelper(const ListPartsRequest& request, const ListPartsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2383. {
  2384. handler(this, request, ListParts(request), context);
  2385. }
  2386. PutBucketAccelerateConfigurationOutcome S3Client::PutBucketAccelerateConfiguration(const PutBucketAccelerateConfigurationRequest& request) const
  2387. {
  2388. if (!request.BucketHasBeenSet())
  2389. {
  2390. AWS_LOGSTREAM_ERROR("PutBucketAccelerateConfiguration", "Required field: Bucket, is not set");
  2391. return PutBucketAccelerateConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2392. }
  2393. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2394. if (!computeEndpointOutcome.IsSuccess())
  2395. {
  2396. return PutBucketAccelerateConfigurationOutcome(computeEndpointOutcome.GetError());
  2397. }
  2398. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2399. Aws::StringStream ss;
  2400. ss.str("?accelerate");
  2401. uri.SetQueryString(ss.str());
  2402. return PutBucketAccelerateConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2403. }
  2404. PutBucketAccelerateConfigurationOutcomeCallable S3Client::PutBucketAccelerateConfigurationCallable(const PutBucketAccelerateConfigurationRequest& request) const
  2405. {
  2406. auto task = Aws::MakeShared< std::packaged_task< PutBucketAccelerateConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketAccelerateConfiguration(request); } );
  2407. auto packagedFunction = [task]() { (*task)(); };
  2408. m_executor->Submit(packagedFunction);
  2409. return task->get_future();
  2410. }
  2411. void S3Client::PutBucketAccelerateConfigurationAsync(const PutBucketAccelerateConfigurationRequest& request, const PutBucketAccelerateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2412. {
  2413. m_executor->Submit( [this, request, handler, context](){ this->PutBucketAccelerateConfigurationAsyncHelper( request, handler, context ); } );
  2414. }
  2415. void S3Client::PutBucketAccelerateConfigurationAsyncHelper(const PutBucketAccelerateConfigurationRequest& request, const PutBucketAccelerateConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2416. {
  2417. handler(this, request, PutBucketAccelerateConfiguration(request), context);
  2418. }
  2419. PutBucketAclOutcome S3Client::PutBucketAcl(const PutBucketAclRequest& request) const
  2420. {
  2421. if (!request.BucketHasBeenSet())
  2422. {
  2423. AWS_LOGSTREAM_ERROR("PutBucketAcl", "Required field: Bucket, is not set");
  2424. return PutBucketAclOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2425. }
  2426. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2427. if (!computeEndpointOutcome.IsSuccess())
  2428. {
  2429. return PutBucketAclOutcome(computeEndpointOutcome.GetError());
  2430. }
  2431. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2432. Aws::StringStream ss;
  2433. ss.str("?acl");
  2434. uri.SetQueryString(ss.str());
  2435. return PutBucketAclOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2436. }
  2437. PutBucketAclOutcomeCallable S3Client::PutBucketAclCallable(const PutBucketAclRequest& request) const
  2438. {
  2439. auto task = Aws::MakeShared< std::packaged_task< PutBucketAclOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketAcl(request); } );
  2440. auto packagedFunction = [task]() { (*task)(); };
  2441. m_executor->Submit(packagedFunction);
  2442. return task->get_future();
  2443. }
  2444. void S3Client::PutBucketAclAsync(const PutBucketAclRequest& request, const PutBucketAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2445. {
  2446. m_executor->Submit( [this, request, handler, context](){ this->PutBucketAclAsyncHelper( request, handler, context ); } );
  2447. }
  2448. void S3Client::PutBucketAclAsyncHelper(const PutBucketAclRequest& request, const PutBucketAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2449. {
  2450. handler(this, request, PutBucketAcl(request), context);
  2451. }
  2452. PutBucketAnalyticsConfigurationOutcome S3Client::PutBucketAnalyticsConfiguration(const PutBucketAnalyticsConfigurationRequest& request) const
  2453. {
  2454. if (!request.BucketHasBeenSet())
  2455. {
  2456. AWS_LOGSTREAM_ERROR("PutBucketAnalyticsConfiguration", "Required field: Bucket, is not set");
  2457. return PutBucketAnalyticsConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2458. }
  2459. if (!request.IdHasBeenSet())
  2460. {
  2461. AWS_LOGSTREAM_ERROR("PutBucketAnalyticsConfiguration", "Required field: Id, is not set");
  2462. return PutBucketAnalyticsConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Id]", false));
  2463. }
  2464. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2465. if (!computeEndpointOutcome.IsSuccess())
  2466. {
  2467. return PutBucketAnalyticsConfigurationOutcome(computeEndpointOutcome.GetError());
  2468. }
  2469. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2470. Aws::StringStream ss;
  2471. ss.str("?analytics");
  2472. uri.SetQueryString(ss.str());
  2473. return PutBucketAnalyticsConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2474. }
  2475. PutBucketAnalyticsConfigurationOutcomeCallable S3Client::PutBucketAnalyticsConfigurationCallable(const PutBucketAnalyticsConfigurationRequest& request) const
  2476. {
  2477. auto task = Aws::MakeShared< std::packaged_task< PutBucketAnalyticsConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketAnalyticsConfiguration(request); } );
  2478. auto packagedFunction = [task]() { (*task)(); };
  2479. m_executor->Submit(packagedFunction);
  2480. return task->get_future();
  2481. }
  2482. void S3Client::PutBucketAnalyticsConfigurationAsync(const PutBucketAnalyticsConfigurationRequest& request, const PutBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2483. {
  2484. m_executor->Submit( [this, request, handler, context](){ this->PutBucketAnalyticsConfigurationAsyncHelper( request, handler, context ); } );
  2485. }
  2486. void S3Client::PutBucketAnalyticsConfigurationAsyncHelper(const PutBucketAnalyticsConfigurationRequest& request, const PutBucketAnalyticsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2487. {
  2488. handler(this, request, PutBucketAnalyticsConfiguration(request), context);
  2489. }
  2490. PutBucketCorsOutcome S3Client::PutBucketCors(const PutBucketCorsRequest& request) const
  2491. {
  2492. if (!request.BucketHasBeenSet())
  2493. {
  2494. AWS_LOGSTREAM_ERROR("PutBucketCors", "Required field: Bucket, is not set");
  2495. return PutBucketCorsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2496. }
  2497. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2498. if (!computeEndpointOutcome.IsSuccess())
  2499. {
  2500. return PutBucketCorsOutcome(computeEndpointOutcome.GetError());
  2501. }
  2502. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2503. Aws::StringStream ss;
  2504. ss.str("?cors");
  2505. uri.SetQueryString(ss.str());
  2506. return PutBucketCorsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2507. }
  2508. PutBucketCorsOutcomeCallable S3Client::PutBucketCorsCallable(const PutBucketCorsRequest& request) const
  2509. {
  2510. auto task = Aws::MakeShared< std::packaged_task< PutBucketCorsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketCors(request); } );
  2511. auto packagedFunction = [task]() { (*task)(); };
  2512. m_executor->Submit(packagedFunction);
  2513. return task->get_future();
  2514. }
  2515. void S3Client::PutBucketCorsAsync(const PutBucketCorsRequest& request, const PutBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2516. {
  2517. m_executor->Submit( [this, request, handler, context](){ this->PutBucketCorsAsyncHelper( request, handler, context ); } );
  2518. }
  2519. void S3Client::PutBucketCorsAsyncHelper(const PutBucketCorsRequest& request, const PutBucketCorsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2520. {
  2521. handler(this, request, PutBucketCors(request), context);
  2522. }
  2523. PutBucketEncryptionOutcome S3Client::PutBucketEncryption(const PutBucketEncryptionRequest& request) const
  2524. {
  2525. if (!request.BucketHasBeenSet())
  2526. {
  2527. AWS_LOGSTREAM_ERROR("PutBucketEncryption", "Required field: Bucket, is not set");
  2528. return PutBucketEncryptionOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2529. }
  2530. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2531. if (!computeEndpointOutcome.IsSuccess())
  2532. {
  2533. return PutBucketEncryptionOutcome(computeEndpointOutcome.GetError());
  2534. }
  2535. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2536. Aws::StringStream ss;
  2537. ss.str("?encryption");
  2538. uri.SetQueryString(ss.str());
  2539. return PutBucketEncryptionOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2540. }
  2541. PutBucketEncryptionOutcomeCallable S3Client::PutBucketEncryptionCallable(const PutBucketEncryptionRequest& request) const
  2542. {
  2543. auto task = Aws::MakeShared< std::packaged_task< PutBucketEncryptionOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketEncryption(request); } );
  2544. auto packagedFunction = [task]() { (*task)(); };
  2545. m_executor->Submit(packagedFunction);
  2546. return task->get_future();
  2547. }
  2548. void S3Client::PutBucketEncryptionAsync(const PutBucketEncryptionRequest& request, const PutBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2549. {
  2550. m_executor->Submit( [this, request, handler, context](){ this->PutBucketEncryptionAsyncHelper( request, handler, context ); } );
  2551. }
  2552. void S3Client::PutBucketEncryptionAsyncHelper(const PutBucketEncryptionRequest& request, const PutBucketEncryptionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2553. {
  2554. handler(this, request, PutBucketEncryption(request), context);
  2555. }
  2556. PutBucketIntelligentTieringConfigurationOutcome S3Client::PutBucketIntelligentTieringConfiguration(const PutBucketIntelligentTieringConfigurationRequest& request) const
  2557. {
  2558. if (!request.BucketHasBeenSet())
  2559. {
  2560. AWS_LOGSTREAM_ERROR("PutBucketIntelligentTieringConfiguration", "Required field: Bucket, is not set");
  2561. return PutBucketIntelligentTieringConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2562. }
  2563. if (!request.IdHasBeenSet())
  2564. {
  2565. AWS_LOGSTREAM_ERROR("PutBucketIntelligentTieringConfiguration", "Required field: Id, is not set");
  2566. return PutBucketIntelligentTieringConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Id]", false));
  2567. }
  2568. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2569. if (!computeEndpointOutcome.IsSuccess())
  2570. {
  2571. return PutBucketIntelligentTieringConfigurationOutcome(computeEndpointOutcome.GetError());
  2572. }
  2573. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2574. Aws::StringStream ss;
  2575. ss.str("?intelligent-tiering");
  2576. uri.SetQueryString(ss.str());
  2577. return PutBucketIntelligentTieringConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2578. }
  2579. PutBucketIntelligentTieringConfigurationOutcomeCallable S3Client::PutBucketIntelligentTieringConfigurationCallable(const PutBucketIntelligentTieringConfigurationRequest& request) const
  2580. {
  2581. auto task = Aws::MakeShared< std::packaged_task< PutBucketIntelligentTieringConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketIntelligentTieringConfiguration(request); } );
  2582. auto packagedFunction = [task]() { (*task)(); };
  2583. m_executor->Submit(packagedFunction);
  2584. return task->get_future();
  2585. }
  2586. void S3Client::PutBucketIntelligentTieringConfigurationAsync(const PutBucketIntelligentTieringConfigurationRequest& request, const PutBucketIntelligentTieringConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2587. {
  2588. m_executor->Submit( [this, request, handler, context](){ this->PutBucketIntelligentTieringConfigurationAsyncHelper( request, handler, context ); } );
  2589. }
  2590. void S3Client::PutBucketIntelligentTieringConfigurationAsyncHelper(const PutBucketIntelligentTieringConfigurationRequest& request, const PutBucketIntelligentTieringConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2591. {
  2592. handler(this, request, PutBucketIntelligentTieringConfiguration(request), context);
  2593. }
  2594. PutBucketInventoryConfigurationOutcome S3Client::PutBucketInventoryConfiguration(const PutBucketInventoryConfigurationRequest& request) const
  2595. {
  2596. if (!request.BucketHasBeenSet())
  2597. {
  2598. AWS_LOGSTREAM_ERROR("PutBucketInventoryConfiguration", "Required field: Bucket, is not set");
  2599. return PutBucketInventoryConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2600. }
  2601. if (!request.IdHasBeenSet())
  2602. {
  2603. AWS_LOGSTREAM_ERROR("PutBucketInventoryConfiguration", "Required field: Id, is not set");
  2604. return PutBucketInventoryConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Id]", false));
  2605. }
  2606. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2607. if (!computeEndpointOutcome.IsSuccess())
  2608. {
  2609. return PutBucketInventoryConfigurationOutcome(computeEndpointOutcome.GetError());
  2610. }
  2611. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2612. Aws::StringStream ss;
  2613. ss.str("?inventory");
  2614. uri.SetQueryString(ss.str());
  2615. return PutBucketInventoryConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2616. }
  2617. PutBucketInventoryConfigurationOutcomeCallable S3Client::PutBucketInventoryConfigurationCallable(const PutBucketInventoryConfigurationRequest& request) const
  2618. {
  2619. auto task = Aws::MakeShared< std::packaged_task< PutBucketInventoryConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketInventoryConfiguration(request); } );
  2620. auto packagedFunction = [task]() { (*task)(); };
  2621. m_executor->Submit(packagedFunction);
  2622. return task->get_future();
  2623. }
  2624. void S3Client::PutBucketInventoryConfigurationAsync(const PutBucketInventoryConfigurationRequest& request, const PutBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2625. {
  2626. m_executor->Submit( [this, request, handler, context](){ this->PutBucketInventoryConfigurationAsyncHelper( request, handler, context ); } );
  2627. }
  2628. void S3Client::PutBucketInventoryConfigurationAsyncHelper(const PutBucketInventoryConfigurationRequest& request, const PutBucketInventoryConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2629. {
  2630. handler(this, request, PutBucketInventoryConfiguration(request), context);
  2631. }
  2632. PutBucketLifecycleConfigurationOutcome S3Client::PutBucketLifecycleConfiguration(const PutBucketLifecycleConfigurationRequest& request) const
  2633. {
  2634. if (!request.BucketHasBeenSet())
  2635. {
  2636. AWS_LOGSTREAM_ERROR("PutBucketLifecycleConfiguration", "Required field: Bucket, is not set");
  2637. return PutBucketLifecycleConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2638. }
  2639. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2640. if (!computeEndpointOutcome.IsSuccess())
  2641. {
  2642. return PutBucketLifecycleConfigurationOutcome(computeEndpointOutcome.GetError());
  2643. }
  2644. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2645. Aws::StringStream ss;
  2646. ss.str("?lifecycle");
  2647. uri.SetQueryString(ss.str());
  2648. return PutBucketLifecycleConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2649. }
  2650. PutBucketLifecycleConfigurationOutcomeCallable S3Client::PutBucketLifecycleConfigurationCallable(const PutBucketLifecycleConfigurationRequest& request) const
  2651. {
  2652. auto task = Aws::MakeShared< std::packaged_task< PutBucketLifecycleConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketLifecycleConfiguration(request); } );
  2653. auto packagedFunction = [task]() { (*task)(); };
  2654. m_executor->Submit(packagedFunction);
  2655. return task->get_future();
  2656. }
  2657. void S3Client::PutBucketLifecycleConfigurationAsync(const PutBucketLifecycleConfigurationRequest& request, const PutBucketLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2658. {
  2659. m_executor->Submit( [this, request, handler, context](){ this->PutBucketLifecycleConfigurationAsyncHelper( request, handler, context ); } );
  2660. }
  2661. void S3Client::PutBucketLifecycleConfigurationAsyncHelper(const PutBucketLifecycleConfigurationRequest& request, const PutBucketLifecycleConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2662. {
  2663. handler(this, request, PutBucketLifecycleConfiguration(request), context);
  2664. }
  2665. PutBucketLoggingOutcome S3Client::PutBucketLogging(const PutBucketLoggingRequest& request) const
  2666. {
  2667. if (!request.BucketHasBeenSet())
  2668. {
  2669. AWS_LOGSTREAM_ERROR("PutBucketLogging", "Required field: Bucket, is not set");
  2670. return PutBucketLoggingOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2671. }
  2672. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2673. if (!computeEndpointOutcome.IsSuccess())
  2674. {
  2675. return PutBucketLoggingOutcome(computeEndpointOutcome.GetError());
  2676. }
  2677. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2678. Aws::StringStream ss;
  2679. ss.str("?logging");
  2680. uri.SetQueryString(ss.str());
  2681. return PutBucketLoggingOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2682. }
  2683. PutBucketLoggingOutcomeCallable S3Client::PutBucketLoggingCallable(const PutBucketLoggingRequest& request) const
  2684. {
  2685. auto task = Aws::MakeShared< std::packaged_task< PutBucketLoggingOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketLogging(request); } );
  2686. auto packagedFunction = [task]() { (*task)(); };
  2687. m_executor->Submit(packagedFunction);
  2688. return task->get_future();
  2689. }
  2690. void S3Client::PutBucketLoggingAsync(const PutBucketLoggingRequest& request, const PutBucketLoggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2691. {
  2692. m_executor->Submit( [this, request, handler, context](){ this->PutBucketLoggingAsyncHelper( request, handler, context ); } );
  2693. }
  2694. void S3Client::PutBucketLoggingAsyncHelper(const PutBucketLoggingRequest& request, const PutBucketLoggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2695. {
  2696. handler(this, request, PutBucketLogging(request), context);
  2697. }
  2698. PutBucketMetricsConfigurationOutcome S3Client::PutBucketMetricsConfiguration(const PutBucketMetricsConfigurationRequest& request) const
  2699. {
  2700. if (!request.BucketHasBeenSet())
  2701. {
  2702. AWS_LOGSTREAM_ERROR("PutBucketMetricsConfiguration", "Required field: Bucket, is not set");
  2703. return PutBucketMetricsConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2704. }
  2705. if (!request.IdHasBeenSet())
  2706. {
  2707. AWS_LOGSTREAM_ERROR("PutBucketMetricsConfiguration", "Required field: Id, is not set");
  2708. return PutBucketMetricsConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Id]", false));
  2709. }
  2710. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2711. if (!computeEndpointOutcome.IsSuccess())
  2712. {
  2713. return PutBucketMetricsConfigurationOutcome(computeEndpointOutcome.GetError());
  2714. }
  2715. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2716. Aws::StringStream ss;
  2717. ss.str("?metrics");
  2718. uri.SetQueryString(ss.str());
  2719. return PutBucketMetricsConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2720. }
  2721. PutBucketMetricsConfigurationOutcomeCallable S3Client::PutBucketMetricsConfigurationCallable(const PutBucketMetricsConfigurationRequest& request) const
  2722. {
  2723. auto task = Aws::MakeShared< std::packaged_task< PutBucketMetricsConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketMetricsConfiguration(request); } );
  2724. auto packagedFunction = [task]() { (*task)(); };
  2725. m_executor->Submit(packagedFunction);
  2726. return task->get_future();
  2727. }
  2728. void S3Client::PutBucketMetricsConfigurationAsync(const PutBucketMetricsConfigurationRequest& request, const PutBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2729. {
  2730. m_executor->Submit( [this, request, handler, context](){ this->PutBucketMetricsConfigurationAsyncHelper( request, handler, context ); } );
  2731. }
  2732. void S3Client::PutBucketMetricsConfigurationAsyncHelper(const PutBucketMetricsConfigurationRequest& request, const PutBucketMetricsConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2733. {
  2734. handler(this, request, PutBucketMetricsConfiguration(request), context);
  2735. }
  2736. PutBucketNotificationConfigurationOutcome S3Client::PutBucketNotificationConfiguration(const PutBucketNotificationConfigurationRequest& request) const
  2737. {
  2738. if (!request.BucketHasBeenSet())
  2739. {
  2740. AWS_LOGSTREAM_ERROR("PutBucketNotificationConfiguration", "Required field: Bucket, is not set");
  2741. return PutBucketNotificationConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2742. }
  2743. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2744. if (!computeEndpointOutcome.IsSuccess())
  2745. {
  2746. return PutBucketNotificationConfigurationOutcome(computeEndpointOutcome.GetError());
  2747. }
  2748. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2749. Aws::StringStream ss;
  2750. ss.str("?notification");
  2751. uri.SetQueryString(ss.str());
  2752. return PutBucketNotificationConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2753. }
  2754. PutBucketNotificationConfigurationOutcomeCallable S3Client::PutBucketNotificationConfigurationCallable(const PutBucketNotificationConfigurationRequest& request) const
  2755. {
  2756. auto task = Aws::MakeShared< std::packaged_task< PutBucketNotificationConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketNotificationConfiguration(request); } );
  2757. auto packagedFunction = [task]() { (*task)(); };
  2758. m_executor->Submit(packagedFunction);
  2759. return task->get_future();
  2760. }
  2761. void S3Client::PutBucketNotificationConfigurationAsync(const PutBucketNotificationConfigurationRequest& request, const PutBucketNotificationConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2762. {
  2763. m_executor->Submit( [this, request, handler, context](){ this->PutBucketNotificationConfigurationAsyncHelper( request, handler, context ); } );
  2764. }
  2765. void S3Client::PutBucketNotificationConfigurationAsyncHelper(const PutBucketNotificationConfigurationRequest& request, const PutBucketNotificationConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2766. {
  2767. handler(this, request, PutBucketNotificationConfiguration(request), context);
  2768. }
  2769. PutBucketOwnershipControlsOutcome S3Client::PutBucketOwnershipControls(const PutBucketOwnershipControlsRequest& request) const
  2770. {
  2771. if (!request.BucketHasBeenSet())
  2772. {
  2773. AWS_LOGSTREAM_ERROR("PutBucketOwnershipControls", "Required field: Bucket, is not set");
  2774. return PutBucketOwnershipControlsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2775. }
  2776. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2777. if (!computeEndpointOutcome.IsSuccess())
  2778. {
  2779. return PutBucketOwnershipControlsOutcome(computeEndpointOutcome.GetError());
  2780. }
  2781. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2782. Aws::StringStream ss;
  2783. ss.str("?ownershipControls");
  2784. uri.SetQueryString(ss.str());
  2785. return PutBucketOwnershipControlsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2786. }
  2787. PutBucketOwnershipControlsOutcomeCallable S3Client::PutBucketOwnershipControlsCallable(const PutBucketOwnershipControlsRequest& request) const
  2788. {
  2789. auto task = Aws::MakeShared< std::packaged_task< PutBucketOwnershipControlsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketOwnershipControls(request); } );
  2790. auto packagedFunction = [task]() { (*task)(); };
  2791. m_executor->Submit(packagedFunction);
  2792. return task->get_future();
  2793. }
  2794. void S3Client::PutBucketOwnershipControlsAsync(const PutBucketOwnershipControlsRequest& request, const PutBucketOwnershipControlsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2795. {
  2796. m_executor->Submit( [this, request, handler, context](){ this->PutBucketOwnershipControlsAsyncHelper( request, handler, context ); } );
  2797. }
  2798. void S3Client::PutBucketOwnershipControlsAsyncHelper(const PutBucketOwnershipControlsRequest& request, const PutBucketOwnershipControlsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2799. {
  2800. handler(this, request, PutBucketOwnershipControls(request), context);
  2801. }
  2802. PutBucketPolicyOutcome S3Client::PutBucketPolicy(const PutBucketPolicyRequest& request) const
  2803. {
  2804. if (!request.BucketHasBeenSet())
  2805. {
  2806. AWS_LOGSTREAM_ERROR("PutBucketPolicy", "Required field: Bucket, is not set");
  2807. return PutBucketPolicyOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2808. }
  2809. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2810. if (!computeEndpointOutcome.IsSuccess())
  2811. {
  2812. return PutBucketPolicyOutcome(computeEndpointOutcome.GetError());
  2813. }
  2814. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2815. Aws::StringStream ss;
  2816. ss.str("?policy");
  2817. uri.SetQueryString(ss.str());
  2818. return PutBucketPolicyOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2819. }
  2820. PutBucketPolicyOutcomeCallable S3Client::PutBucketPolicyCallable(const PutBucketPolicyRequest& request) const
  2821. {
  2822. auto task = Aws::MakeShared< std::packaged_task< PutBucketPolicyOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketPolicy(request); } );
  2823. auto packagedFunction = [task]() { (*task)(); };
  2824. m_executor->Submit(packagedFunction);
  2825. return task->get_future();
  2826. }
  2827. void S3Client::PutBucketPolicyAsync(const PutBucketPolicyRequest& request, const PutBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2828. {
  2829. m_executor->Submit( [this, request, handler, context](){ this->PutBucketPolicyAsyncHelper( request, handler, context ); } );
  2830. }
  2831. void S3Client::PutBucketPolicyAsyncHelper(const PutBucketPolicyRequest& request, const PutBucketPolicyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2832. {
  2833. handler(this, request, PutBucketPolicy(request), context);
  2834. }
  2835. PutBucketReplicationOutcome S3Client::PutBucketReplication(const PutBucketReplicationRequest& request) const
  2836. {
  2837. if (!request.BucketHasBeenSet())
  2838. {
  2839. AWS_LOGSTREAM_ERROR("PutBucketReplication", "Required field: Bucket, is not set");
  2840. return PutBucketReplicationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2841. }
  2842. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2843. if (!computeEndpointOutcome.IsSuccess())
  2844. {
  2845. return PutBucketReplicationOutcome(computeEndpointOutcome.GetError());
  2846. }
  2847. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2848. Aws::StringStream ss;
  2849. ss.str("?replication");
  2850. uri.SetQueryString(ss.str());
  2851. return PutBucketReplicationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2852. }
  2853. PutBucketReplicationOutcomeCallable S3Client::PutBucketReplicationCallable(const PutBucketReplicationRequest& request) const
  2854. {
  2855. auto task = Aws::MakeShared< std::packaged_task< PutBucketReplicationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketReplication(request); } );
  2856. auto packagedFunction = [task]() { (*task)(); };
  2857. m_executor->Submit(packagedFunction);
  2858. return task->get_future();
  2859. }
  2860. void S3Client::PutBucketReplicationAsync(const PutBucketReplicationRequest& request, const PutBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2861. {
  2862. m_executor->Submit( [this, request, handler, context](){ this->PutBucketReplicationAsyncHelper( request, handler, context ); } );
  2863. }
  2864. void S3Client::PutBucketReplicationAsyncHelper(const PutBucketReplicationRequest& request, const PutBucketReplicationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2865. {
  2866. handler(this, request, PutBucketReplication(request), context);
  2867. }
  2868. PutBucketRequestPaymentOutcome S3Client::PutBucketRequestPayment(const PutBucketRequestPaymentRequest& request) const
  2869. {
  2870. if (!request.BucketHasBeenSet())
  2871. {
  2872. AWS_LOGSTREAM_ERROR("PutBucketRequestPayment", "Required field: Bucket, is not set");
  2873. return PutBucketRequestPaymentOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2874. }
  2875. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2876. if (!computeEndpointOutcome.IsSuccess())
  2877. {
  2878. return PutBucketRequestPaymentOutcome(computeEndpointOutcome.GetError());
  2879. }
  2880. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2881. Aws::StringStream ss;
  2882. ss.str("?requestPayment");
  2883. uri.SetQueryString(ss.str());
  2884. return PutBucketRequestPaymentOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2885. }
  2886. PutBucketRequestPaymentOutcomeCallable S3Client::PutBucketRequestPaymentCallable(const PutBucketRequestPaymentRequest& request) const
  2887. {
  2888. auto task = Aws::MakeShared< std::packaged_task< PutBucketRequestPaymentOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketRequestPayment(request); } );
  2889. auto packagedFunction = [task]() { (*task)(); };
  2890. m_executor->Submit(packagedFunction);
  2891. return task->get_future();
  2892. }
  2893. void S3Client::PutBucketRequestPaymentAsync(const PutBucketRequestPaymentRequest& request, const PutBucketRequestPaymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2894. {
  2895. m_executor->Submit( [this, request, handler, context](){ this->PutBucketRequestPaymentAsyncHelper( request, handler, context ); } );
  2896. }
  2897. void S3Client::PutBucketRequestPaymentAsyncHelper(const PutBucketRequestPaymentRequest& request, const PutBucketRequestPaymentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2898. {
  2899. handler(this, request, PutBucketRequestPayment(request), context);
  2900. }
  2901. PutBucketTaggingOutcome S3Client::PutBucketTagging(const PutBucketTaggingRequest& request) const
  2902. {
  2903. if (!request.BucketHasBeenSet())
  2904. {
  2905. AWS_LOGSTREAM_ERROR("PutBucketTagging", "Required field: Bucket, is not set");
  2906. return PutBucketTaggingOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2907. }
  2908. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2909. if (!computeEndpointOutcome.IsSuccess())
  2910. {
  2911. return PutBucketTaggingOutcome(computeEndpointOutcome.GetError());
  2912. }
  2913. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2914. Aws::StringStream ss;
  2915. ss.str("?tagging");
  2916. uri.SetQueryString(ss.str());
  2917. return PutBucketTaggingOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2918. }
  2919. PutBucketTaggingOutcomeCallable S3Client::PutBucketTaggingCallable(const PutBucketTaggingRequest& request) const
  2920. {
  2921. auto task = Aws::MakeShared< std::packaged_task< PutBucketTaggingOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketTagging(request); } );
  2922. auto packagedFunction = [task]() { (*task)(); };
  2923. m_executor->Submit(packagedFunction);
  2924. return task->get_future();
  2925. }
  2926. void S3Client::PutBucketTaggingAsync(const PutBucketTaggingRequest& request, const PutBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2927. {
  2928. m_executor->Submit( [this, request, handler, context](){ this->PutBucketTaggingAsyncHelper( request, handler, context ); } );
  2929. }
  2930. void S3Client::PutBucketTaggingAsyncHelper(const PutBucketTaggingRequest& request, const PutBucketTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2931. {
  2932. handler(this, request, PutBucketTagging(request), context);
  2933. }
  2934. PutBucketVersioningOutcome S3Client::PutBucketVersioning(const PutBucketVersioningRequest& request) const
  2935. {
  2936. if (!request.BucketHasBeenSet())
  2937. {
  2938. AWS_LOGSTREAM_ERROR("PutBucketVersioning", "Required field: Bucket, is not set");
  2939. return PutBucketVersioningOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2940. }
  2941. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2942. if (!computeEndpointOutcome.IsSuccess())
  2943. {
  2944. return PutBucketVersioningOutcome(computeEndpointOutcome.GetError());
  2945. }
  2946. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2947. Aws::StringStream ss;
  2948. ss.str("?versioning");
  2949. uri.SetQueryString(ss.str());
  2950. return PutBucketVersioningOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2951. }
  2952. PutBucketVersioningOutcomeCallable S3Client::PutBucketVersioningCallable(const PutBucketVersioningRequest& request) const
  2953. {
  2954. auto task = Aws::MakeShared< std::packaged_task< PutBucketVersioningOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketVersioning(request); } );
  2955. auto packagedFunction = [task]() { (*task)(); };
  2956. m_executor->Submit(packagedFunction);
  2957. return task->get_future();
  2958. }
  2959. void S3Client::PutBucketVersioningAsync(const PutBucketVersioningRequest& request, const PutBucketVersioningResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2960. {
  2961. m_executor->Submit( [this, request, handler, context](){ this->PutBucketVersioningAsyncHelper( request, handler, context ); } );
  2962. }
  2963. void S3Client::PutBucketVersioningAsyncHelper(const PutBucketVersioningRequest& request, const PutBucketVersioningResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2964. {
  2965. handler(this, request, PutBucketVersioning(request), context);
  2966. }
  2967. PutBucketWebsiteOutcome S3Client::PutBucketWebsite(const PutBucketWebsiteRequest& request) const
  2968. {
  2969. if (!request.BucketHasBeenSet())
  2970. {
  2971. AWS_LOGSTREAM_ERROR("PutBucketWebsite", "Required field: Bucket, is not set");
  2972. return PutBucketWebsiteOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  2973. }
  2974. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  2975. if (!computeEndpointOutcome.IsSuccess())
  2976. {
  2977. return PutBucketWebsiteOutcome(computeEndpointOutcome.GetError());
  2978. }
  2979. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  2980. Aws::StringStream ss;
  2981. ss.str("?website");
  2982. uri.SetQueryString(ss.str());
  2983. return PutBucketWebsiteOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  2984. }
  2985. PutBucketWebsiteOutcomeCallable S3Client::PutBucketWebsiteCallable(const PutBucketWebsiteRequest& request) const
  2986. {
  2987. auto task = Aws::MakeShared< std::packaged_task< PutBucketWebsiteOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutBucketWebsite(request); } );
  2988. auto packagedFunction = [task]() { (*task)(); };
  2989. m_executor->Submit(packagedFunction);
  2990. return task->get_future();
  2991. }
  2992. void S3Client::PutBucketWebsiteAsync(const PutBucketWebsiteRequest& request, const PutBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2993. {
  2994. m_executor->Submit( [this, request, handler, context](){ this->PutBucketWebsiteAsyncHelper( request, handler, context ); } );
  2995. }
  2996. void S3Client::PutBucketWebsiteAsyncHelper(const PutBucketWebsiteRequest& request, const PutBucketWebsiteResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  2997. {
  2998. handler(this, request, PutBucketWebsite(request), context);
  2999. }
  3000. PutObjectOutcome S3Client::PutObject(const PutObjectRequest& request) const
  3001. {
  3002. if (!request.BucketHasBeenSet())
  3003. {
  3004. AWS_LOGSTREAM_ERROR("PutObject", "Required field: Bucket, is not set");
  3005. return PutObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  3006. }
  3007. if (!request.KeyHasBeenSet())
  3008. {
  3009. AWS_LOGSTREAM_ERROR("PutObject", "Required field: Key, is not set");
  3010. return PutObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  3011. }
  3012. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  3013. if (!computeEndpointOutcome.IsSuccess())
  3014. {
  3015. return PutObjectOutcome(computeEndpointOutcome.GetError());
  3016. }
  3017. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  3018. Aws::StringStream ss;
  3019. ss << "/";
  3020. ss << request.GetKey();
  3021. uri.SetPath(uri.GetPath() + ss.str());
  3022. return PutObjectOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  3023. }
  3024. PutObjectOutcomeCallable S3Client::PutObjectCallable(const PutObjectRequest& request) const
  3025. {
  3026. auto task = Aws::MakeShared< std::packaged_task< PutObjectOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutObject(request); } );
  3027. auto packagedFunction = [task]() { (*task)(); };
  3028. m_executor->Submit(packagedFunction);
  3029. return task->get_future();
  3030. }
  3031. void S3Client::PutObjectAsync(const PutObjectRequest& request, const PutObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3032. {
  3033. m_executor->Submit( [this, request, handler, context](){ this->PutObjectAsyncHelper( request, handler, context ); } );
  3034. }
  3035. void S3Client::PutObjectAsyncHelper(const PutObjectRequest& request, const PutObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3036. {
  3037. handler(this, request, PutObject(request), context);
  3038. }
  3039. PutObjectAclOutcome S3Client::PutObjectAcl(const PutObjectAclRequest& request) const
  3040. {
  3041. if (!request.BucketHasBeenSet())
  3042. {
  3043. AWS_LOGSTREAM_ERROR("PutObjectAcl", "Required field: Bucket, is not set");
  3044. return PutObjectAclOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  3045. }
  3046. if (!request.KeyHasBeenSet())
  3047. {
  3048. AWS_LOGSTREAM_ERROR("PutObjectAcl", "Required field: Key, is not set");
  3049. return PutObjectAclOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  3050. }
  3051. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  3052. if (!computeEndpointOutcome.IsSuccess())
  3053. {
  3054. return PutObjectAclOutcome(computeEndpointOutcome.GetError());
  3055. }
  3056. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  3057. Aws::StringStream ss;
  3058. ss << "/";
  3059. ss << request.GetKey();
  3060. uri.SetPath(uri.GetPath() + ss.str());
  3061. ss.str("?acl");
  3062. uri.SetQueryString(ss.str());
  3063. return PutObjectAclOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  3064. }
  3065. PutObjectAclOutcomeCallable S3Client::PutObjectAclCallable(const PutObjectAclRequest& request) const
  3066. {
  3067. auto task = Aws::MakeShared< std::packaged_task< PutObjectAclOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutObjectAcl(request); } );
  3068. auto packagedFunction = [task]() { (*task)(); };
  3069. m_executor->Submit(packagedFunction);
  3070. return task->get_future();
  3071. }
  3072. void S3Client::PutObjectAclAsync(const PutObjectAclRequest& request, const PutObjectAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3073. {
  3074. m_executor->Submit( [this, request, handler, context](){ this->PutObjectAclAsyncHelper( request, handler, context ); } );
  3075. }
  3076. void S3Client::PutObjectAclAsyncHelper(const PutObjectAclRequest& request, const PutObjectAclResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3077. {
  3078. handler(this, request, PutObjectAcl(request), context);
  3079. }
  3080. PutObjectLegalHoldOutcome S3Client::PutObjectLegalHold(const PutObjectLegalHoldRequest& request) const
  3081. {
  3082. if (!request.BucketHasBeenSet())
  3083. {
  3084. AWS_LOGSTREAM_ERROR("PutObjectLegalHold", "Required field: Bucket, is not set");
  3085. return PutObjectLegalHoldOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  3086. }
  3087. if (!request.KeyHasBeenSet())
  3088. {
  3089. AWS_LOGSTREAM_ERROR("PutObjectLegalHold", "Required field: Key, is not set");
  3090. return PutObjectLegalHoldOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  3091. }
  3092. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  3093. if (!computeEndpointOutcome.IsSuccess())
  3094. {
  3095. return PutObjectLegalHoldOutcome(computeEndpointOutcome.GetError());
  3096. }
  3097. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  3098. Aws::StringStream ss;
  3099. ss << "/";
  3100. ss << request.GetKey();
  3101. uri.SetPath(uri.GetPath() + ss.str());
  3102. ss.str("?legal-hold");
  3103. uri.SetQueryString(ss.str());
  3104. return PutObjectLegalHoldOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  3105. }
  3106. PutObjectLegalHoldOutcomeCallable S3Client::PutObjectLegalHoldCallable(const PutObjectLegalHoldRequest& request) const
  3107. {
  3108. auto task = Aws::MakeShared< std::packaged_task< PutObjectLegalHoldOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutObjectLegalHold(request); } );
  3109. auto packagedFunction = [task]() { (*task)(); };
  3110. m_executor->Submit(packagedFunction);
  3111. return task->get_future();
  3112. }
  3113. void S3Client::PutObjectLegalHoldAsync(const PutObjectLegalHoldRequest& request, const PutObjectLegalHoldResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3114. {
  3115. m_executor->Submit( [this, request, handler, context](){ this->PutObjectLegalHoldAsyncHelper( request, handler, context ); } );
  3116. }
  3117. void S3Client::PutObjectLegalHoldAsyncHelper(const PutObjectLegalHoldRequest& request, const PutObjectLegalHoldResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3118. {
  3119. handler(this, request, PutObjectLegalHold(request), context);
  3120. }
  3121. PutObjectLockConfigurationOutcome S3Client::PutObjectLockConfiguration(const PutObjectLockConfigurationRequest& request) const
  3122. {
  3123. if (!request.BucketHasBeenSet())
  3124. {
  3125. AWS_LOGSTREAM_ERROR("PutObjectLockConfiguration", "Required field: Bucket, is not set");
  3126. return PutObjectLockConfigurationOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  3127. }
  3128. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  3129. if (!computeEndpointOutcome.IsSuccess())
  3130. {
  3131. return PutObjectLockConfigurationOutcome(computeEndpointOutcome.GetError());
  3132. }
  3133. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  3134. Aws::StringStream ss;
  3135. ss.str("?object-lock");
  3136. uri.SetQueryString(ss.str());
  3137. return PutObjectLockConfigurationOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  3138. }
  3139. PutObjectLockConfigurationOutcomeCallable S3Client::PutObjectLockConfigurationCallable(const PutObjectLockConfigurationRequest& request) const
  3140. {
  3141. auto task = Aws::MakeShared< std::packaged_task< PutObjectLockConfigurationOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutObjectLockConfiguration(request); } );
  3142. auto packagedFunction = [task]() { (*task)(); };
  3143. m_executor->Submit(packagedFunction);
  3144. return task->get_future();
  3145. }
  3146. void S3Client::PutObjectLockConfigurationAsync(const PutObjectLockConfigurationRequest& request, const PutObjectLockConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3147. {
  3148. m_executor->Submit( [this, request, handler, context](){ this->PutObjectLockConfigurationAsyncHelper( request, handler, context ); } );
  3149. }
  3150. void S3Client::PutObjectLockConfigurationAsyncHelper(const PutObjectLockConfigurationRequest& request, const PutObjectLockConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3151. {
  3152. handler(this, request, PutObjectLockConfiguration(request), context);
  3153. }
  3154. PutObjectRetentionOutcome S3Client::PutObjectRetention(const PutObjectRetentionRequest& request) const
  3155. {
  3156. if (!request.BucketHasBeenSet())
  3157. {
  3158. AWS_LOGSTREAM_ERROR("PutObjectRetention", "Required field: Bucket, is not set");
  3159. return PutObjectRetentionOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  3160. }
  3161. if (!request.KeyHasBeenSet())
  3162. {
  3163. AWS_LOGSTREAM_ERROR("PutObjectRetention", "Required field: Key, is not set");
  3164. return PutObjectRetentionOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  3165. }
  3166. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  3167. if (!computeEndpointOutcome.IsSuccess())
  3168. {
  3169. return PutObjectRetentionOutcome(computeEndpointOutcome.GetError());
  3170. }
  3171. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  3172. Aws::StringStream ss;
  3173. ss << "/";
  3174. ss << request.GetKey();
  3175. uri.SetPath(uri.GetPath() + ss.str());
  3176. ss.str("?retention");
  3177. uri.SetQueryString(ss.str());
  3178. return PutObjectRetentionOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  3179. }
  3180. PutObjectRetentionOutcomeCallable S3Client::PutObjectRetentionCallable(const PutObjectRetentionRequest& request) const
  3181. {
  3182. auto task = Aws::MakeShared< std::packaged_task< PutObjectRetentionOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutObjectRetention(request); } );
  3183. auto packagedFunction = [task]() { (*task)(); };
  3184. m_executor->Submit(packagedFunction);
  3185. return task->get_future();
  3186. }
  3187. void S3Client::PutObjectRetentionAsync(const PutObjectRetentionRequest& request, const PutObjectRetentionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3188. {
  3189. m_executor->Submit( [this, request, handler, context](){ this->PutObjectRetentionAsyncHelper( request, handler, context ); } );
  3190. }
  3191. void S3Client::PutObjectRetentionAsyncHelper(const PutObjectRetentionRequest& request, const PutObjectRetentionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3192. {
  3193. handler(this, request, PutObjectRetention(request), context);
  3194. }
  3195. PutObjectTaggingOutcome S3Client::PutObjectTagging(const PutObjectTaggingRequest& request) const
  3196. {
  3197. if (!request.BucketHasBeenSet())
  3198. {
  3199. AWS_LOGSTREAM_ERROR("PutObjectTagging", "Required field: Bucket, is not set");
  3200. return PutObjectTaggingOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  3201. }
  3202. if (!request.KeyHasBeenSet())
  3203. {
  3204. AWS_LOGSTREAM_ERROR("PutObjectTagging", "Required field: Key, is not set");
  3205. return PutObjectTaggingOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  3206. }
  3207. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  3208. if (!computeEndpointOutcome.IsSuccess())
  3209. {
  3210. return PutObjectTaggingOutcome(computeEndpointOutcome.GetError());
  3211. }
  3212. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  3213. Aws::StringStream ss;
  3214. ss << "/";
  3215. ss << request.GetKey();
  3216. uri.SetPath(uri.GetPath() + ss.str());
  3217. ss.str("?tagging");
  3218. uri.SetQueryString(ss.str());
  3219. return PutObjectTaggingOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  3220. }
  3221. PutObjectTaggingOutcomeCallable S3Client::PutObjectTaggingCallable(const PutObjectTaggingRequest& request) const
  3222. {
  3223. auto task = Aws::MakeShared< std::packaged_task< PutObjectTaggingOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutObjectTagging(request); } );
  3224. auto packagedFunction = [task]() { (*task)(); };
  3225. m_executor->Submit(packagedFunction);
  3226. return task->get_future();
  3227. }
  3228. void S3Client::PutObjectTaggingAsync(const PutObjectTaggingRequest& request, const PutObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3229. {
  3230. m_executor->Submit( [this, request, handler, context](){ this->PutObjectTaggingAsyncHelper( request, handler, context ); } );
  3231. }
  3232. void S3Client::PutObjectTaggingAsyncHelper(const PutObjectTaggingRequest& request, const PutObjectTaggingResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3233. {
  3234. handler(this, request, PutObjectTagging(request), context);
  3235. }
  3236. PutPublicAccessBlockOutcome S3Client::PutPublicAccessBlock(const PutPublicAccessBlockRequest& request) const
  3237. {
  3238. if (!request.BucketHasBeenSet())
  3239. {
  3240. AWS_LOGSTREAM_ERROR("PutPublicAccessBlock", "Required field: Bucket, is not set");
  3241. return PutPublicAccessBlockOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  3242. }
  3243. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  3244. if (!computeEndpointOutcome.IsSuccess())
  3245. {
  3246. return PutPublicAccessBlockOutcome(computeEndpointOutcome.GetError());
  3247. }
  3248. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  3249. Aws::StringStream ss;
  3250. ss.str("?publicAccessBlock");
  3251. uri.SetQueryString(ss.str());
  3252. return PutPublicAccessBlockOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  3253. }
  3254. PutPublicAccessBlockOutcomeCallable S3Client::PutPublicAccessBlockCallable(const PutPublicAccessBlockRequest& request) const
  3255. {
  3256. auto task = Aws::MakeShared< std::packaged_task< PutPublicAccessBlockOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->PutPublicAccessBlock(request); } );
  3257. auto packagedFunction = [task]() { (*task)(); };
  3258. m_executor->Submit(packagedFunction);
  3259. return task->get_future();
  3260. }
  3261. void S3Client::PutPublicAccessBlockAsync(const PutPublicAccessBlockRequest& request, const PutPublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3262. {
  3263. m_executor->Submit( [this, request, handler, context](){ this->PutPublicAccessBlockAsyncHelper( request, handler, context ); } );
  3264. }
  3265. void S3Client::PutPublicAccessBlockAsyncHelper(const PutPublicAccessBlockRequest& request, const PutPublicAccessBlockResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3266. {
  3267. handler(this, request, PutPublicAccessBlock(request), context);
  3268. }
  3269. RestoreObjectOutcome S3Client::RestoreObject(const RestoreObjectRequest& request) const
  3270. {
  3271. if (!request.BucketHasBeenSet())
  3272. {
  3273. AWS_LOGSTREAM_ERROR("RestoreObject", "Required field: Bucket, is not set");
  3274. return RestoreObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  3275. }
  3276. if (!request.KeyHasBeenSet())
  3277. {
  3278. AWS_LOGSTREAM_ERROR("RestoreObject", "Required field: Key, is not set");
  3279. return RestoreObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  3280. }
  3281. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  3282. if (!computeEndpointOutcome.IsSuccess())
  3283. {
  3284. return RestoreObjectOutcome(computeEndpointOutcome.GetError());
  3285. }
  3286. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  3287. Aws::StringStream ss;
  3288. ss << "/";
  3289. ss << request.GetKey();
  3290. uri.SetPath(uri.GetPath() + ss.str());
  3291. ss.str("?restore");
  3292. uri.SetQueryString(ss.str());
  3293. return RestoreObjectOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  3294. }
  3295. RestoreObjectOutcomeCallable S3Client::RestoreObjectCallable(const RestoreObjectRequest& request) const
  3296. {
  3297. auto task = Aws::MakeShared< std::packaged_task< RestoreObjectOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->RestoreObject(request); } );
  3298. auto packagedFunction = [task]() { (*task)(); };
  3299. m_executor->Submit(packagedFunction);
  3300. return task->get_future();
  3301. }
  3302. void S3Client::RestoreObjectAsync(const RestoreObjectRequest& request, const RestoreObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3303. {
  3304. m_executor->Submit( [this, request, handler, context](){ this->RestoreObjectAsyncHelper( request, handler, context ); } );
  3305. }
  3306. void S3Client::RestoreObjectAsyncHelper(const RestoreObjectRequest& request, const RestoreObjectResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3307. {
  3308. handler(this, request, RestoreObject(request), context);
  3309. }
  3310. SelectObjectContentOutcome S3Client::SelectObjectContent(SelectObjectContentRequest& request) const
  3311. {
  3312. if (!request.BucketHasBeenSet())
  3313. {
  3314. AWS_LOGSTREAM_ERROR("SelectObjectContent", "Required field: Bucket, is not set");
  3315. return SelectObjectContentOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  3316. }
  3317. if (!request.KeyHasBeenSet())
  3318. {
  3319. AWS_LOGSTREAM_ERROR("SelectObjectContent", "Required field: Key, is not set");
  3320. return SelectObjectContentOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  3321. }
  3322. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  3323. if (!computeEndpointOutcome.IsSuccess())
  3324. {
  3325. return SelectObjectContentOutcome(computeEndpointOutcome.GetError());
  3326. }
  3327. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  3328. Aws::StringStream ss;
  3329. ss << "/";
  3330. ss << request.GetKey();
  3331. uri.SetPath(uri.GetPath() + ss.str());
  3332. ss.str("?select&select-type=2");
  3333. uri.SetQueryString(ss.str());
  3334. request.SetResponseStreamFactory(
  3335. [&] { request.GetEventStreamDecoder().Reset(); return Aws::New<Aws::Utils::Event::EventDecoderStream>(ALLOCATION_TAG, request.GetEventStreamDecoder()); }
  3336. );
  3337. return SelectObjectContentOutcome(MakeRequestWithEventStream(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  3338. }
  3339. SelectObjectContentOutcomeCallable S3Client::SelectObjectContentCallable(SelectObjectContentRequest& request) const
  3340. {
  3341. auto task = Aws::MakeShared< std::packaged_task< SelectObjectContentOutcome() > >(ALLOCATION_TAG, [this, &request](){ return this->SelectObjectContent(request); } );
  3342. auto packagedFunction = [task]() { (*task)(); };
  3343. m_executor->Submit(packagedFunction);
  3344. return task->get_future();
  3345. }
  3346. void S3Client::SelectObjectContentAsync(SelectObjectContentRequest& request, const SelectObjectContentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3347. {
  3348. m_executor->Submit( [this, &request, handler, context](){ this->SelectObjectContentAsyncHelper( request, handler, context ); } );
  3349. }
  3350. void S3Client::SelectObjectContentAsyncHelper(SelectObjectContentRequest& request, const SelectObjectContentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3351. {
  3352. handler(this, request, SelectObjectContent(request), context);
  3353. }
  3354. UploadPartOutcome S3Client::UploadPart(const UploadPartRequest& request) const
  3355. {
  3356. if (!request.BucketHasBeenSet())
  3357. {
  3358. AWS_LOGSTREAM_ERROR("UploadPart", "Required field: Bucket, is not set");
  3359. return UploadPartOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  3360. }
  3361. if (!request.KeyHasBeenSet())
  3362. {
  3363. AWS_LOGSTREAM_ERROR("UploadPart", "Required field: Key, is not set");
  3364. return UploadPartOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  3365. }
  3366. if (!request.PartNumberHasBeenSet())
  3367. {
  3368. AWS_LOGSTREAM_ERROR("UploadPart", "Required field: PartNumber, is not set");
  3369. return UploadPartOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [PartNumber]", false));
  3370. }
  3371. if (!request.UploadIdHasBeenSet())
  3372. {
  3373. AWS_LOGSTREAM_ERROR("UploadPart", "Required field: UploadId, is not set");
  3374. return UploadPartOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [UploadId]", false));
  3375. }
  3376. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  3377. if (!computeEndpointOutcome.IsSuccess())
  3378. {
  3379. return UploadPartOutcome(computeEndpointOutcome.GetError());
  3380. }
  3381. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  3382. Aws::StringStream ss;
  3383. ss << "/";
  3384. ss << request.GetKey();
  3385. uri.SetPath(uri.GetPath() + ss.str());
  3386. return UploadPartOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  3387. }
  3388. UploadPartOutcomeCallable S3Client::UploadPartCallable(const UploadPartRequest& request) const
  3389. {
  3390. auto task = Aws::MakeShared< std::packaged_task< UploadPartOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->UploadPart(request); } );
  3391. auto packagedFunction = [task]() { (*task)(); };
  3392. m_executor->Submit(packagedFunction);
  3393. return task->get_future();
  3394. }
  3395. void S3Client::UploadPartAsync(const UploadPartRequest& request, const UploadPartResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3396. {
  3397. m_executor->Submit( [this, request, handler, context](){ this->UploadPartAsyncHelper( request, handler, context ); } );
  3398. }
  3399. void S3Client::UploadPartAsyncHelper(const UploadPartRequest& request, const UploadPartResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3400. {
  3401. handler(this, request, UploadPart(request), context);
  3402. }
  3403. UploadPartCopyOutcome S3Client::UploadPartCopy(const UploadPartCopyRequest& request) const
  3404. {
  3405. if (!request.BucketHasBeenSet())
  3406. {
  3407. AWS_LOGSTREAM_ERROR("UploadPartCopy", "Required field: Bucket, is not set");
  3408. return UploadPartCopyOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
  3409. }
  3410. if (!request.CopySourceHasBeenSet())
  3411. {
  3412. AWS_LOGSTREAM_ERROR("UploadPartCopy", "Required field: CopySource, is not set");
  3413. return UploadPartCopyOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [CopySource]", false));
  3414. }
  3415. if (!request.KeyHasBeenSet())
  3416. {
  3417. AWS_LOGSTREAM_ERROR("UploadPartCopy", "Required field: Key, is not set");
  3418. return UploadPartCopyOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
  3419. }
  3420. if (!request.PartNumberHasBeenSet())
  3421. {
  3422. AWS_LOGSTREAM_ERROR("UploadPartCopy", "Required field: PartNumber, is not set");
  3423. return UploadPartCopyOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [PartNumber]", false));
  3424. }
  3425. if (!request.UploadIdHasBeenSet())
  3426. {
  3427. AWS_LOGSTREAM_ERROR("UploadPartCopy", "Required field: UploadId, is not set");
  3428. return UploadPartCopyOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [UploadId]", false));
  3429. }
  3430. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(request.GetBucket());
  3431. if (!computeEndpointOutcome.IsSuccess())
  3432. {
  3433. return UploadPartCopyOutcome(computeEndpointOutcome.GetError());
  3434. }
  3435. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  3436. Aws::StringStream ss;
  3437. ss << "/";
  3438. ss << request.GetKey();
  3439. uri.SetPath(uri.GetPath() + ss.str());
  3440. return UploadPartCopyOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_PUT, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  3441. }
  3442. UploadPartCopyOutcomeCallable S3Client::UploadPartCopyCallable(const UploadPartCopyRequest& request) const
  3443. {
  3444. auto task = Aws::MakeShared< std::packaged_task< UploadPartCopyOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->UploadPartCopy(request); } );
  3445. auto packagedFunction = [task]() { (*task)(); };
  3446. m_executor->Submit(packagedFunction);
  3447. return task->get_future();
  3448. }
  3449. void S3Client::UploadPartCopyAsync(const UploadPartCopyRequest& request, const UploadPartCopyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3450. {
  3451. m_executor->Submit( [this, request, handler, context](){ this->UploadPartCopyAsyncHelper( request, handler, context ); } );
  3452. }
  3453. void S3Client::UploadPartCopyAsyncHelper(const UploadPartCopyRequest& request, const UploadPartCopyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3454. {
  3455. handler(this, request, UploadPartCopy(request), context);
  3456. }
  3457. WriteGetObjectResponseOutcome S3Client::WriteGetObjectResponse(const WriteGetObjectResponseRequest& request) const
  3458. {
  3459. if (!request.RequestRouteHasBeenSet())
  3460. {
  3461. AWS_LOGSTREAM_ERROR("WriteGetObjectResponse", "Required field: RequestRoute, is not set");
  3462. return WriteGetObjectResponseOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [RequestRoute]", false));
  3463. }
  3464. if (!request.RequestTokenHasBeenSet())
  3465. {
  3466. AWS_LOGSTREAM_ERROR("WriteGetObjectResponse", "Required field: RequestToken, is not set");
  3467. return WriteGetObjectResponseOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [RequestToken]", false));
  3468. }
  3469. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointStringWithServiceName("s3-object-lambda");
  3470. if (!computeEndpointOutcome.IsSuccess())
  3471. {
  3472. return WriteGetObjectResponseOutcome(computeEndpointOutcome.GetError());
  3473. }
  3474. Aws::Http::URI uri = computeEndpointOutcome.GetResult().endpoint;
  3475. if (m_enableHostPrefixInjection)
  3476. {
  3477. if (request.GetRequestRoute().empty())
  3478. {
  3479. AWS_LOGSTREAM_ERROR("WriteGetObjectResponse", "HostPrefix required field: RequestRoute, is empty");
  3480. return WriteGetObjectResponseOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::INVALID_PARAMETER_VALUE, "INVALID_PARAMETER", "Host prefix field is empty", false));
  3481. }
  3482. uri.SetAuthority("" + request.GetRequestRoute() + "." + uri.GetAuthority());
  3483. if (!Aws::Utils::IsValidHost(uri.GetAuthority()))
  3484. {
  3485. AWS_LOGSTREAM_ERROR("WriteGetObjectResponse", "Invalid DNS host: " << uri.GetAuthority());
  3486. return WriteGetObjectResponseOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::INVALID_PARAMETER_VALUE, "INVALID_PARAMETER", "Host is invalid", false));
  3487. }
  3488. }
  3489. Aws::StringStream ss;
  3490. ss << "/WriteGetObjectResponse";
  3491. uri.SetPath(uri.GetPath() + ss.str());
  3492. return WriteGetObjectResponseOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER, computeEndpointOutcome.GetResult().signerRegion.c_str() /*signerRegionOverride*/, computeEndpointOutcome.GetResult().signerServiceName.c_str() /*signerServiceNameOverride*/));
  3493. }
  3494. WriteGetObjectResponseOutcomeCallable S3Client::WriteGetObjectResponseCallable(const WriteGetObjectResponseRequest& request) const
  3495. {
  3496. auto task = Aws::MakeShared< std::packaged_task< WriteGetObjectResponseOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->WriteGetObjectResponse(request); } );
  3497. auto packagedFunction = [task]() { (*task)(); };
  3498. m_executor->Submit(packagedFunction);
  3499. return task->get_future();
  3500. }
  3501. void S3Client::WriteGetObjectResponseAsync(const WriteGetObjectResponseRequest& request, const WriteGetObjectResponseResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3502. {
  3503. m_executor->Submit( [this, request, handler, context](){ this->WriteGetObjectResponseAsyncHelper( request, handler, context ); } );
  3504. }
  3505. void S3Client::WriteGetObjectResponseAsyncHelper(const WriteGetObjectResponseRequest& request, const WriteGetObjectResponseResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
  3506. {
  3507. handler(this, request, WriteGetObjectResponse(request), context);
  3508. }
  3509. #include<aws/core/platform/Environment.h>
  3510. static const char US_EAST_1_REGIONAL_ENDPOINT_ENV_VAR[] = "AWS_S3_US_EAST_1_REGIONAL_ENDPOINT";
  3511. static const char US_EAST_1_REGIONAL_ENDPOINT_CONFIG_VAR[] = "s3_us_east_1_regional_endpoint";
  3512. static const char S3_USE_ARN_REGION_ENVIRONMENT_VARIABLE[] = "AWS_S3_USE_ARN_REGION";
  3513. static const char S3_USE_ARN_REGION_CONFIG_FILE_OPTION[] = "s3_use_arn_region";
  3514. void S3Client::LoadS3SpecificConfig(const Aws::String& profile)
  3515. {
  3516. if (m_USEast1RegionalEndpointOption == Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION::NOT_SET)
  3517. {
  3518. Aws::String option = Aws::Environment::GetEnv(US_EAST_1_REGIONAL_ENDPOINT_ENV_VAR);
  3519. if (option.empty())
  3520. {
  3521. option = Aws::Config::GetCachedConfigValue(profile, US_EAST_1_REGIONAL_ENDPOINT_CONFIG_VAR);
  3522. }
  3523. if (Aws::Utils::StringUtils::ToLower(option.c_str()) == "legacy")
  3524. {
  3525. m_USEast1RegionalEndpointOption = Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION::LEGACY;
  3526. }
  3527. else // defaults is regional
  3528. {
  3529. m_USEast1RegionalEndpointOption = Aws::S3::US_EAST_1_REGIONAL_ENDPOINT_OPTION::REGIONAL;
  3530. }
  3531. }
  3532. Aws::String s3UseArnRegion = Aws::Environment::GetEnv(S3_USE_ARN_REGION_ENVIRONMENT_VARIABLE);
  3533. if (s3UseArnRegion.empty())
  3534. {
  3535. s3UseArnRegion = Aws::Config::GetCachedConfigValue(profile, S3_USE_ARN_REGION_CONFIG_FILE_OPTION);
  3536. }
  3537. if (s3UseArnRegion == "true")
  3538. {
  3539. m_useArnRegion = true;
  3540. }
  3541. else
  3542. {
  3543. if (!s3UseArnRegion.empty() && s3UseArnRegion != "false")
  3544. {
  3545. AWS_LOGSTREAM_WARN("S3Client", "AWS_S3_USE_ARN_REGION in environment variables or s3_use_arn_region in config file"
  3546. << "should either be true of false if specified, otherwise turn off this flag by default.");
  3547. }
  3548. m_useArnRegion = false;
  3549. }
  3550. }
  3551. #include<aws/core/utils/HashingUtils.h>
  3552. Aws::String S3Client::GeneratePresignedUrl(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, long long expirationInSeconds)
  3553. {
  3554. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(bucket);
  3555. if (!computeEndpointOutcome.IsSuccess())
  3556. {
  3557. AWS_LOGSTREAM_ERROR(ALLOCATION_TAG, "Presigned URL generating failed. Encountered error: " << computeEndpointOutcome.GetError());
  3558. return {};
  3559. }
  3560. Aws::StringStream ss;
  3561. ss << computeEndpointOutcome.GetResult().endpoint << "/" << key;
  3562. URI uri(ss.str());
  3563. return AWSClient::GeneratePresignedUrl(uri, method, computeEndpointOutcome.GetResult().signerRegion.c_str(), computeEndpointOutcome.GetResult().signerServiceName.c_str(), expirationInSeconds);
  3564. }
  3565. Aws::String S3Client::GeneratePresignedUrl(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, const Http::HeaderValueCollection& customizedHeaders, long long expirationInSeconds)
  3566. {
  3567. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(bucket);
  3568. if (!computeEndpointOutcome.IsSuccess())
  3569. {
  3570. AWS_LOGSTREAM_ERROR(ALLOCATION_TAG, "Presigned URL generating failed. Encountered error: " << computeEndpointOutcome.GetError());
  3571. return {};
  3572. }
  3573. Aws::StringStream ss;
  3574. ss << computeEndpointOutcome.GetResult().endpoint << "/" << key;
  3575. URI uri(ss.str());
  3576. return AWSClient::GeneratePresignedUrl(uri, method, computeEndpointOutcome.GetResult().signerRegion.c_str(), computeEndpointOutcome.GetResult().signerServiceName.c_str(), customizedHeaders, expirationInSeconds);
  3577. }
  3578. Aws::String S3Client::GeneratePresignedUrlWithSSES3(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, long long expirationInSeconds)
  3579. {
  3580. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(bucket);
  3581. if (!computeEndpointOutcome.IsSuccess())
  3582. {
  3583. AWS_LOGSTREAM_ERROR(ALLOCATION_TAG, "Presigned URL generating failed. Encountered error: " << computeEndpointOutcome.GetError());
  3584. return {};
  3585. }
  3586. Aws::StringStream ss;
  3587. ss << computeEndpointOutcome.GetResult().endpoint << "/" << key;
  3588. URI uri(ss.str());
  3589. Aws::Http::HeaderValueCollection headers;
  3590. headers.emplace(Aws::S3::SSEHeaders::SERVER_SIDE_ENCRYPTION, Aws::S3::Model::ServerSideEncryptionMapper::GetNameForServerSideEncryption(Aws::S3::Model::ServerSideEncryption::AES256));
  3591. return AWSClient::GeneratePresignedUrl(uri, method, computeEndpointOutcome.GetResult().signerRegion.c_str(), computeEndpointOutcome.GetResult().signerServiceName.c_str(), headers, expirationInSeconds);
  3592. }
  3593. Aws::String S3Client::GeneratePresignedUrlWithSSES3(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, Http::HeaderValueCollection customizedHeaders, long long expirationInSeconds)
  3594. {
  3595. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(bucket);
  3596. if (!computeEndpointOutcome.IsSuccess())
  3597. {
  3598. AWS_LOGSTREAM_ERROR(ALLOCATION_TAG, "Presigned URL generating failed. Encountered error: " << computeEndpointOutcome.GetError());
  3599. return {};
  3600. }
  3601. Aws::StringStream ss;
  3602. ss << computeEndpointOutcome.GetResult().endpoint << "/" << key;
  3603. URI uri(ss.str());
  3604. customizedHeaders.emplace(Aws::S3::SSEHeaders::SERVER_SIDE_ENCRYPTION, Aws::S3::Model::ServerSideEncryptionMapper::GetNameForServerSideEncryption(Aws::S3::Model::ServerSideEncryption::AES256));
  3605. return AWSClient::GeneratePresignedUrl(uri, method, computeEndpointOutcome.GetResult().signerRegion.c_str(), computeEndpointOutcome.GetResult().signerServiceName.c_str(), customizedHeaders, expirationInSeconds);
  3606. }
  3607. Aws::String S3Client::GeneratePresignedUrlWithSSEKMS(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, const Aws::String& kmsMasterKeyId, long long expirationInSeconds)
  3608. {
  3609. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(bucket);
  3610. if (!computeEndpointOutcome.IsSuccess())
  3611. {
  3612. AWS_LOGSTREAM_ERROR(ALLOCATION_TAG, "Presigned URL generating failed. Encountered error: " << computeEndpointOutcome.GetError());
  3613. return {};
  3614. }
  3615. Aws::StringStream ss;
  3616. ss << computeEndpointOutcome.GetResult().endpoint << "/" << key;
  3617. URI uri(ss.str());
  3618. Aws::Http::HeaderValueCollection headers;
  3619. headers.emplace(Aws::S3::SSEHeaders::SERVER_SIDE_ENCRYPTION, Aws::S3::Model::ServerSideEncryptionMapper::GetNameForServerSideEncryption(Aws::S3::Model::ServerSideEncryption::aws_kms));
  3620. headers.emplace(Aws::S3::SSEHeaders::SERVER_SIDE_ENCRYPTION_AWS_KMS_KEY_ID, kmsMasterKeyId);
  3621. return AWSClient::GeneratePresignedUrl(uri, method, computeEndpointOutcome.GetResult().signerRegion.c_str(), computeEndpointOutcome.GetResult().signerServiceName.c_str(), headers, expirationInSeconds);
  3622. }
  3623. Aws::String S3Client::GeneratePresignedUrlWithSSEKMS(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, Http::HeaderValueCollection customizedHeaders, const Aws::String& kmsMasterKeyId, long long expirationInSeconds)
  3624. {
  3625. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(bucket);
  3626. if (!computeEndpointOutcome.IsSuccess())
  3627. {
  3628. AWS_LOGSTREAM_ERROR(ALLOCATION_TAG, "Presigned URL generating failed. Encountered error: " << computeEndpointOutcome.GetError());
  3629. return {};
  3630. }
  3631. Aws::StringStream ss;
  3632. ss << computeEndpointOutcome.GetResult().endpoint << "/" << key;
  3633. URI uri(ss.str());
  3634. customizedHeaders.emplace(Aws::S3::SSEHeaders::SERVER_SIDE_ENCRYPTION, Aws::S3::Model::ServerSideEncryptionMapper::GetNameForServerSideEncryption(Aws::S3::Model::ServerSideEncryption::aws_kms));
  3635. customizedHeaders.emplace(Aws::S3::SSEHeaders::SERVER_SIDE_ENCRYPTION_AWS_KMS_KEY_ID, kmsMasterKeyId);
  3636. return AWSClient::GeneratePresignedUrl(uri, method, computeEndpointOutcome.GetResult().signerRegion.c_str(), computeEndpointOutcome.GetResult().signerServiceName.c_str(), customizedHeaders, expirationInSeconds);
  3637. }
  3638. Aws::String S3Client::GeneratePresignedUrlWithSSEC(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, const Aws::String& base64EncodedAES256Key, long long expirationInSeconds)
  3639. {
  3640. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(bucket);
  3641. if (!computeEndpointOutcome.IsSuccess())
  3642. {
  3643. AWS_LOGSTREAM_ERROR(ALLOCATION_TAG, "Presigned URL generating failed. Encountered error: " << computeEndpointOutcome.GetError());
  3644. return {};
  3645. }
  3646. Aws::StringStream ss;
  3647. ss << computeEndpointOutcome.GetResult().endpoint << "/" << key;
  3648. URI uri(ss.str());
  3649. Aws::Http::HeaderValueCollection headers;
  3650. headers.emplace(Aws::S3::SSEHeaders::SERVER_SIDE_ENCRYPTION_CUSTOMER_ALGORITHM, Aws::S3::Model::ServerSideEncryptionMapper::GetNameForServerSideEncryption(Aws::S3::Model::ServerSideEncryption::AES256));
  3651. headers.emplace(Aws::S3::SSEHeaders::SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY, base64EncodedAES256Key);
  3652. Aws::Utils::ByteBuffer buffer = Aws::Utils::HashingUtils::Base64Decode(base64EncodedAES256Key);
  3653. Aws::String strBuffer(reinterpret_cast<char*>(buffer.GetUnderlyingData()), buffer.GetLength());
  3654. headers.emplace(Aws::S3::SSEHeaders::SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY_MD5, Aws::Utils::HashingUtils::Base64Encode(Aws::Utils::HashingUtils::CalculateMD5(strBuffer)));
  3655. return AWSClient::GeneratePresignedUrl(uri, method, computeEndpointOutcome.GetResult().signerRegion.c_str(), computeEndpointOutcome.GetResult().signerServiceName.c_str(), headers, expirationInSeconds);
  3656. }
  3657. Aws::String S3Client::GeneratePresignedUrlWithSSEC(const Aws::String& bucket, const Aws::String& key, Aws::Http::HttpMethod method, Http::HeaderValueCollection customizedHeaders, const Aws::String& base64EncodedAES256Key, long long expirationInSeconds)
  3658. {
  3659. ComputeEndpointOutcome computeEndpointOutcome = ComputeEndpointString(bucket);
  3660. if (!computeEndpointOutcome.IsSuccess())
  3661. {
  3662. AWS_LOGSTREAM_ERROR(ALLOCATION_TAG, "Presigned URL generating failed. Encountered error: " << computeEndpointOutcome.GetError());
  3663. return {};
  3664. }
  3665. Aws::StringStream ss;
  3666. ss << computeEndpointOutcome.GetResult().endpoint << "/" << key;
  3667. URI uri(ss.str());
  3668. customizedHeaders.emplace(Aws::S3::SSEHeaders::SERVER_SIDE_ENCRYPTION_CUSTOMER_ALGORITHM, Aws::S3::Model::ServerSideEncryptionMapper::GetNameForServerSideEncryption(Aws::S3::Model::ServerSideEncryption::AES256));
  3669. customizedHeaders.emplace(Aws::S3::SSEHeaders::SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY, base64EncodedAES256Key);
  3670. Aws::Utils::ByteBuffer buffer = Aws::Utils::HashingUtils::Base64Decode(base64EncodedAES256Key);
  3671. Aws::String strBuffer(reinterpret_cast<char*>(buffer.GetUnderlyingData()), buffer.GetLength());
  3672. customizedHeaders.emplace(Aws::S3::SSEHeaders::SERVER_SIDE_ENCRYPTION_CUSTOMER_KEY_MD5, Aws::Utils::HashingUtils::Base64Encode(Aws::Utils::HashingUtils::CalculateMD5(strBuffer)));
  3673. return AWSClient::GeneratePresignedUrl(uri, method, computeEndpointOutcome.GetResult().signerRegion.c_str(), computeEndpointOutcome.GetResult().signerServiceName.c_str(), customizedHeaders, expirationInSeconds);
  3674. }
  3675. ComputeEndpointOutcome S3Client::ComputeEndpointString(const Aws::String& bucketOrArn) const
  3676. {
  3677. if (m_useDualStack && m_useCustomEndpoint)
  3678. {
  3679. return ComputeEndpointOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::VALIDATION, "VALIDATION",
  3680. "Dual-stack endpoint is incompatible with a custom endpoint override.", false));
  3681. }
  3682. Aws::StringStream ss;
  3683. ss << m_scheme << "://";
  3684. Aws::String bucket = bucketOrArn;
  3685. Aws::String signerRegion = Aws::Region::ComputeSignerRegion(m_region);
  3686. S3ARN arn(bucketOrArn);
  3687. if (arn)
  3688. {
  3689. if (!m_useVirtualAddressing)
  3690. {
  3691. return ComputeEndpointOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::VALIDATION, "VALIDATION",
  3692. "Path style addressing is not compatible with Access Point ARN or Outposts ARN in Bucket field, please consider using virtual addressing for this client instead.", false));
  3693. }
  3694. S3ARNOutcome s3ArnOutcome = m_useArnRegion ? arn.Validate() : arn.Validate(m_region.c_str());
  3695. if (!s3ArnOutcome.IsSuccess())
  3696. {
  3697. return ComputeEndpointOutcome(s3ArnOutcome.GetError());
  3698. }
  3699. signerRegion = m_useArnRegion ? arn.GetRegion() : signerRegion;
  3700. if (arn.GetService() == ARNService::S3_OBJECT_LAMBDA)
  3701. {
  3702. if (m_useDualStack)
  3703. {
  3704. return ComputeEndpointOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::VALIDATION, "VALIDATION",
  3705. "S3 Object Lambda Access Point ARNs do not support dualstack right now.", false));
  3706. }
  3707. ss << S3Endpoint::ForObjectLambdaAccessPointArn(arn, m_useArnRegion ? "" : m_region, m_useDualStack, m_useCustomEndpoint ? m_baseUri : "");
  3708. return ComputeEndpointOutcome(ComputeEndpointResult(ss.str(), signerRegion, ARNService::S3_OBJECT_LAMBDA));
  3709. }
  3710. else if (arn.GetResourceType() == ARNResourceType::ACCESSPOINT)
  3711. {
  3712. ss << S3Endpoint::ForAccessPointArn(arn, m_useArnRegion ? "" : m_region, m_useDualStack, m_useCustomEndpoint ? m_baseUri : "");
  3713. return ComputeEndpointOutcome(ComputeEndpointResult(ss.str(), signerRegion, SERVICE_NAME));
  3714. }
  3715. else if (arn.GetResourceType() == ARNResourceType::OUTPOST)
  3716. {
  3717. if (m_useDualStack)
  3718. {
  3719. return ComputeEndpointOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::VALIDATION, "VALIDATION",
  3720. "Outposts Access Points do not support dualstack right now.", false));
  3721. }
  3722. ss << S3Endpoint::ForOutpostsArn(arn, m_useArnRegion ? "" : m_region, m_useDualStack, m_useCustomEndpoint ? m_baseUri : "");
  3723. return ComputeEndpointOutcome(ComputeEndpointResult(ss.str(), signerRegion, "s3-outposts"));
  3724. }
  3725. }
  3726. // when using virtual hosting of buckets, the bucket name has to follow some rules.
  3727. // Mainly, it has to be a valid DNS label, and it must be lowercase.
  3728. // For more information see http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingSpecifyBucket
  3729. if(m_useVirtualAddressing && Aws::Utils::IsValidDnsLabel(bucket) &&
  3730. bucket == Aws::Utils::StringUtils::ToLower(bucket.c_str()))
  3731. {
  3732. ss << bucket << "." << m_baseUri;
  3733. }
  3734. else
  3735. {
  3736. ss << m_baseUri << "/" << bucket;
  3737. }
  3738. return ComputeEndpointOutcome(ComputeEndpointResult(ss.str(), signerRegion, SERVICE_NAME));
  3739. }
  3740. ComputeEndpointOutcome S3Client::ComputeEndpointString() const
  3741. {
  3742. if (m_useDualStack && m_useCustomEndpoint)
  3743. {
  3744. return ComputeEndpointOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::VALIDATION, "VALIDATION",
  3745. "Dual-stack endpoint is incompatible with a custom endpoint override.", false));
  3746. }
  3747. Aws::StringStream ss;
  3748. ss << m_scheme << "://" << m_baseUri;
  3749. return ComputeEndpointOutcome(ComputeEndpointResult(ss.str(), Aws::Region::ComputeSignerRegion(m_region), SERVICE_NAME));
  3750. }
  3751. ComputeEndpointOutcome S3Client::ComputeEndpointStringWithServiceName(const Aws::String& serviceNameOverride) const
  3752. {
  3753. if (serviceNameOverride.empty())
  3754. {
  3755. return ComputeEndpointString();
  3756. }
  3757. if (m_useDualStack && m_useCustomEndpoint)
  3758. {
  3759. return ComputeEndpointOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::VALIDATION, "VALIDATION",
  3760. "Dual-stack endpoint is incompatible with a custom endpoint override.", false));
  3761. }
  3762. Aws::StringStream ss;
  3763. ss << m_scheme << "://";
  3764. if (m_useCustomEndpoint)
  3765. {
  3766. ss << m_baseUri;
  3767. return ComputeEndpointOutcome(ComputeEndpointResult(ss.str(), Aws::Region::ComputeSignerRegion(m_region), serviceNameOverride));
  3768. }
  3769. else
  3770. {
  3771. if (m_useDualStack)
  3772. {
  3773. return ComputeEndpointOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::VALIDATION, "VALIDATION",
  3774. "S3 Object Lambda endpoints do not support dualstack right now.", false));
  3775. }
  3776. else
  3777. {
  3778. ss << S3Endpoint::ForRegion(m_region, m_useDualStack, true, serviceNameOverride);
  3779. return ComputeEndpointOutcome(ComputeEndpointResult(ss.str(), Aws::Region::ComputeSignerRegion(m_region), serviceNameOverride));
  3780. }
  3781. }
  3782. }
  3783. bool S3Client::MultipartUploadSupported() const
  3784. {
  3785. return true;
  3786. }