Implemented TokenManager #57

This commit is contained in:
kdeng00
2019-08-13 00:11:04 -04:00
parent da8d4a9002
commit f0a50ba70a
16 changed files with 176 additions and 241 deletions
+9 -3
View File
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.10)
project(icarus CXX)
project(icarus)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 17)
@@ -9,6 +9,7 @@ set(SOURCES
src/directory_manager.cpp
src/imageFile.cpp
src/metadata_retriever.cpp
src/token_manager.cpp
)
set(HEADERS
include/models.h
@@ -17,6 +18,11 @@ set(HEADERS
include/metadata_retriever.h
)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
add_subdirectory(cpr)
add_library(icarus SHARED ${SOURCES} ${HEADERS})
include_directories(include)
target_link_libraries(icarus "-lstdc++fs" tag)
include_directories(${CPR_INCLUDE_DIRS} include)
target_link_libraries(icarus "-lstdc++fs" tag ${CONAN_LIBS} ${CPR_LIBRARIES})
+5
View File
@@ -0,0 +1,5 @@
[requires]
jsonformoderncpp/3.7.0@vthiery/stable
[generators]
cmake
Submodule
+1
Submodule Libs/cpr added at feebd2fd54
+20
View File
@@ -20,4 +20,24 @@ struct Cover
char ImagePath[1024];
};
struct LoginRes
{
int UserId;
char Username[1024];
char Token[1024];
char TokenType[1024];
char Message[1024];
int Expiration;
};
struct TokenReq
{
char ClientId[1024];
char ClientSecret[1024];
char Audience[1024];
char GrantType[1024];
char URI[1024];
char Endpoint[1024];
};
#endif
+41
View File
@@ -0,0 +1,41 @@
#include <iostream>
#include <string>
#include <cstdlib>
#include <cpr/cpr.h>
#include <nlohmann/json.hpp>
#include "models.h"
extern "C"
{
LoginRes* retrieve_token(TokenReq *tok)
{
LoginRes *res = new LoginRes;
nlohmann::json reqObj;
reqObj["client_id"] = tok->ClientId;
reqObj["client_secret"] = tok->ClientSecret;
reqObj["audience"] = tok->Audience;
reqObj["grant_type"] = tok->GrantType;
std::string uri{tok->URI};
uri.append("/");
uri.append(tok->Endpoint);
auto r = cpr::Post(cpr::Url{uri},
cpr::Body{reqObj.dump()},
cpr::Header{{"Content-Type", "application/json"}});
auto post_res = nlohmann::json::parse(r.text);
strcpy(res->Token, post_res["access_token"].get<std::string>().c_str());
strcpy(res->TokenType, post_res["token_type"].get<std::string>().c_str());
res->Expiration = post_res["expires_in"].get<int>();
strcpy(res->Message, "Success");
return res;
}
}