nyanimedb/modules/bot/back/src/AuthImpersonation.cpp

34 lines
No EOL
1.5 KiB
C++

#include "AuthImpersonation.hpp"
nyanimed::AuthImpersonationClient::AuthImpersonationClient() {
const char* baseUrlEnv = std::getenv("NYANIMEDBAUTHURL");
const char* tokenEnv = std::getenv("NYANIMEDBAUTHTOKEN");
if (!baseUrlEnv || std::string(baseUrlEnv).empty()) {
throw std::runtime_error("Missing required environment variable: NYANIMEDBAUTHURL");
}
if (!tokenEnv || std::string(tokenEnv).empty()) {
throw std::runtime_error("Missing required environment variable: NYANIMEDBAUTHTOKEN");
}
m_baseUrl = baseUrlEnv;
m_authToken = tokenEnv;
auto config = std::make_shared<nyanimed::meow::auth::api::ApiConfiguration>();
config->setBaseUrl(utility::conversions::to_string_t(m_baseUrl));
m_apiClient = std::make_shared<nyanimed::meow::auth::api::ApiClient>(config);
m_authApi = std::make_shared<nyanimed::meow::auth::api::AuthApi>(m_apiClient);
}
pplx::task<std::shared_ptr<nyanimed::meow::auth::model::GetImpersonationToken_200_response>>
nyanimed::AuthImpersonationClient::getImpersonationToken(int64_t userId) const {
auto request = std::make_shared<nyanimed::meow::auth::model::GetImpersonationToken_request>();
request->setUserId(userId);
//request->setExternalId(externalId);
std::map<utility::string_t, utility::string_t> headers;
headers[U("Authorization")] = U("Bearer ") + utility::conversions::to_string_t(m_authToken);
return m_authApi->getImpersonationToken(request, headers);
}