Move POSIX time converter from KeyVault to Core (#2524)
* Move POSIX time converter from KeyVault to Core * Move to Core namespace Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
This commit is contained in:
parent
f6765e667e
commit
8f1b5b95e3
@ -267,4 +267,50 @@ inline bool operator>=(std::chrono::system_clock::time_point const& tp, DateTime
|
||||
return (dt <= tp);
|
||||
}
|
||||
|
||||
namespace Core { namespace _internal {
|
||||
/**
|
||||
* @brief Provides convertion methods for POSIX time to an #Azure::DateTime.
|
||||
*
|
||||
*/
|
||||
class PosixTimeConverter final {
|
||||
public:
|
||||
/**
|
||||
* @brief Converts POSIX time to an #Azure::DateTime.
|
||||
*
|
||||
* @param posixTime The number of seconds since 1970.
|
||||
* @return Calculated #Azure::DateTime.
|
||||
*/
|
||||
static DateTime PosixTimeToDateTime(int64_t posixTime)
|
||||
{
|
||||
return DateTime(1970) + std::chrono::seconds(posixTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Converts a DateTime to POSIX time.
|
||||
*
|
||||
* @param dateTime The `%DateTime` to convert.
|
||||
* @return The number of seconds since 1970.
|
||||
*/
|
||||
static int64_t DateTimeToPosixTime(DateTime const& dateTime)
|
||||
{
|
||||
// This count starts at the POSIX epoch which is January 1st, 1970 UTC.
|
||||
return std::chrono::duration_cast<std::chrono::seconds>(dateTime - DateTime(1970)).count();
|
||||
}
|
||||
|
||||
private:
|
||||
/**
|
||||
* @brief An instance of `%PosixTimeConverter` class cannot be created.
|
||||
*
|
||||
*/
|
||||
PosixTimeConverter() = delete;
|
||||
|
||||
/**
|
||||
* @brief An instance of `%PosixTimeConverter` class cannot be destructed, because no instance
|
||||
* can be created.
|
||||
*
|
||||
*/
|
||||
~PosixTimeConverter() = delete;
|
||||
};
|
||||
}} // namespace Core::_internal
|
||||
|
||||
} // namespace Azure
|
||||
|
||||
@ -31,7 +31,6 @@ set(
|
||||
inc/azure/keyvault/common/internal/base64url.hpp
|
||||
inc/azure/keyvault/common/internal/keyvault_pipeline.hpp
|
||||
inc/azure/keyvault/common/internal/single_page.hpp
|
||||
inc/azure/keyvault/common/internal/unix_time_helper.hpp
|
||||
inc/azure/keyvault/common/internal/keyvault_exception.hpp
|
||||
inc/azure/keyvault/common/sha.hpp
|
||||
)
|
||||
|
||||
@ -1,47 +0,0 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
/**
|
||||
* @brief Provides helper method for using POSIX time.
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <azure/core/datetime.hpp>
|
||||
|
||||
#include <chrono>
|
||||
|
||||
namespace Azure { namespace Security { namespace KeyVault { namespace _internal {
|
||||
|
||||
/**
|
||||
* @brief Provides convertion methods for POSIX time to Azure Core #Azure::Core::DateTime.
|
||||
*
|
||||
*/
|
||||
class UnixTimeConverter final {
|
||||
public:
|
||||
/**
|
||||
* @brief Converts POSIX time to a #Azure::Core::Datetime.
|
||||
*
|
||||
* @param unixTime The number of seconds since 1970.
|
||||
* @return Calculated #Azure::Core::DateTime.
|
||||
*/
|
||||
static inline Azure::DateTime UnixTimeToDatetime(int64_t unixTime)
|
||||
{
|
||||
return Azure::DateTime(1970) + std::chrono::seconds(unixTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Converts an #Azure::Core::DateTime to POSIX time.
|
||||
*
|
||||
* @param dateTime The date time to convert.
|
||||
*/
|
||||
static inline int64_t DatetimeToUnixTime(Azure::DateTime dateTime)
|
||||
{
|
||||
// This count starts at the Unix epoch which is January 1st, 1970 UTC.
|
||||
auto secondsSince1970
|
||||
= std::chrono::duration_cast<std::chrono::seconds>(dateTime - Azure::DateTime(1970));
|
||||
return secondsSince1970.count();
|
||||
}
|
||||
};
|
||||
}}}} // namespace Azure::Security::KeyVault::_internal
|
||||
@ -4,8 +4,6 @@
|
||||
#include <azure/core/internal/json/json.hpp>
|
||||
#include <azure/core/internal/json/json_optional.hpp>
|
||||
|
||||
#include <azure/keyvault/common/internal/unix_time_helper.hpp>
|
||||
|
||||
#include "azure/keyvault/keys/deleted_key.hpp"
|
||||
#include "azure/keyvault/keys/key_vault_key.hpp"
|
||||
#include "private/key_constants.hpp"
|
||||
@ -13,7 +11,7 @@
|
||||
|
||||
using namespace Azure::Security::KeyVault::Keys;
|
||||
using namespace Azure::Core::Json::_internal;
|
||||
using Azure::Security::KeyVault::_internal::UnixTimeConverter;
|
||||
using Azure::Core::_internal::PosixTimeConverter;
|
||||
|
||||
DeletedKey _detail::DeletedKeySerializer::DeletedKeyDeserialize(
|
||||
std::string const& name,
|
||||
@ -42,12 +40,12 @@ DeletedKey _detail::DeletedKeySerializer::DeletedKeyDeserialize(
|
||||
deletedKey.DeletedDate,
|
||||
jsonParser,
|
||||
_detail::DeletedOnPropertyName,
|
||||
UnixTimeConverter::UnixTimeToDatetime);
|
||||
PosixTimeConverter::PosixTimeToDateTime);
|
||||
JsonOptional::SetIfExists<int64_t, Azure::DateTime>(
|
||||
deletedKey.ScheduledPurgeDate,
|
||||
jsonParser,
|
||||
_detail::ScheduledPurgeDatePropertyName,
|
||||
UnixTimeConverter::UnixTimeToDatetime);
|
||||
PosixTimeConverter::PosixTimeToDateTime);
|
||||
|
||||
return deletedKey;
|
||||
}
|
||||
|
||||
@ -4,8 +4,6 @@
|
||||
#include <azure/core/internal/json/json.hpp>
|
||||
#include <azure/core/internal/json/json_optional.hpp>
|
||||
|
||||
#include <azure/keyvault/common/internal/unix_time_helper.hpp>
|
||||
|
||||
#include "azure/keyvault/keys/import_key_options.hpp"
|
||||
#include "private/key_constants.hpp"
|
||||
#include "private/key_serializers.hpp"
|
||||
@ -21,6 +19,7 @@ std::string
|
||||
Azure::Security::KeyVault::Keys::_detail::ImportKeyOptionsSerializer::ImportKeyOptionsSerialize(
|
||||
ImportKeyOptions const& importKeyOptions)
|
||||
{
|
||||
using Azure::Core::_internal::PosixTimeConverter;
|
||||
|
||||
Azure::Core::Json::_internal::json payload;
|
||||
// key
|
||||
@ -36,7 +35,7 @@ Azure::Security::KeyVault::Keys::_detail::ImportKeyOptionsSerializer::ImportKeyO
|
||||
importKeyOptions.Properties.CreatedOn,
|
||||
payload[_detail::AttributesPropertyName],
|
||||
_detail::CreatedPropertyName,
|
||||
UnixTimeConverter::DatetimeToUnixTime);
|
||||
PosixTimeConverter::DateTimeToPosixTime);
|
||||
JsonOptional::SetFromNullable(
|
||||
importKeyOptions.Properties.Enabled,
|
||||
payload[_detail::AttributesPropertyName],
|
||||
@ -45,12 +44,12 @@ Azure::Security::KeyVault::Keys::_detail::ImportKeyOptionsSerializer::ImportKeyO
|
||||
importKeyOptions.Properties.ExpiresOn,
|
||||
payload[_detail::AttributesPropertyName],
|
||||
_detail::ExpPropertyName,
|
||||
UnixTimeConverter::DatetimeToUnixTime);
|
||||
PosixTimeConverter::DateTimeToPosixTime);
|
||||
JsonOptional::SetFromNullable<Azure::DateTime, int64_t>(
|
||||
importKeyOptions.Properties.NotBefore,
|
||||
payload[_detail::AttributesPropertyName],
|
||||
_detail::NbfPropertyName,
|
||||
UnixTimeConverter::DatetimeToUnixTime);
|
||||
PosixTimeConverter::DateTimeToPosixTime);
|
||||
JsonOptional::SetFromNullable(
|
||||
importKeyOptions.Properties.RecoverableDays,
|
||||
payload[_detail::AttributesPropertyName],
|
||||
@ -62,7 +61,7 @@ Azure::Security::KeyVault::Keys::_detail::ImportKeyOptionsSerializer::ImportKeyO
|
||||
importKeyOptions.Properties.UpdatedOn,
|
||||
payload[_detail::AttributesPropertyName],
|
||||
_detail::UpdatedPropertyName,
|
||||
UnixTimeConverter::DatetimeToUnixTime);
|
||||
PosixTimeConverter::DateTimeToPosixTime);
|
||||
|
||||
// tags
|
||||
for (auto& tag : importKeyOptions.Properties.Tags)
|
||||
|
||||
@ -4,8 +4,6 @@
|
||||
#include <azure/core/internal/json/json.hpp>
|
||||
#include <azure/core/internal/json/json_optional.hpp>
|
||||
|
||||
#include <azure/keyvault/common/internal/unix_time_helper.hpp>
|
||||
|
||||
#include "private/key_constants.hpp"
|
||||
#include "private/key_request_parameters.hpp"
|
||||
|
||||
@ -13,10 +11,10 @@
|
||||
|
||||
using namespace Azure::Security::KeyVault::Keys::_detail;
|
||||
using namespace Azure::Core::Json::_internal;
|
||||
using namespace Azure::Security::KeyVault::_internal;
|
||||
|
||||
std::string KeyRequestParameters::Serialize() const
|
||||
{
|
||||
using Azure::Core::_internal::PosixTimeConverter;
|
||||
|
||||
Azure::Core::Json::_internal::json payload;
|
||||
// kty
|
||||
@ -43,13 +41,13 @@ std::string KeyRequestParameters::Serialize() const
|
||||
m_options.ExpiresOn,
|
||||
payload[_detail::AttributesPropertyName],
|
||||
_detail::ExpPropertyName,
|
||||
UnixTimeConverter::DatetimeToUnixTime);
|
||||
PosixTimeConverter::DateTimeToPosixTime);
|
||||
|
||||
JsonOptional::SetFromNullable<Azure::DateTime, int64_t>(
|
||||
m_options.NotBefore,
|
||||
payload[_detail::AttributesPropertyName],
|
||||
_detail::NbfPropertyName,
|
||||
UnixTimeConverter::DatetimeToUnixTime);
|
||||
PosixTimeConverter::DateTimeToPosixTime);
|
||||
|
||||
// tags
|
||||
for (auto tag : m_options.Tags)
|
||||
|
||||
@ -6,15 +6,13 @@
|
||||
#include <azure/core/internal/json/json_serializable.hpp>
|
||||
#include <azure/core/url.hpp>
|
||||
|
||||
#include <azure/keyvault/common/internal/unix_time_helper.hpp>
|
||||
|
||||
#include "azure/keyvault/keys/key_vault_key.hpp"
|
||||
#include "private/key_constants.hpp"
|
||||
#include "private/key_serializers.hpp"
|
||||
|
||||
using namespace Azure::Security::KeyVault::Keys;
|
||||
using namespace Azure::Core::Json::_internal;
|
||||
using Azure::Security::KeyVault::_internal::UnixTimeConverter;
|
||||
using Azure::Core::_internal::PosixTimeConverter;
|
||||
|
||||
KeyVaultKey _detail::KeyVaultKeySerializer::KeyVaultKeyDeserialize(
|
||||
std::string const& name,
|
||||
@ -46,6 +44,8 @@ void _detail::KeyVaultKeySerializer::KeyVaultKeyDeserialize(
|
||||
KeyVaultKey& key,
|
||||
Azure::Core::Json::_internal::json const& jsonParser)
|
||||
{
|
||||
using Azure::Core::_internal::PosixTimeConverter;
|
||||
|
||||
// Deserialize jwk
|
||||
_detail::JsonWebKeySerializer::JsonWebDeserialize(key.Key, jsonParser);
|
||||
|
||||
@ -63,22 +63,22 @@ void _detail::KeyVaultKeySerializer::KeyVaultKeyDeserialize(
|
||||
key.Properties.NotBefore,
|
||||
attributes,
|
||||
_detail::NbfPropertyName,
|
||||
UnixTimeConverter::UnixTimeToDatetime);
|
||||
PosixTimeConverter::PosixTimeToDateTime);
|
||||
JsonOptional::SetIfExists<int64_t, Azure::DateTime>(
|
||||
key.Properties.ExpiresOn,
|
||||
attributes,
|
||||
_detail::ExpPropertyName,
|
||||
UnixTimeConverter::UnixTimeToDatetime);
|
||||
PosixTimeConverter::PosixTimeToDateTime);
|
||||
JsonOptional::SetIfExists<int64_t, Azure::DateTime>(
|
||||
key.Properties.CreatedOn,
|
||||
attributes,
|
||||
_detail::CreatedPropertyName,
|
||||
UnixTimeConverter::UnixTimeToDatetime);
|
||||
PosixTimeConverter::PosixTimeToDateTime);
|
||||
JsonOptional::SetIfExists<int64_t, Azure::DateTime>(
|
||||
key.Properties.UpdatedOn,
|
||||
attributes,
|
||||
_detail::UpdatedPropertyName,
|
||||
UnixTimeConverter::UnixTimeToDatetime);
|
||||
PosixTimeConverter::PosixTimeToDateTime);
|
||||
}
|
||||
|
||||
// "Tags"
|
||||
|
||||
@ -6,8 +6,6 @@
|
||||
#include "private/key_constants.hpp"
|
||||
#include "private/key_serializers.hpp"
|
||||
|
||||
#include <azure/keyvault/common/internal/unix_time_helper.hpp>
|
||||
|
||||
#include <azure/core/internal/json/json.hpp>
|
||||
#include <azure/core/internal/json/json_optional.hpp>
|
||||
#include <azure/core/internal/json/json_serializable.hpp>
|
||||
@ -15,12 +13,13 @@
|
||||
|
||||
using namespace Azure::Security::KeyVault::Keys;
|
||||
using namespace Azure::Core::Json::_internal;
|
||||
using Azure::Security::KeyVault::_internal::UnixTimeConverter;
|
||||
|
||||
KeyPropertiesPageResult
|
||||
_detail::KeyPropertiesPageResultSerializer::KeyPropertiesPageResultDeserialize(
|
||||
Azure::Core::Http::RawResponse const& rawResponse)
|
||||
{
|
||||
using Azure::Core::_internal::PosixTimeConverter;
|
||||
|
||||
KeyPropertiesPageResult result;
|
||||
auto const& body = rawResponse.GetBody();
|
||||
auto jsonParser = json::parse(body);
|
||||
@ -44,22 +43,22 @@ _detail::KeyPropertiesPageResultSerializer::KeyPropertiesPageResultDeserialize(
|
||||
keyProperties.NotBefore,
|
||||
attributes,
|
||||
_detail::NbfPropertyName,
|
||||
UnixTimeConverter::UnixTimeToDatetime);
|
||||
PosixTimeConverter::PosixTimeToDateTime);
|
||||
JsonOptional::SetIfExists<int64_t, Azure::DateTime>(
|
||||
keyProperties.ExpiresOn,
|
||||
attributes,
|
||||
_detail::ExpPropertyName,
|
||||
UnixTimeConverter::UnixTimeToDatetime);
|
||||
PosixTimeConverter::PosixTimeToDateTime);
|
||||
JsonOptional::SetIfExists<int64_t, Azure::DateTime>(
|
||||
keyProperties.CreatedOn,
|
||||
attributes,
|
||||
_detail::CreatedPropertyName,
|
||||
UnixTimeConverter::UnixTimeToDatetime);
|
||||
PosixTimeConverter::PosixTimeToDateTime);
|
||||
JsonOptional::SetIfExists<int64_t, Azure::DateTime>(
|
||||
keyProperties.UpdatedOn,
|
||||
attributes,
|
||||
_detail::UpdatedPropertyName,
|
||||
UnixTimeConverter::UnixTimeToDatetime);
|
||||
PosixTimeConverter::PosixTimeToDateTime);
|
||||
}
|
||||
|
||||
// "Tags"
|
||||
@ -87,6 +86,8 @@ _detail::KeyPropertiesPageResultSerializer::KeyPropertiesPageResultDeserialize(
|
||||
DeletedKeyPageResult _detail::KeyPropertiesPageResultSerializer::DeletedKeyPageResultDeserialize(
|
||||
Azure::Core::Http::RawResponse const& rawResponse)
|
||||
{
|
||||
using Azure::Core::_internal::PosixTimeConverter;
|
||||
|
||||
auto const& body = rawResponse.GetBody();
|
||||
auto jsonParser = Azure::Core::Json::_internal::json::parse(body);
|
||||
|
||||
@ -115,12 +116,12 @@ DeletedKeyPageResult _detail::KeyPropertiesPageResultSerializer::DeletedKeyPageR
|
||||
deletedKey.DeletedDate,
|
||||
key,
|
||||
_detail::DeletedOnPropertyName,
|
||||
UnixTimeConverter::UnixTimeToDatetime);
|
||||
PosixTimeConverter::PosixTimeToDateTime);
|
||||
JsonOptional::SetIfExists<int64_t, Azure::DateTime>(
|
||||
deletedKey.ScheduledPurgeDate,
|
||||
key,
|
||||
_detail::ScheduledPurgeDatePropertyName,
|
||||
UnixTimeConverter::UnixTimeToDatetime);
|
||||
PosixTimeConverter::PosixTimeToDateTime);
|
||||
|
||||
deletedKeyPageResult.Items.emplace_back(deletedKey);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user