1#ifndef SOURCEMETA_CORE_OAUTH_METADATA_PROVIDER_H_
2#define SOURCEMETA_CORE_OAUTH_METADATA_PROVIDER_H_
4#ifndef SOURCEMETA_CORE_OAUTH_EXPORT
5#include <sourcemeta/core/oauth_export.h>
8#include <sourcemeta/core/oauth_metadata.h>
18namespace sourcemeta::core {
21#pragma warning(disable : 4251)
63 std::optional<std::chrono::seconds>
max_age;
76 std::function<std::optional<FetchResult>(std::string_view url)>;
81 using Clock = std::function<std::chrono::system_clock::time_point()>;
119 [[nodiscard]]
auto metadata() -> std::shared_ptr<const OAuthServerMetadata>;
124 [[nodiscard]]
auto refresh() -> std::shared_ptr<const OAuthServerMetadata>;
128 const std::chrono::system_clock::time_point now) -> bool;
129 auto fetch_and_install_locked(
const std::chrono::system_clock::time_point now)
132 const std::string issuer_;
138 std::shared_ptr<const OAuthServerMetadata> metadata_;
139 std::chrono::system_clock::time_point next_refresh_{};
209 [[nodiscard]]
auto metadata() -> std::shared_ptr<const OAuthResourceMetadata>;
214 [[nodiscard]]
auto refresh() -> std::shared_ptr<const OAuthResourceMetadata>;
217 auto fetch_and_install_locked(
const std::chrono::system_clock::time_point now)
220 const std::string resource_;
225 std::shared_ptr<const OAuthResourceMetadata> metadata_;
226 std::chrono::system_clock::time_point next_refresh_{};
230#pragma warning(default : 4251)
OAuthMetadataProvider::FetchResult FetchResult
Definition oauth_metadata_provider.h:171
auto metadata() -> std::shared_ptr< const OAuthResourceMetadata >
std::function< std::chrono::system_clock::time_point()> Clock
Definition oauth_metadata_provider.h:81
OAuthMetadataProvider::Clock Clock
Definition oauth_metadata_provider.h:179
OAuthMetadataProvider(std::string issuer, const OAuthWellKnownKind kind, Fetcher fetcher, Options options, Clock clock)
Construct a provider overriding the policy and the clock.
OAuthMetadataProvider::Fetcher Fetcher
Definition oauth_metadata_provider.h:175
OAuthMetadataProvider(std::string issuer, const OAuthWellKnownKind kind, Fetcher fetcher)
OAuthResourceMetadataProvider(std::string resource, Fetcher fetcher)
OAuthResourceMetadataProvider(std::string resource, Fetcher fetcher, Options options)
Construct a provider overriding the caching policy.
auto refresh() -> std::shared_ptr< const OAuthServerMetadata >
OAuthResourceMetadataProvider(const OAuthResourceMetadataProvider &)=delete
OAuthMetadataProvider(std::string issuer, const OAuthWellKnownKind kind, Fetcher fetcher, Options options)
Construct a provider overriding the caching policy.
std::function< std::optional< FetchResult >(std::string_view url)> Fetcher
Definition oauth_metadata_provider.h:75
OAuthMetadataProvider::Options Options
Definition oauth_metadata_provider.h:183
OAuthResourceMetadataProvider(std::string resource, Fetcher fetcher, Options options, Clock clock)
Construct a provider overriding the policy and the clock.
auto metadata() -> std::shared_ptr< const OAuthServerMetadata >
OAuthMetadataProvider(const OAuthMetadataProvider &)=delete
auto refresh() -> std::shared_ptr< const OAuthResourceMetadata >
OAuthWellKnownKind
Definition oauth_metadata.h:21