/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include <aws/core/Core_EXPORTS.h> #include <aws/core/utils/memory/stl/AWSString.h> #include <aws/core/utils/DateTime.h> namespace Aws { namespace Auth { /** * Simple data object around aws credentials */ class AWS_CORE_API AWSBearerToken { public: /** * Initializes an empty token. * Empty token is not expired by default. * Token expires only if an expiration date is explicitly set. */ AWSBearerToken() : m_expiration((std::chrono::time_point<std::chrono::system_clock>::max)()) { } /** * Initializes object with token. * Expiration date is set to "never expire". */ AWSBearerToken(const Aws::String& token) : m_token(token), m_expiration((std::chrono::time_point<std::chrono::system_clock>::max)()) { } /** * Initializes object with token and expiration date. */ AWSBearerToken(const Aws::String& token, Aws::Utils::DateTime expiration) : m_token(token), m_expiration(expiration) { } /** * If token has not been initialized or been initialized to empty value. * Expiration date does not affect the result of this function. */ inline bool IsEmpty() const { return m_token.empty(); } inline bool IsExpired() const { return m_expiration <= Aws::Utils::DateTime::Now(); } inline bool IsExpiredOrEmpty() const { return IsEmpty() || IsExpired(); } /** * Gets the underlying token */ inline const Aws::String& GetToken() const { return m_token; } /** * Gets the expiration date of the token */ inline Aws::Utils::DateTime GetExpiration() const { return m_expiration; } /** * Sets the underlying token. Copies from the parameter token */ inline void SetToken(const Aws::String& token) { m_token = token; } /** * Sets the underlying token. Moves from the parameter token */ inline void SetToken(Aws::String&& token) { m_token = std::move(token); } /** * Sets the expiration date of the credential */ inline void SetExpiration(const Aws::Utils::DateTime& expiration) { m_expiration = expiration; } /** * Sets the expiration date of the credential */ inline void SetExpiration(Aws::Utils::DateTime&& expiration) { m_expiration = std::move(expiration); } private: Aws::String m_token; Aws::Utils::DateTime m_expiration; }; } }