10Duke Scale C++ Client
Loading...
Searching...
No Matches
OAuthStateServiceImpl.h
1#ifndef TENDUKE_OAUTH_OAUTHSTATESERVICEIMPL_H
2#define TENDUKE_OAUTH_OAUTHSTATESERVICEIMPL_H
3
4#include "./OAuthStateService.h"
5#include "./OAuthTokenRequest.h"
6#include "./OAuthConfiguration.h"
7
8#include "http/HTTPClient.h"
9#include "json/JSONParser.h"
10#include "time/Clock.h"
11
12#include <memory>
13
14
15namespace tenduke { namespace oauth {
16
17
22{
23public:
37 std::string accessToken,
38 std::string refreshToken,
39 int64_t expiresAt,
40 bool infinite,
41 std::map<std::string, std::string> additionalProperties,
42 std::shared_ptr<const OAuthConfiguration> config,
43 std::shared_ptr<const tenduke::http::HTTPClient> httpClient,
44 std::shared_ptr<const tenduke::json::JSONParser> jsonParser,
45 std::shared_ptr< tenduke::time::Clock> clock
46 ) : accessToken(std::move(accessToken)), refreshToken(std::move(refreshToken)), expiresAt(expiresAt), infinite(infinite),
47 additionalProperties(std::move(additionalProperties)), config(std::move(config)), http(std::move(httpClient)),
48 parseJSON(std::move(jsonParser)), clock(std::move(clock))
49 {}
50
63 std::string accessToken,
64 std::string refreshToken,
65 int64_t expiresAt,
66 std::map<std::string, std::string> additionalProperties,
67 std::shared_ptr<const OAuthConfiguration> config,
68 std::shared_ptr<const tenduke::http::HTTPClient> httpClient,
69 std::shared_ptr<const tenduke::json::JSONParser> jsonParser,
70 std::shared_ptr< tenduke::time::Clock> clock
71 ) : OAuthStateServiceImpl(std::move(accessToken), std::move(refreshToken), expiresAt,
72 (expiresAt == tenduke::oauth::TOKEN_DOES_NOT_EXPIRE), std::move(additionalProperties), std::move(config),
73 std::move(httpClient), std::move(jsonParser), std::move(clock))
74 {}
75
76 // tenduke::oauth::OAuthStateService interface
77 const std::string & getAccessToken() const override {return accessToken;}
78 const std::string & getRefreshToken() const override {return refreshToken;}
79 int64_t getExpiresAt() const override {return expiresAt;}
80 const std::string * getAdditionalProperty(const std::string &name) const override;
81 bool hasAccessToken() const override {return ! accessToken.empty();}
82 bool doesExpire() const override {return !infinite;}
83 bool isRefreshable() const override {return !refreshToken.empty();}
84
85 bool refresh() override;
86
87protected:
92 virtual std::map<std::string, std::string> buildRefreshRequestParameters() const;
93
98 virtual std::unique_ptr<OAuthTokenRequest> createRefreshTokenRequest() const;
99
100private:
101 std::string accessToken;
102 std::string refreshToken;
103 int64_t expiresAt;
104 bool infinite; // If true, the token does not expire.
105
106 std::map<std::string, std::string> additionalProperties;
107
108 const std::shared_ptr<const OAuthConfiguration> config;
109 const std::shared_ptr<const tenduke::http::HTTPClient> http;
110 const std::shared_ptr<const tenduke::json::JSONParser> parseJSON;
111 const std::shared_ptr<tenduke::time::Clock> clock;
112};
113
114
115}}
116
117#endif // TENDUKE_OAUTH_OAUTHSTATESERVICEIMPL_H
Default implementation of tenduke::oauth::OAuthStateService.
Definition OAuthStateServiceImpl.h:22
virtual std::map< std::string, std::string > buildRefreshRequestParameters() const
Builds parameters for refresh-request.
Definition OAuthStateServiceImpl.cpp:51
bool hasAccessToken() const override
Returns true if the state contains an access token.
Definition OAuthStateServiceImpl.h:81
OAuthStateServiceImpl(std::string accessToken, std::string refreshToken, int64_t expiresAt, std::map< std::string, std::string > additionalProperties, std::shared_ptr< const OAuthConfiguration > config, std::shared_ptr< const tenduke::http::HTTPClient > httpClient, std::shared_ptr< const tenduke::json::JSONParser > jsonParser, std::shared_ptr< tenduke::time::Clock > clock)
Constructs new instance.
Definition OAuthStateServiceImpl.h:62
const std::string & getAccessToken() const override
Returns the access token.
Definition OAuthStateServiceImpl.h:77
OAuthStateServiceImpl(std::string accessToken, std::string refreshToken, int64_t expiresAt, bool infinite, std::map< std::string, std::string > additionalProperties, std::shared_ptr< const OAuthConfiguration > config, std::shared_ptr< const tenduke::http::HTTPClient > httpClient, std::shared_ptr< const tenduke::json::JSONParser > jsonParser, std::shared_ptr< tenduke::time::Clock > clock)
Constructs new instance.
Definition OAuthStateServiceImpl.h:36
virtual std::unique_ptr< OAuthTokenRequest > createRefreshTokenRequest() const
Creates refresh-token request.
Definition OAuthStateServiceImpl.cpp:38
const std::string * getAdditionalProperty(const std::string &name) const override
Returns additional property returned by the server.
Definition OAuthStateServiceImpl.cpp:10
bool doesExpire() const override
Returns true if the access token expires.
Definition OAuthStateServiceImpl.h:82
int64_t getExpiresAt() const override
Returns timestamp (as epoch seconds) when the current access token expires.
Definition OAuthStateServiceImpl.h:79
bool isRefreshable() const override
Returns true if the state is refreshable (i.e.
Definition OAuthStateServiceImpl.h:83
const std::string & getRefreshToken() const override
Returns the refresh token.
Definition OAuthStateServiceImpl.h:78
bool refresh() override
Refresh the state, i.e.
Definition OAuthStateServiceImpl.cpp:23
OAuth-state after successful authentication.
Definition OAuthStateService.h:17
OAuth services.
Definition AccessTokenRequestAuthenticator.h:8
const std::int64_t TOKEN_DOES_NOT_EXPIRE
Magic value to denote that the access token does not expire.
Definition OAuthState.h:12
Root for classes, functions and globals of 10Duke C++ Client.
Definition BackendConfiguration.h:7