4#ifndef _Stroika_Frameworks_Auth_OAuth_Client_h_
5#define _Stroika_Frameworks_Auth_OAuth_Client_h_ 1
7#include "Stroika/Frameworks/StroikaPreComp.h"
10#include "Stroika/Foundation/Common/Common.h"
11#include "Stroika/Foundation/Common/GUID.h"
12#include "Stroika/Foundation/Containers/KeyedCollection.h"
13#include "Stroika/Foundation/Containers/Sequence.h"
14#include "Stroika/Foundation/DataExchange/ObjectVariantMapper.h"
26namespace Stroika::Frameworks::Auth::OAuth {
71 String grant_type{
"authorization_code"sv};
92 nonvirtual
String ToString ()
const;
94 nonvirtual
TypedBLOB ToWireFormat ()
const;
125 optional<String> id_token;
129 optional<String> token_type;
131 nonvirtual
String ToString ()
const;
133 nonvirtual
TypedBLOB ToWireFormat ()
const;
141 struct TokenRevocationRequest {
143 optional<String> refresh_token;
144 optional<String> client_id;
145 optional<String> client_secret;
147 nonvirtual
String ToString ()
const;
149 nonvirtual
TypedBLOB ToWireFormat ()
const;
160 optional<String> name;
164 optional<String> given_name;
168 optional<String> family_name;
172 optional<String> email;
177 optional<URI> picture;
179 nonvirtual String ToString ()
const;
181 static UserInfo FromWireFormat (
const TypedBLOB& src);
183 static const ObjectVariantMapper kMapper;
218 nonvirtual
void RevokeTokens (
const TokenRevocationRequest& tr)
const;
String is like std::u32string, except it is much easier to use, often much more space efficient,...
Set<T> is a container of T, where once an item is added, additionally adds () do nothing.
ObjectVariantMapper can be used to map C++ types to and from variant-union types, which can be transp...
TypedBLOB is a named tuple<Memory::BLOB, optional<InternetMediaType>> - with friendlier names,...
simple wrapper on IO::Network::Transfer to do fetching (more configurability to do)
nonvirtual UserInfo GetUserInfo(const String &accessToken) const
nonvirtual TokenResponse GetToken(const TokenRequest &tr) const
nonvirtual void RevokeTokens(const TokenRevocationRequest &tr) const
Track configuration data about stuff that differentiates different OAuth providers - what URLs to use...
optional< String > code_verifier
optional< String > refresh_token
optional< String > client_secret
optional< URI > redirect_uri
optional< String > refresh_token