1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #include <aws/core/utils/Outcome.h>
7 #include <aws/core/auth/AWSAuthSigner.h>
8 #include <aws/core/client/CoreErrors.h>
9 #include <aws/core/client/RetryStrategy.h>
10 #include <aws/core/http/HttpClient.h>
11 #include <aws/core/http/HttpResponse.h>
12 #include <aws/core/http/HttpClientFactory.h>
13 #include <aws/core/auth/AWSCredentialsProviderChain.h>
14 #include <aws/core/utils/json/JsonSerializer.h>
15 #include <aws/core/utils/memory/stl/AWSStringStream.h>
16 #include <aws/core/utils/threading/Executor.h>
17 #include <aws/core/utils/DNS.h>
18 #include <aws/core/utils/logging/LogMacros.h>
19 
20 #include <aws/healthlake/HealthLakeClient.h>
21 #include <aws/healthlake/HealthLakeEndpoint.h>
22 #include <aws/healthlake/HealthLakeErrorMarshaller.h>
23 #include <aws/healthlake/model/CreateFHIRDatastoreRequest.h>
24 #include <aws/healthlake/model/DeleteFHIRDatastoreRequest.h>
25 #include <aws/healthlake/model/DescribeFHIRDatastoreRequest.h>
26 #include <aws/healthlake/model/DescribeFHIRExportJobRequest.h>
27 #include <aws/healthlake/model/DescribeFHIRImportJobRequest.h>
28 #include <aws/healthlake/model/ListFHIRDatastoresRequest.h>
29 #include <aws/healthlake/model/ListFHIRExportJobsRequest.h>
30 #include <aws/healthlake/model/ListFHIRImportJobsRequest.h>
31 #include <aws/healthlake/model/ListTagsForResourceRequest.h>
32 #include <aws/healthlake/model/StartFHIRExportJobRequest.h>
33 #include <aws/healthlake/model/StartFHIRImportJobRequest.h>
34 #include <aws/healthlake/model/TagResourceRequest.h>
35 #include <aws/healthlake/model/UntagResourceRequest.h>
36 
37 using namespace Aws;
38 using namespace Aws::Auth;
39 using namespace Aws::Client;
40 using namespace Aws::HealthLake;
41 using namespace Aws::HealthLake::Model;
42 using namespace Aws::Http;
43 using namespace Aws::Utils::Json;
44 
45 static const char* SERVICE_NAME = "healthlake";
46 static const char* ALLOCATION_TAG = "HealthLakeClient";
47 
48 
HealthLakeClient(const Client::ClientConfiguration & clientConfiguration)49 HealthLakeClient::HealthLakeClient(const Client::ClientConfiguration& clientConfiguration) :
50   BASECLASS(clientConfiguration,
51     Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, Aws::MakeShared<DefaultAWSCredentialsProviderChain>(ALLOCATION_TAG),
52         SERVICE_NAME, Aws::Region::ComputeSignerRegion(clientConfiguration.region)),
53     Aws::MakeShared<HealthLakeErrorMarshaller>(ALLOCATION_TAG)),
54     m_executor(clientConfiguration.executor)
55 {
56   init(clientConfiguration);
57 }
58 
HealthLakeClient(const AWSCredentials & credentials,const Client::ClientConfiguration & clientConfiguration)59 HealthLakeClient::HealthLakeClient(const AWSCredentials& credentials, const Client::ClientConfiguration& clientConfiguration) :
60   BASECLASS(clientConfiguration,
61     Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, Aws::MakeShared<SimpleAWSCredentialsProvider>(ALLOCATION_TAG, credentials),
62          SERVICE_NAME, Aws::Region::ComputeSignerRegion(clientConfiguration.region)),
63     Aws::MakeShared<HealthLakeErrorMarshaller>(ALLOCATION_TAG)),
64     m_executor(clientConfiguration.executor)
65 {
66   init(clientConfiguration);
67 }
68 
HealthLakeClient(const std::shared_ptr<AWSCredentialsProvider> & credentialsProvider,const Client::ClientConfiguration & clientConfiguration)69 HealthLakeClient::HealthLakeClient(const std::shared_ptr<AWSCredentialsProvider>& credentialsProvider,
70   const Client::ClientConfiguration& clientConfiguration) :
71   BASECLASS(clientConfiguration,
72     Aws::MakeShared<AWSAuthV4Signer>(ALLOCATION_TAG, credentialsProvider,
73          SERVICE_NAME, Aws::Region::ComputeSignerRegion(clientConfiguration.region)),
74     Aws::MakeShared<HealthLakeErrorMarshaller>(ALLOCATION_TAG)),
75     m_executor(clientConfiguration.executor)
76 {
77   init(clientConfiguration);
78 }
79 
~HealthLakeClient()80 HealthLakeClient::~HealthLakeClient()
81 {
82 }
83 
init(const Client::ClientConfiguration & config)84 void HealthLakeClient::init(const Client::ClientConfiguration& config)
85 {
86   SetServiceClientName("HealthLake");
87   m_configScheme = SchemeMapper::ToString(config.scheme);
88   if (config.endpointOverride.empty())
89   {
90       m_uri = m_configScheme + "://" + HealthLakeEndpoint::ForRegion(config.region, config.useDualStack);
91   }
92   else
93   {
94       OverrideEndpoint(config.endpointOverride);
95   }
96 }
97 
OverrideEndpoint(const Aws::String & endpoint)98 void HealthLakeClient::OverrideEndpoint(const Aws::String& endpoint)
99 {
100   if (endpoint.compare(0, 7, "http://") == 0 || endpoint.compare(0, 8, "https://") == 0)
101   {
102       m_uri = endpoint;
103   }
104   else
105   {
106       m_uri = m_configScheme + "://" + endpoint;
107   }
108 }
109 
CreateFHIRDatastore(const CreateFHIRDatastoreRequest & request) const110 CreateFHIRDatastoreOutcome HealthLakeClient::CreateFHIRDatastore(const CreateFHIRDatastoreRequest& request) const
111 {
112   Aws::Http::URI uri = m_uri;
113   return CreateFHIRDatastoreOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
114 }
115 
CreateFHIRDatastoreCallable(const CreateFHIRDatastoreRequest & request) const116 CreateFHIRDatastoreOutcomeCallable HealthLakeClient::CreateFHIRDatastoreCallable(const CreateFHIRDatastoreRequest& request) const
117 {
118   auto task = Aws::MakeShared< std::packaged_task< CreateFHIRDatastoreOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->CreateFHIRDatastore(request); } );
119   auto packagedFunction = [task]() { (*task)(); };
120   m_executor->Submit(packagedFunction);
121   return task->get_future();
122 }
123 
CreateFHIRDatastoreAsync(const CreateFHIRDatastoreRequest & request,const CreateFHIRDatastoreResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const124 void HealthLakeClient::CreateFHIRDatastoreAsync(const CreateFHIRDatastoreRequest& request, const CreateFHIRDatastoreResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
125 {
126   m_executor->Submit( [this, request, handler, context](){ this->CreateFHIRDatastoreAsyncHelper( request, handler, context ); } );
127 }
128 
CreateFHIRDatastoreAsyncHelper(const CreateFHIRDatastoreRequest & request,const CreateFHIRDatastoreResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const129 void HealthLakeClient::CreateFHIRDatastoreAsyncHelper(const CreateFHIRDatastoreRequest& request, const CreateFHIRDatastoreResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
130 {
131   handler(this, request, CreateFHIRDatastore(request), context);
132 }
133 
DeleteFHIRDatastore(const DeleteFHIRDatastoreRequest & request) const134 DeleteFHIRDatastoreOutcome HealthLakeClient::DeleteFHIRDatastore(const DeleteFHIRDatastoreRequest& request) const
135 {
136   Aws::Http::URI uri = m_uri;
137   return DeleteFHIRDatastoreOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
138 }
139 
DeleteFHIRDatastoreCallable(const DeleteFHIRDatastoreRequest & request) const140 DeleteFHIRDatastoreOutcomeCallable HealthLakeClient::DeleteFHIRDatastoreCallable(const DeleteFHIRDatastoreRequest& request) const
141 {
142   auto task = Aws::MakeShared< std::packaged_task< DeleteFHIRDatastoreOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DeleteFHIRDatastore(request); } );
143   auto packagedFunction = [task]() { (*task)(); };
144   m_executor->Submit(packagedFunction);
145   return task->get_future();
146 }
147 
DeleteFHIRDatastoreAsync(const DeleteFHIRDatastoreRequest & request,const DeleteFHIRDatastoreResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const148 void HealthLakeClient::DeleteFHIRDatastoreAsync(const DeleteFHIRDatastoreRequest& request, const DeleteFHIRDatastoreResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
149 {
150   m_executor->Submit( [this, request, handler, context](){ this->DeleteFHIRDatastoreAsyncHelper( request, handler, context ); } );
151 }
152 
DeleteFHIRDatastoreAsyncHelper(const DeleteFHIRDatastoreRequest & request,const DeleteFHIRDatastoreResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const153 void HealthLakeClient::DeleteFHIRDatastoreAsyncHelper(const DeleteFHIRDatastoreRequest& request, const DeleteFHIRDatastoreResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
154 {
155   handler(this, request, DeleteFHIRDatastore(request), context);
156 }
157 
DescribeFHIRDatastore(const DescribeFHIRDatastoreRequest & request) const158 DescribeFHIRDatastoreOutcome HealthLakeClient::DescribeFHIRDatastore(const DescribeFHIRDatastoreRequest& request) const
159 {
160   Aws::Http::URI uri = m_uri;
161   return DescribeFHIRDatastoreOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
162 }
163 
DescribeFHIRDatastoreCallable(const DescribeFHIRDatastoreRequest & request) const164 DescribeFHIRDatastoreOutcomeCallable HealthLakeClient::DescribeFHIRDatastoreCallable(const DescribeFHIRDatastoreRequest& request) const
165 {
166   auto task = Aws::MakeShared< std::packaged_task< DescribeFHIRDatastoreOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DescribeFHIRDatastore(request); } );
167   auto packagedFunction = [task]() { (*task)(); };
168   m_executor->Submit(packagedFunction);
169   return task->get_future();
170 }
171 
DescribeFHIRDatastoreAsync(const DescribeFHIRDatastoreRequest & request,const DescribeFHIRDatastoreResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const172 void HealthLakeClient::DescribeFHIRDatastoreAsync(const DescribeFHIRDatastoreRequest& request, const DescribeFHIRDatastoreResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
173 {
174   m_executor->Submit( [this, request, handler, context](){ this->DescribeFHIRDatastoreAsyncHelper( request, handler, context ); } );
175 }
176 
DescribeFHIRDatastoreAsyncHelper(const DescribeFHIRDatastoreRequest & request,const DescribeFHIRDatastoreResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const177 void HealthLakeClient::DescribeFHIRDatastoreAsyncHelper(const DescribeFHIRDatastoreRequest& request, const DescribeFHIRDatastoreResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
178 {
179   handler(this, request, DescribeFHIRDatastore(request), context);
180 }
181 
DescribeFHIRExportJob(const DescribeFHIRExportJobRequest & request) const182 DescribeFHIRExportJobOutcome HealthLakeClient::DescribeFHIRExportJob(const DescribeFHIRExportJobRequest& request) const
183 {
184   Aws::Http::URI uri = m_uri;
185   return DescribeFHIRExportJobOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
186 }
187 
DescribeFHIRExportJobCallable(const DescribeFHIRExportJobRequest & request) const188 DescribeFHIRExportJobOutcomeCallable HealthLakeClient::DescribeFHIRExportJobCallable(const DescribeFHIRExportJobRequest& request) const
189 {
190   auto task = Aws::MakeShared< std::packaged_task< DescribeFHIRExportJobOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DescribeFHIRExportJob(request); } );
191   auto packagedFunction = [task]() { (*task)(); };
192   m_executor->Submit(packagedFunction);
193   return task->get_future();
194 }
195 
DescribeFHIRExportJobAsync(const DescribeFHIRExportJobRequest & request,const DescribeFHIRExportJobResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const196 void HealthLakeClient::DescribeFHIRExportJobAsync(const DescribeFHIRExportJobRequest& request, const DescribeFHIRExportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
197 {
198   m_executor->Submit( [this, request, handler, context](){ this->DescribeFHIRExportJobAsyncHelper( request, handler, context ); } );
199 }
200 
DescribeFHIRExportJobAsyncHelper(const DescribeFHIRExportJobRequest & request,const DescribeFHIRExportJobResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const201 void HealthLakeClient::DescribeFHIRExportJobAsyncHelper(const DescribeFHIRExportJobRequest& request, const DescribeFHIRExportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
202 {
203   handler(this, request, DescribeFHIRExportJob(request), context);
204 }
205 
DescribeFHIRImportJob(const DescribeFHIRImportJobRequest & request) const206 DescribeFHIRImportJobOutcome HealthLakeClient::DescribeFHIRImportJob(const DescribeFHIRImportJobRequest& request) const
207 {
208   Aws::Http::URI uri = m_uri;
209   return DescribeFHIRImportJobOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
210 }
211 
DescribeFHIRImportJobCallable(const DescribeFHIRImportJobRequest & request) const212 DescribeFHIRImportJobOutcomeCallable HealthLakeClient::DescribeFHIRImportJobCallable(const DescribeFHIRImportJobRequest& request) const
213 {
214   auto task = Aws::MakeShared< std::packaged_task< DescribeFHIRImportJobOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->DescribeFHIRImportJob(request); } );
215   auto packagedFunction = [task]() { (*task)(); };
216   m_executor->Submit(packagedFunction);
217   return task->get_future();
218 }
219 
DescribeFHIRImportJobAsync(const DescribeFHIRImportJobRequest & request,const DescribeFHIRImportJobResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const220 void HealthLakeClient::DescribeFHIRImportJobAsync(const DescribeFHIRImportJobRequest& request, const DescribeFHIRImportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
221 {
222   m_executor->Submit( [this, request, handler, context](){ this->DescribeFHIRImportJobAsyncHelper( request, handler, context ); } );
223 }
224 
DescribeFHIRImportJobAsyncHelper(const DescribeFHIRImportJobRequest & request,const DescribeFHIRImportJobResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const225 void HealthLakeClient::DescribeFHIRImportJobAsyncHelper(const DescribeFHIRImportJobRequest& request, const DescribeFHIRImportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
226 {
227   handler(this, request, DescribeFHIRImportJob(request), context);
228 }
229 
ListFHIRDatastores(const ListFHIRDatastoresRequest & request) const230 ListFHIRDatastoresOutcome HealthLakeClient::ListFHIRDatastores(const ListFHIRDatastoresRequest& request) const
231 {
232   Aws::Http::URI uri = m_uri;
233   return ListFHIRDatastoresOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
234 }
235 
ListFHIRDatastoresCallable(const ListFHIRDatastoresRequest & request) const236 ListFHIRDatastoresOutcomeCallable HealthLakeClient::ListFHIRDatastoresCallable(const ListFHIRDatastoresRequest& request) const
237 {
238   auto task = Aws::MakeShared< std::packaged_task< ListFHIRDatastoresOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListFHIRDatastores(request); } );
239   auto packagedFunction = [task]() { (*task)(); };
240   m_executor->Submit(packagedFunction);
241   return task->get_future();
242 }
243 
ListFHIRDatastoresAsync(const ListFHIRDatastoresRequest & request,const ListFHIRDatastoresResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const244 void HealthLakeClient::ListFHIRDatastoresAsync(const ListFHIRDatastoresRequest& request, const ListFHIRDatastoresResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
245 {
246   m_executor->Submit( [this, request, handler, context](){ this->ListFHIRDatastoresAsyncHelper( request, handler, context ); } );
247 }
248 
ListFHIRDatastoresAsyncHelper(const ListFHIRDatastoresRequest & request,const ListFHIRDatastoresResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const249 void HealthLakeClient::ListFHIRDatastoresAsyncHelper(const ListFHIRDatastoresRequest& request, const ListFHIRDatastoresResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
250 {
251   handler(this, request, ListFHIRDatastores(request), context);
252 }
253 
ListFHIRExportJobs(const ListFHIRExportJobsRequest & request) const254 ListFHIRExportJobsOutcome HealthLakeClient::ListFHIRExportJobs(const ListFHIRExportJobsRequest& request) const
255 {
256   Aws::Http::URI uri = m_uri;
257   return ListFHIRExportJobsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
258 }
259 
ListFHIRExportJobsCallable(const ListFHIRExportJobsRequest & request) const260 ListFHIRExportJobsOutcomeCallable HealthLakeClient::ListFHIRExportJobsCallable(const ListFHIRExportJobsRequest& request) const
261 {
262   auto task = Aws::MakeShared< std::packaged_task< ListFHIRExportJobsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListFHIRExportJobs(request); } );
263   auto packagedFunction = [task]() { (*task)(); };
264   m_executor->Submit(packagedFunction);
265   return task->get_future();
266 }
267 
ListFHIRExportJobsAsync(const ListFHIRExportJobsRequest & request,const ListFHIRExportJobsResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const268 void HealthLakeClient::ListFHIRExportJobsAsync(const ListFHIRExportJobsRequest& request, const ListFHIRExportJobsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
269 {
270   m_executor->Submit( [this, request, handler, context](){ this->ListFHIRExportJobsAsyncHelper( request, handler, context ); } );
271 }
272 
ListFHIRExportJobsAsyncHelper(const ListFHIRExportJobsRequest & request,const ListFHIRExportJobsResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const273 void HealthLakeClient::ListFHIRExportJobsAsyncHelper(const ListFHIRExportJobsRequest& request, const ListFHIRExportJobsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
274 {
275   handler(this, request, ListFHIRExportJobs(request), context);
276 }
277 
ListFHIRImportJobs(const ListFHIRImportJobsRequest & request) const278 ListFHIRImportJobsOutcome HealthLakeClient::ListFHIRImportJobs(const ListFHIRImportJobsRequest& request) const
279 {
280   Aws::Http::URI uri = m_uri;
281   return ListFHIRImportJobsOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
282 }
283 
ListFHIRImportJobsCallable(const ListFHIRImportJobsRequest & request) const284 ListFHIRImportJobsOutcomeCallable HealthLakeClient::ListFHIRImportJobsCallable(const ListFHIRImportJobsRequest& request) const
285 {
286   auto task = Aws::MakeShared< std::packaged_task< ListFHIRImportJobsOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListFHIRImportJobs(request); } );
287   auto packagedFunction = [task]() { (*task)(); };
288   m_executor->Submit(packagedFunction);
289   return task->get_future();
290 }
291 
ListFHIRImportJobsAsync(const ListFHIRImportJobsRequest & request,const ListFHIRImportJobsResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const292 void HealthLakeClient::ListFHIRImportJobsAsync(const ListFHIRImportJobsRequest& request, const ListFHIRImportJobsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
293 {
294   m_executor->Submit( [this, request, handler, context](){ this->ListFHIRImportJobsAsyncHelper( request, handler, context ); } );
295 }
296 
ListFHIRImportJobsAsyncHelper(const ListFHIRImportJobsRequest & request,const ListFHIRImportJobsResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const297 void HealthLakeClient::ListFHIRImportJobsAsyncHelper(const ListFHIRImportJobsRequest& request, const ListFHIRImportJobsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
298 {
299   handler(this, request, ListFHIRImportJobs(request), context);
300 }
301 
ListTagsForResource(const ListTagsForResourceRequest & request) const302 ListTagsForResourceOutcome HealthLakeClient::ListTagsForResource(const ListTagsForResourceRequest& request) const
303 {
304   Aws::Http::URI uri = m_uri;
305   return ListTagsForResourceOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
306 }
307 
ListTagsForResourceCallable(const ListTagsForResourceRequest & request) const308 ListTagsForResourceOutcomeCallable HealthLakeClient::ListTagsForResourceCallable(const ListTagsForResourceRequest& request) const
309 {
310   auto task = Aws::MakeShared< std::packaged_task< ListTagsForResourceOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->ListTagsForResource(request); } );
311   auto packagedFunction = [task]() { (*task)(); };
312   m_executor->Submit(packagedFunction);
313   return task->get_future();
314 }
315 
ListTagsForResourceAsync(const ListTagsForResourceRequest & request,const ListTagsForResourceResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const316 void HealthLakeClient::ListTagsForResourceAsync(const ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
317 {
318   m_executor->Submit( [this, request, handler, context](){ this->ListTagsForResourceAsyncHelper( request, handler, context ); } );
319 }
320 
ListTagsForResourceAsyncHelper(const ListTagsForResourceRequest & request,const ListTagsForResourceResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const321 void HealthLakeClient::ListTagsForResourceAsyncHelper(const ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
322 {
323   handler(this, request, ListTagsForResource(request), context);
324 }
325 
StartFHIRExportJob(const StartFHIRExportJobRequest & request) const326 StartFHIRExportJobOutcome HealthLakeClient::StartFHIRExportJob(const StartFHIRExportJobRequest& request) const
327 {
328   Aws::Http::URI uri = m_uri;
329   return StartFHIRExportJobOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
330 }
331 
StartFHIRExportJobCallable(const StartFHIRExportJobRequest & request) const332 StartFHIRExportJobOutcomeCallable HealthLakeClient::StartFHIRExportJobCallable(const StartFHIRExportJobRequest& request) const
333 {
334   auto task = Aws::MakeShared< std::packaged_task< StartFHIRExportJobOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->StartFHIRExportJob(request); } );
335   auto packagedFunction = [task]() { (*task)(); };
336   m_executor->Submit(packagedFunction);
337   return task->get_future();
338 }
339 
StartFHIRExportJobAsync(const StartFHIRExportJobRequest & request,const StartFHIRExportJobResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const340 void HealthLakeClient::StartFHIRExportJobAsync(const StartFHIRExportJobRequest& request, const StartFHIRExportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
341 {
342   m_executor->Submit( [this, request, handler, context](){ this->StartFHIRExportJobAsyncHelper( request, handler, context ); } );
343 }
344 
StartFHIRExportJobAsyncHelper(const StartFHIRExportJobRequest & request,const StartFHIRExportJobResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const345 void HealthLakeClient::StartFHIRExportJobAsyncHelper(const StartFHIRExportJobRequest& request, const StartFHIRExportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
346 {
347   handler(this, request, StartFHIRExportJob(request), context);
348 }
349 
StartFHIRImportJob(const StartFHIRImportJobRequest & request) const350 StartFHIRImportJobOutcome HealthLakeClient::StartFHIRImportJob(const StartFHIRImportJobRequest& request) const
351 {
352   Aws::Http::URI uri = m_uri;
353   return StartFHIRImportJobOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
354 }
355 
StartFHIRImportJobCallable(const StartFHIRImportJobRequest & request) const356 StartFHIRImportJobOutcomeCallable HealthLakeClient::StartFHIRImportJobCallable(const StartFHIRImportJobRequest& request) const
357 {
358   auto task = Aws::MakeShared< std::packaged_task< StartFHIRImportJobOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->StartFHIRImportJob(request); } );
359   auto packagedFunction = [task]() { (*task)(); };
360   m_executor->Submit(packagedFunction);
361   return task->get_future();
362 }
363 
StartFHIRImportJobAsync(const StartFHIRImportJobRequest & request,const StartFHIRImportJobResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const364 void HealthLakeClient::StartFHIRImportJobAsync(const StartFHIRImportJobRequest& request, const StartFHIRImportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
365 {
366   m_executor->Submit( [this, request, handler, context](){ this->StartFHIRImportJobAsyncHelper( request, handler, context ); } );
367 }
368 
StartFHIRImportJobAsyncHelper(const StartFHIRImportJobRequest & request,const StartFHIRImportJobResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const369 void HealthLakeClient::StartFHIRImportJobAsyncHelper(const StartFHIRImportJobRequest& request, const StartFHIRImportJobResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
370 {
371   handler(this, request, StartFHIRImportJob(request), context);
372 }
373 
TagResource(const TagResourceRequest & request) const374 TagResourceOutcome HealthLakeClient::TagResource(const TagResourceRequest& request) const
375 {
376   Aws::Http::URI uri = m_uri;
377   return TagResourceOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
378 }
379 
TagResourceCallable(const TagResourceRequest & request) const380 TagResourceOutcomeCallable HealthLakeClient::TagResourceCallable(const TagResourceRequest& request) const
381 {
382   auto task = Aws::MakeShared< std::packaged_task< TagResourceOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->TagResource(request); } );
383   auto packagedFunction = [task]() { (*task)(); };
384   m_executor->Submit(packagedFunction);
385   return task->get_future();
386 }
387 
TagResourceAsync(const TagResourceRequest & request,const TagResourceResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const388 void HealthLakeClient::TagResourceAsync(const TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
389 {
390   m_executor->Submit( [this, request, handler, context](){ this->TagResourceAsyncHelper( request, handler, context ); } );
391 }
392 
TagResourceAsyncHelper(const TagResourceRequest & request,const TagResourceResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const393 void HealthLakeClient::TagResourceAsyncHelper(const TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
394 {
395   handler(this, request, TagResource(request), context);
396 }
397 
UntagResource(const UntagResourceRequest & request) const398 UntagResourceOutcome HealthLakeClient::UntagResource(const UntagResourceRequest& request) const
399 {
400   Aws::Http::URI uri = m_uri;
401   return UntagResourceOutcome(MakeRequest(uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER));
402 }
403 
UntagResourceCallable(const UntagResourceRequest & request) const404 UntagResourceOutcomeCallable HealthLakeClient::UntagResourceCallable(const UntagResourceRequest& request) const
405 {
406   auto task = Aws::MakeShared< std::packaged_task< UntagResourceOutcome() > >(ALLOCATION_TAG, [this, request](){ return this->UntagResource(request); } );
407   auto packagedFunction = [task]() { (*task)(); };
408   m_executor->Submit(packagedFunction);
409   return task->get_future();
410 }
411 
UntagResourceAsync(const UntagResourceRequest & request,const UntagResourceResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const412 void HealthLakeClient::UntagResourceAsync(const UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
413 {
414   m_executor->Submit( [this, request, handler, context](){ this->UntagResourceAsyncHelper( request, handler, context ); } );
415 }
416 
UntagResourceAsyncHelper(const UntagResourceRequest & request,const UntagResourceResponseReceivedHandler & handler,const std::shared_ptr<const Aws::Client::AsyncCallerContext> & context) const417 void HealthLakeClient::UntagResourceAsyncHelper(const UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const
418 {
419   handler(this, request, UntagResource(request), context);
420 }
421 
422