Avoid inheriting from an internal base class for KeyVault PagedResponse Options and expose fields directly (#2590)

* Avoid inheriting from an internal base class for KeyVault PagedResponse Options and expose fields directly

* fix for compilation

Co-authored-by: Victor Vazquez <vhvb1989@gmail.com>
This commit is contained in:
Ahson Khan 2021-07-09 15:36:16 -07:00 committed by GitHub
parent 5619c64811
commit 07861a9687
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 63 additions and 34 deletions

View File

@ -1,11 +1,11 @@
# Release History
## 4.0.0 (2021-07-08)
## 4.0.0 (2021-07-09)
### Breaking Changes
- Removed `SHA256`, `SHA384`, and `SHA512` hashing classes by making them internal since the end user doesn't need them.
- Renamed header `single_page.hpp` to `get_page_results_options.hpp`.
- Removed header `single_page.hpp`.
## 4.0.0-beta.3 (2021-06-08)

View File

@ -28,7 +28,6 @@ endif()
set(
AZURE_KEYVAULT_COMMON_HEADER
inc/azure/keyvault/common/internal/get_page_results_options.hpp
inc/azure/keyvault/common/internal/keyvault_pipeline.hpp
)

View File

@ -1,22 +0,0 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// SPDX-License-Identifier: MIT
/**
* @brief Define the base classes for using single page responses.
*
*/
#pragma once
#include <azure/core/nullable.hpp>
#include <string>
namespace Azure { namespace Security { namespace KeyVault { namespace _internal {
struct GetPageResultOptions
{
virtual ~GetPageResultOptions() = default;
Azure::Nullable<std::string> NextPageToken;
Azure::Nullable<int32_t> MaxPageResults;
};
}}}} // namespace Azure::Security::KeyVault::_internal

View File

@ -12,8 +12,6 @@
#include <azure/core/http/http.hpp>
#include <azure/core/paged_response.hpp>
#include <azure/keyvault/common/internal/get_page_results_options.hpp>
#include "azure/keyvault/keys/deleted_key.hpp"
#include "azure/keyvault/keys/json_web_key.hpp"
#include "azure/keyvault/keys/key_vault_key.hpp"
@ -125,8 +123,9 @@ namespace Azure { namespace Security { namespace KeyVault { namespace Keys {
*
*/
struct GetPropertiesOfKeysOptions final
: public Azure::Security::KeyVault::_internal::GetPageResultOptions
{
Azure::Nullable<std::string> NextPageToken;
Azure::Nullable<int32_t> MaxPageResults;
};
/**
@ -134,8 +133,9 @@ namespace Azure { namespace Security { namespace KeyVault { namespace Keys {
*
*/
struct GetPropertiesOfKeyVersionsOptions final
: public Azure::Security::KeyVault::_internal::GetPageResultOptions
{
Azure::Nullable<std::string> NextPageToken;
Azure::Nullable<int32_t> MaxPageResults;
};
/**
@ -143,7 +143,8 @@ namespace Azure { namespace Security { namespace KeyVault { namespace Keys {
*
*/
struct GetDeletedKeysOptions final
: public Azure::Security::KeyVault::_internal::GetPageResultOptions
{
Azure::Nullable<std::string> NextPageToken;
Azure::Nullable<int32_t> MaxPageResults;
};
}}}} // namespace Azure::Security::KeyVault::Keys

View File

@ -13,7 +13,6 @@
using namespace Azure::Security::KeyVault::Keys;
using namespace Azure::Security::KeyVault::Keys::_detail;
using namespace Azure::Core::Json::_internal;
using namespace Azure::Security::KeyVault::_internal;
std::string
Azure::Security::KeyVault::Keys::_detail::ImportKeyOptionsSerializer::ImportKeyOptionsSerialize(

View File

@ -5,8 +5,6 @@
#include <azure/core/http/http.hpp>
#include <azure/core/http/policies/policy.hpp>
#include <azure/keyvault/common/internal/get_page_results_options.hpp>
#include "azure/keyvault/keys/key_client.hpp"
#include "private/key_backup.hpp"
#include "private/key_constants.hpp"
@ -32,7 +30,61 @@ struct RequestWithContinuationToken final
};
static inline RequestWithContinuationToken BuildRequestFromContinuationToken(
Azure::Security::KeyVault::_internal::GetPageResultOptions const& options,
Azure::Security::KeyVault::Keys::GetPropertiesOfKeysOptions const& options,
std::vector<std::string>&& defaultPath)
{
RequestWithContinuationToken request;
request.Path = defaultPath;
if (options.NextPageToken)
{
// Using a continuation token requires to send the request to the continuation token URL instead
// of the default URL which is used only for the first page.
Azure::Core::Url nextPageUrl(options.NextPageToken.Value());
request.Query
= std::make_unique<std::map<std::string, std::string>>(nextPageUrl.GetQueryParameters());
request.Path.clear();
request.Path.emplace_back(nextPageUrl.GetPath());
}
if (options.MaxPageResults)
{
if (request.Query == nullptr)
{
request.Query = std::make_unique<std::map<std::string, std::string>>();
}
request.Query->emplace("maxResults", std::to_string(options.MaxPageResults.Value()));
}
return request;
}
static inline RequestWithContinuationToken BuildRequestFromContinuationToken(
Azure::Security::KeyVault::Keys::GetPropertiesOfKeyVersionsOptions const& options,
std::vector<std::string>&& defaultPath)
{
RequestWithContinuationToken request;
request.Path = defaultPath;
if (options.NextPageToken)
{
// Using a continuation token requires to send the request to the continuation token URL instead
// of the default URL which is used only for the first page.
Azure::Core::Url nextPageUrl(options.NextPageToken.Value());
request.Query
= std::make_unique<std::map<std::string, std::string>>(nextPageUrl.GetQueryParameters());
request.Path.clear();
request.Path.emplace_back(nextPageUrl.GetPath());
}
if (options.MaxPageResults)
{
if (request.Query == nullptr)
{
request.Query = std::make_unique<std::map<std::string, std::string>>();
}
request.Query->emplace("maxResults", std::to_string(options.MaxPageResults.Value()));
}
return request;
}
static inline RequestWithContinuationToken BuildRequestFromContinuationToken(
Azure::Security::KeyVault::Keys::GetDeletedKeysOptions const& options,
std::vector<std::string>&& defaultPath)
{
RequestWithContinuationToken request;