/* * Copyright 2009-2017 Alibaba Cloud All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include using namespace AlibabaCloud; using namespace AlibabaCloud::Location; using namespace AlibabaCloud::Kms; using namespace AlibabaCloud::Kms::Model; namespace { const std::string SERVICE_NAME = "Kms"; } KmsClient::KmsClient(const Credentials &credentials, const ClientConfiguration &configuration) : RpcServiceClient(SERVICE_NAME, std::make_shared(credentials), configuration) { auto locationClient = std::make_shared(credentials, configuration); endpointProvider_ = std::make_shared(locationClient, configuration.regionId(), SERVICE_NAME, "kms"); } KmsClient::KmsClient(const std::shared_ptr& credentialsProvider, const ClientConfiguration & configuration) : RpcServiceClient(SERVICE_NAME, credentialsProvider, configuration) { auto locationClient = std::make_shared(credentialsProvider, configuration); endpointProvider_ = std::make_shared(locationClient, configuration.regionId(), SERVICE_NAME, "kms"); } KmsClient::KmsClient(const std::string & accessKeyId, const std::string & accessKeySecret, const ClientConfiguration & configuration) : RpcServiceClient(SERVICE_NAME, std::make_shared(accessKeyId, accessKeySecret), configuration) { auto locationClient = std::make_shared(accessKeyId, accessKeySecret, configuration); endpointProvider_ = std::make_shared(locationClient, configuration.regionId(), SERVICE_NAME, "kms"); } KmsClient::~KmsClient() {} KmsClient::CancelKeyDeletionOutcome KmsClient::cancelKeyDeletion(const CancelKeyDeletionRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return CancelKeyDeletionOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return CancelKeyDeletionOutcome(CancelKeyDeletionResult(outcome.result())); else return CancelKeyDeletionOutcome(outcome.error()); } void KmsClient::cancelKeyDeletionAsync(const CancelKeyDeletionRequest& request, const CancelKeyDeletionAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, cancelKeyDeletion(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::CancelKeyDeletionOutcomeCallable KmsClient::cancelKeyDeletionCallable(const CancelKeyDeletionRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->cancelKeyDeletion(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::CreateAliasOutcome KmsClient::createAlias(const CreateAliasRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return CreateAliasOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return CreateAliasOutcome(CreateAliasResult(outcome.result())); else return CreateAliasOutcome(outcome.error()); } void KmsClient::createAliasAsync(const CreateAliasRequest& request, const CreateAliasAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, createAlias(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::CreateAliasOutcomeCallable KmsClient::createAliasCallable(const CreateAliasRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->createAlias(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::CreateKeyOutcome KmsClient::createKey(const CreateKeyRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return CreateKeyOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return CreateKeyOutcome(CreateKeyResult(outcome.result())); else return CreateKeyOutcome(outcome.error()); } void KmsClient::createKeyAsync(const CreateKeyRequest& request, const CreateKeyAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, createKey(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::CreateKeyOutcomeCallable KmsClient::createKeyCallable(const CreateKeyRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->createKey(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::DecryptOutcome KmsClient::decrypt(const DecryptRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return DecryptOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return DecryptOutcome(DecryptResult(outcome.result())); else return DecryptOutcome(outcome.error()); } void KmsClient::decryptAsync(const DecryptRequest& request, const DecryptAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, decrypt(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::DecryptOutcomeCallable KmsClient::decryptCallable(const DecryptRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->decrypt(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::DeleteAliasOutcome KmsClient::deleteAlias(const DeleteAliasRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return DeleteAliasOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return DeleteAliasOutcome(DeleteAliasResult(outcome.result())); else return DeleteAliasOutcome(outcome.error()); } void KmsClient::deleteAliasAsync(const DeleteAliasRequest& request, const DeleteAliasAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, deleteAlias(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::DeleteAliasOutcomeCallable KmsClient::deleteAliasCallable(const DeleteAliasRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->deleteAlias(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::DeleteKeyMaterialOutcome KmsClient::deleteKeyMaterial(const DeleteKeyMaterialRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return DeleteKeyMaterialOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return DeleteKeyMaterialOutcome(DeleteKeyMaterialResult(outcome.result())); else return DeleteKeyMaterialOutcome(outcome.error()); } void KmsClient::deleteKeyMaterialAsync(const DeleteKeyMaterialRequest& request, const DeleteKeyMaterialAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, deleteKeyMaterial(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::DeleteKeyMaterialOutcomeCallable KmsClient::deleteKeyMaterialCallable(const DeleteKeyMaterialRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->deleteKeyMaterial(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::DescribeKeyOutcome KmsClient::describeKey(const DescribeKeyRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return DescribeKeyOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return DescribeKeyOutcome(DescribeKeyResult(outcome.result())); else return DescribeKeyOutcome(outcome.error()); } void KmsClient::describeKeyAsync(const DescribeKeyRequest& request, const DescribeKeyAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, describeKey(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::DescribeKeyOutcomeCallable KmsClient::describeKeyCallable(const DescribeKeyRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->describeKey(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::DescribeKeyVersionOutcome KmsClient::describeKeyVersion(const DescribeKeyVersionRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return DescribeKeyVersionOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return DescribeKeyVersionOutcome(DescribeKeyVersionResult(outcome.result())); else return DescribeKeyVersionOutcome(outcome.error()); } void KmsClient::describeKeyVersionAsync(const DescribeKeyVersionRequest& request, const DescribeKeyVersionAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, describeKeyVersion(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::DescribeKeyVersionOutcomeCallable KmsClient::describeKeyVersionCallable(const DescribeKeyVersionRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->describeKeyVersion(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::DescribeRegionsOutcome KmsClient::describeRegions(const DescribeRegionsRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return DescribeRegionsOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return DescribeRegionsOutcome(DescribeRegionsResult(outcome.result())); else return DescribeRegionsOutcome(outcome.error()); } void KmsClient::describeRegionsAsync(const DescribeRegionsRequest& request, const DescribeRegionsAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, describeRegions(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::DescribeRegionsOutcomeCallable KmsClient::describeRegionsCallable(const DescribeRegionsRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->describeRegions(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::DescribeServiceOutcome KmsClient::describeService(const DescribeServiceRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return DescribeServiceOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return DescribeServiceOutcome(DescribeServiceResult(outcome.result())); else return DescribeServiceOutcome(outcome.error()); } void KmsClient::describeServiceAsync(const DescribeServiceRequest& request, const DescribeServiceAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, describeService(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::DescribeServiceOutcomeCallable KmsClient::describeServiceCallable(const DescribeServiceRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->describeService(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::DisableKeyOutcome KmsClient::disableKey(const DisableKeyRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return DisableKeyOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return DisableKeyOutcome(DisableKeyResult(outcome.result())); else return DisableKeyOutcome(outcome.error()); } void KmsClient::disableKeyAsync(const DisableKeyRequest& request, const DisableKeyAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, disableKey(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::DisableKeyOutcomeCallable KmsClient::disableKeyCallable(const DisableKeyRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->disableKey(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::EnableKeyOutcome KmsClient::enableKey(const EnableKeyRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return EnableKeyOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return EnableKeyOutcome(EnableKeyResult(outcome.result())); else return EnableKeyOutcome(outcome.error()); } void KmsClient::enableKeyAsync(const EnableKeyRequest& request, const EnableKeyAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, enableKey(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::EnableKeyOutcomeCallable KmsClient::enableKeyCallable(const EnableKeyRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->enableKey(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::EncryptOutcome KmsClient::encrypt(const EncryptRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return EncryptOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return EncryptOutcome(EncryptResult(outcome.result())); else return EncryptOutcome(outcome.error()); } void KmsClient::encryptAsync(const EncryptRequest& request, const EncryptAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, encrypt(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::EncryptOutcomeCallable KmsClient::encryptCallable(const EncryptRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->encrypt(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::GenerateDataKeyOutcome KmsClient::generateDataKey(const GenerateDataKeyRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return GenerateDataKeyOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return GenerateDataKeyOutcome(GenerateDataKeyResult(outcome.result())); else return GenerateDataKeyOutcome(outcome.error()); } void KmsClient::generateDataKeyAsync(const GenerateDataKeyRequest& request, const GenerateDataKeyAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, generateDataKey(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::GenerateDataKeyOutcomeCallable KmsClient::generateDataKeyCallable(const GenerateDataKeyRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->generateDataKey(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::GenerateDataKeyWithoutPlaintextOutcome KmsClient::generateDataKeyWithoutPlaintext(const GenerateDataKeyWithoutPlaintextRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return GenerateDataKeyWithoutPlaintextOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return GenerateDataKeyWithoutPlaintextOutcome(GenerateDataKeyWithoutPlaintextResult(outcome.result())); else return GenerateDataKeyWithoutPlaintextOutcome(outcome.error()); } void KmsClient::generateDataKeyWithoutPlaintextAsync(const GenerateDataKeyWithoutPlaintextRequest& request, const GenerateDataKeyWithoutPlaintextAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, generateDataKeyWithoutPlaintext(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::GenerateDataKeyWithoutPlaintextOutcomeCallable KmsClient::generateDataKeyWithoutPlaintextCallable(const GenerateDataKeyWithoutPlaintextRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->generateDataKeyWithoutPlaintext(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::GetParametersForImportOutcome KmsClient::getParametersForImport(const GetParametersForImportRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return GetParametersForImportOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return GetParametersForImportOutcome(GetParametersForImportResult(outcome.result())); else return GetParametersForImportOutcome(outcome.error()); } void KmsClient::getParametersForImportAsync(const GetParametersForImportRequest& request, const GetParametersForImportAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, getParametersForImport(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::GetParametersForImportOutcomeCallable KmsClient::getParametersForImportCallable(const GetParametersForImportRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->getParametersForImport(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::ImportKeyMaterialOutcome KmsClient::importKeyMaterial(const ImportKeyMaterialRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return ImportKeyMaterialOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return ImportKeyMaterialOutcome(ImportKeyMaterialResult(outcome.result())); else return ImportKeyMaterialOutcome(outcome.error()); } void KmsClient::importKeyMaterialAsync(const ImportKeyMaterialRequest& request, const ImportKeyMaterialAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, importKeyMaterial(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::ImportKeyMaterialOutcomeCallable KmsClient::importKeyMaterialCallable(const ImportKeyMaterialRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->importKeyMaterial(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::ListAliasesOutcome KmsClient::listAliases(const ListAliasesRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return ListAliasesOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return ListAliasesOutcome(ListAliasesResult(outcome.result())); else return ListAliasesOutcome(outcome.error()); } void KmsClient::listAliasesAsync(const ListAliasesRequest& request, const ListAliasesAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, listAliases(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::ListAliasesOutcomeCallable KmsClient::listAliasesCallable(const ListAliasesRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->listAliases(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::ListAliasesByKeyIdOutcome KmsClient::listAliasesByKeyId(const ListAliasesByKeyIdRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return ListAliasesByKeyIdOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return ListAliasesByKeyIdOutcome(ListAliasesByKeyIdResult(outcome.result())); else return ListAliasesByKeyIdOutcome(outcome.error()); } void KmsClient::listAliasesByKeyIdAsync(const ListAliasesByKeyIdRequest& request, const ListAliasesByKeyIdAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, listAliasesByKeyId(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::ListAliasesByKeyIdOutcomeCallable KmsClient::listAliasesByKeyIdCallable(const ListAliasesByKeyIdRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->listAliasesByKeyId(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::ListKeyVersionsOutcome KmsClient::listKeyVersions(const ListKeyVersionsRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return ListKeyVersionsOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return ListKeyVersionsOutcome(ListKeyVersionsResult(outcome.result())); else return ListKeyVersionsOutcome(outcome.error()); } void KmsClient::listKeyVersionsAsync(const ListKeyVersionsRequest& request, const ListKeyVersionsAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, listKeyVersions(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::ListKeyVersionsOutcomeCallable KmsClient::listKeyVersionsCallable(const ListKeyVersionsRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->listKeyVersions(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::ListKeysOutcome KmsClient::listKeys(const ListKeysRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return ListKeysOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return ListKeysOutcome(ListKeysResult(outcome.result())); else return ListKeysOutcome(outcome.error()); } void KmsClient::listKeysAsync(const ListKeysRequest& request, const ListKeysAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, listKeys(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::ListKeysOutcomeCallable KmsClient::listKeysCallable(const ListKeysRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->listKeys(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::ListResourceTagsOutcome KmsClient::listResourceTags(const ListResourceTagsRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return ListResourceTagsOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return ListResourceTagsOutcome(ListResourceTagsResult(outcome.result())); else return ListResourceTagsOutcome(outcome.error()); } void KmsClient::listResourceTagsAsync(const ListResourceTagsRequest& request, const ListResourceTagsAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, listResourceTags(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::ListResourceTagsOutcomeCallable KmsClient::listResourceTagsCallable(const ListResourceTagsRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->listResourceTags(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::ScheduleKeyDeletionOutcome KmsClient::scheduleKeyDeletion(const ScheduleKeyDeletionRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return ScheduleKeyDeletionOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return ScheduleKeyDeletionOutcome(ScheduleKeyDeletionResult(outcome.result())); else return ScheduleKeyDeletionOutcome(outcome.error()); } void KmsClient::scheduleKeyDeletionAsync(const ScheduleKeyDeletionRequest& request, const ScheduleKeyDeletionAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, scheduleKeyDeletion(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::ScheduleKeyDeletionOutcomeCallable KmsClient::scheduleKeyDeletionCallable(const ScheduleKeyDeletionRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->scheduleKeyDeletion(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::TagResourceOutcome KmsClient::tagResource(const TagResourceRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return TagResourceOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return TagResourceOutcome(TagResourceResult(outcome.result())); else return TagResourceOutcome(outcome.error()); } void KmsClient::tagResourceAsync(const TagResourceRequest& request, const TagResourceAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, tagResource(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::TagResourceOutcomeCallable KmsClient::tagResourceCallable(const TagResourceRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->tagResource(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::UntagResourceOutcome KmsClient::untagResource(const UntagResourceRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return UntagResourceOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return UntagResourceOutcome(UntagResourceResult(outcome.result())); else return UntagResourceOutcome(outcome.error()); } void KmsClient::untagResourceAsync(const UntagResourceRequest& request, const UntagResourceAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, untagResource(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::UntagResourceOutcomeCallable KmsClient::untagResourceCallable(const UntagResourceRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->untagResource(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::UpdateAliasOutcome KmsClient::updateAlias(const UpdateAliasRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return UpdateAliasOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return UpdateAliasOutcome(UpdateAliasResult(outcome.result())); else return UpdateAliasOutcome(outcome.error()); } void KmsClient::updateAliasAsync(const UpdateAliasRequest& request, const UpdateAliasAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, updateAlias(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::UpdateAliasOutcomeCallable KmsClient::updateAliasCallable(const UpdateAliasRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->updateAlias(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::UpdateKeyDescriptionOutcome KmsClient::updateKeyDescription(const UpdateKeyDescriptionRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return UpdateKeyDescriptionOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return UpdateKeyDescriptionOutcome(UpdateKeyDescriptionResult(outcome.result())); else return UpdateKeyDescriptionOutcome(outcome.error()); } void KmsClient::updateKeyDescriptionAsync(const UpdateKeyDescriptionRequest& request, const UpdateKeyDescriptionAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, updateKeyDescription(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::UpdateKeyDescriptionOutcomeCallable KmsClient::updateKeyDescriptionCallable(const UpdateKeyDescriptionRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->updateKeyDescription(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); } KmsClient::UpdateRotationPolicyOutcome KmsClient::updateRotationPolicy(const UpdateRotationPolicyRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); if (!endpointOutcome.isSuccess()) return UpdateRotationPolicyOutcome(endpointOutcome.error()); auto outcome = makeRequest(endpointOutcome.result(), request); if (outcome.isSuccess()) return UpdateRotationPolicyOutcome(UpdateRotationPolicyResult(outcome.result())); else return UpdateRotationPolicyOutcome(outcome.error()); } void KmsClient::updateRotationPolicyAsync(const UpdateRotationPolicyRequest& request, const UpdateRotationPolicyAsyncHandler& handler, const std::shared_ptr& context) const { auto fn = [this, request, handler, context]() { handler(this, request, updateRotationPolicy(request), context); }; asyncExecute(new Runnable(fn)); } KmsClient::UpdateRotationPolicyOutcomeCallable KmsClient::updateRotationPolicyCallable(const UpdateRotationPolicyRequest &request) const { auto task = std::make_shared>( [this, request]() { return this->updateRotationPolicy(request); }); asyncExecute(new Runnable([task]() { (*task)(); })); return task->get_future(); }