extensions/azure/storage/AzureStorageCredentials.cpp (67 lines of code) (raw):

/** * @file AzureStorageCredentials.cpp * AzureStorageCredentials class implementation * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 "AzureStorageCredentials.h" namespace org::apache::nifi::minifi::azure::storage { void AzureStorageCredentials::setStorageAccountName(const std::string& storage_account_name) { storage_account_name_ = storage_account_name; } void AzureStorageCredentials::setStorageAccountKey(const std::string& storage_account_key) { storage_account_key_ = storage_account_key; } void AzureStorageCredentials::setSasToken(const std::string& sas_token) { sas_token_ = sas_token; } void AzureStorageCredentials::setEndpontSuffix(const std::string& endpoint_suffix) { endpoint_suffix_ = endpoint_suffix; } void AzureStorageCredentials::setConnectionString(const std::string& connection_string) { connection_string_ = connection_string; } void AzureStorageCredentials::setUseManagedIdentityCredentials(bool use_managed_identity_credentials) { use_managed_identity_credentials_ = use_managed_identity_credentials; } std::string AzureStorageCredentials::getStorageAccountName() const { return storage_account_name_; } std::string AzureStorageCredentials::getEndpointSuffix() const { return endpoint_suffix_.empty() ? "core.windows.net" : endpoint_suffix_; } bool AzureStorageCredentials::getUseManagedIdentityCredentials() const { return use_managed_identity_credentials_; } std::string AzureStorageCredentials::buildConnectionString() const { if (use_managed_identity_credentials_) { return ""; } if (!connection_string_.empty()) { return connection_string_; } if (storage_account_name_.empty() || (storage_account_key_.empty() && sas_token_.empty())) { return ""; } std::string credentials; credentials += "AccountName=" + storage_account_name_; if (!storage_account_key_.empty()) { credentials += ";AccountKey=" + storage_account_key_; } if (!sas_token_.empty()) { credentials += ";SharedAccessSignature=" + (sas_token_[0] == '?' ? sas_token_.substr(1) : sas_token_); } if (!endpoint_suffix_.empty()) { credentials += ";EndpointSuffix=" + endpoint_suffix_; } return credentials; } bool AzureStorageCredentials::isValid() const { return (getUseManagedIdentityCredentials() && !getStorageAccountName().empty()) || (!getUseManagedIdentityCredentials() && !buildConnectionString().empty()); } bool AzureStorageCredentials::operator==(const AzureStorageCredentials& other) const { if (other.use_managed_identity_credentials_ != use_managed_identity_credentials_) { return false; } if (use_managed_identity_credentials_) { return storage_account_name_ == other.storage_account_name_ && endpoint_suffix_ == other.endpoint_suffix_; } else { return buildConnectionString() == other.buildConnectionString(); } } } // namespace org::apache::nifi::minifi::azure::storage