24#include "json/value.h"
25#include "openssl/evp.h"
77 static std::unique_ptr<CredentialSource>
Make(
const std::string& credential);
91 const std::string& oauth_contents);
94 HttpClient& http_client,
const std::string& client_id,
95 const std::string& client_secret,
const std::string& refresh_token);
99 const std::string& client_id,
100 const std::string& client_secret,
101 const std::string& refresh_token);
104 HttpClient& http_client,
const Json::Value& credential);
120 HttpClient& http_client,
const Json::Value& service_account_json,
121 const std::string& scope);
Definition: credential_source.h:32
virtual Result< std::string > Credential()=0
virtual ~CredentialSource()=default
Definition: credential_source.h:73
FixedCredentialSource(const std::string &credential)
Definition: credential_source.cc:170
static std::unique_ptr< CredentialSource > Make(const std::string &credential)
Definition: credential_source.cc:176
Result< std::string > Credential() override
Definition: credential_source.cc:174
std::string credential_
Definition: credential_source.h:81
Definition: http_client.h:95
Definition: credential_source.h:87
HttpClient & http_client_
Definition: credential_source.h:108
std::string refresh_token_
Definition: credential_source.h:111
static Result< std::unique_ptr< RefreshTokenCredentialSource > > FromOauth2ClientFile(HttpClient &http_client, const std::string &oauth_contents)
Definition: credential_source.cc:204
Result< std::pair< std::string, std::chrono::seconds > > Refresh() override
Definition: credential_source.cc:299
std::string client_id_
Definition: credential_source.h:109
RefreshTokenCredentialSource(HttpClient &http_client, const std::string &client_id, const std::string &client_secret, const std::string &refresh_token)
Definition: credential_source.cc:283
static Result< std::unique_ptr< RefreshTokenCredentialSource > > FromJson(HttpClient &http_client, const Json::Value &credential)
Definition: credential_source.cc:183
std::string client_secret_
Definition: credential_source.h:110
static Result< std::unique_ptr< CredentialSource > > Make(HttpClient &http_client, const std::string &client_id, const std::string &client_secret, const std::string &refresh_token)
Definition: credential_source.cc:291
Definition: credential_source.h:40
std::mutex latest_credential_mutex_
Definition: credential_source.h:51
std::chrono::steady_clock::time_point expiration_
Definition: credential_source.h:52
RefreshingCredentialSource()
Definition: credential_source.cc:124
std::string latest_credential_
Definition: credential_source.h:50
virtual Result< std::pair< std::string, std::chrono::seconds > > Refresh()=0
virtual Result< std::string > Credential() final override
Definition: credential_source.cc:127
Definition: credential_source.h:117
HttpClient & http_client_
Definition: credential_source.h:128
Result< std::pair< std::string, std::chrono::seconds > > Refresh() override
Definition: credential_source.cc:361
std::string scope_
Definition: credential_source.h:130
ServiceAccountOauthCredentialSource(HttpClient &http_client)
Definition: credential_source.cc:356
std::unique_ptr< EVP_PKEY, void(*)(EVP_PKEY *)> private_key_
Definition: credential_source.h:131
std::string email_
Definition: credential_source.h:129
static Result< std::unique_ptr< ServiceAccountOauthCredentialSource > > FromJson(HttpClient &http_client, const Json::Value &service_account_json, const std::string &scope)
Definition: credential_source.cc:329
Definition: alloc_driver.h:20
tl::expected< T, StackTraceError > Result
Definition: result_type.h:30