From b2f1d3bef9a88c0410fb70ce56529c33cc578c56 Mon Sep 17 00:00:00 2001 From: Guilherme Werner Date: Mon, 1 Jan 2024 15:42:12 -0300 Subject: [PATCH] New api from upstream --- examples/main.cpp | 4 +-- include/tribufu/api.h | 33 +++++++++++++++++++++++++ include/tribufu/client.h | 18 +++++--------- include/tribufu/options.h | 24 ++++++++++++++++++ include/tribufu/server.h | 22 +++++++++++++++++ src/api.cpp | 51 +++++++++++++++++++++++++++++++++++++++ src/client.cpp | 14 ++++++++--- src/options.cpp | 30 +++++++++++++++++++++++ src/server.cpp | 20 +++++++++++++++ 9 files changed, 198 insertions(+), 18 deletions(-) create mode 100644 include/tribufu/api.h create mode 100644 include/tribufu/options.h create mode 100644 include/tribufu/server.h create mode 100644 src/api.cpp create mode 100644 src/options.cpp create mode 100644 src/server.cpp diff --git a/examples/main.cpp b/examples/main.cpp index ac4926c3..497943a4 100644 --- a/examples/main.cpp +++ b/examples/main.cpp @@ -9,7 +9,7 @@ using namespace tribufu; int main(int argc, char **argv) { auto client = new TribufuClient(0, "client_secret"); - std::cout << "client_id: " << client->get_id() << std::endl; + std::cout << "client_id: " << client->get_client_id() << std::endl; json json_obj = { {"nome", "John"}, @@ -20,7 +20,7 @@ int main(int argc, char **argv) std::cout << json_str << std::endl; - client->get_token(); + //client->get_token(); return 0; } diff --git a/include/tribufu/api.h b/include/tribufu/api.h new file mode 100644 index 00000000..d073559c --- /dev/null +++ b/include/tribufu/api.h @@ -0,0 +1,33 @@ +// Copyright (c) Tribufu. All Rights Reserved. + +#pragma once + +#include +#include + +namespace tribufu +{ + static const char *VERSION = "0.0.4"; + static const char *API_URL = "https://api.tribufu.com"; + + class TRIBUFU_API TribufuApi + { + private: + std::string base_url; + TribufuApiOptions options; + HttpClient http; + + public: + TribufuApi(); + + TribufuApi(std::string api_key); + + TribufuApi(TribufuApiOptions options); + + ~TribufuApi(); + + static TribufuApi from_env(); + + static TribufuApi from_env(std::string prefix); + }; +} diff --git a/include/tribufu/client.h b/include/tribufu/client.h index 16bac735..d44dc340 100644 --- a/include/tribufu/client.h +++ b/include/tribufu/client.h @@ -3,27 +3,21 @@ #pragma once #include - -const char *VERSION = "0.0.4"; +#include namespace tribufu { - class TRIBUFU_API TribufuClient + class TRIBUFU_API TribufuClient : public TribufuApi { private: - uint64_t id; - std::string secret; - HttpClient http; + uint64_t client_id; + std::string client_secret; public: TribufuClient(uint64_t id, const std::string &secret); + ~TribufuClient(); - uint64_t get_id() const - { - return this->id; - } - - void get_token(); + uint64_t &get_client_id(); }; } diff --git a/include/tribufu/options.h b/include/tribufu/options.h new file mode 100644 index 00000000..6ab72f63 --- /dev/null +++ b/include/tribufu/options.h @@ -0,0 +1,24 @@ +// Copyright (c) Tribufu. All Rights Reserved. + +#pragma once + +#include + +namespace tribufu +{ + class TRIBUFU_API TribufuApiOptions + { + public: + std::string api_key; + std::string access_token; + std::string refresh_token; + float expires_in; + + public: + TribufuApiOptions(); + TribufuApiOptions(std::string api_key); + TribufuApiOptions(std::string access_token, std::string refresh_token, float expires_in); + TribufuApiOptions(std::string api_key, std::string access_token, std::string refresh_token, float expires_in); + ~TribufuApiOptions(); + }; +} diff --git a/include/tribufu/server.h b/include/tribufu/server.h new file mode 100644 index 00000000..f83d91e2 --- /dev/null +++ b/include/tribufu/server.h @@ -0,0 +1,22 @@ +// Copyright (c) Tribufu. All Rights Reserved. + +#pragma once + +#include +#include + +namespace tribufu +{ + class TRIBUFU_API TribufuServer : public TribufuClient + { + private: + uint64_t server_id; + + public: + TribufuServer(uint64_t server_id, uint64_t client_id, const std::string &client_secret); + + ~TribufuServer(); + + uint64_t &get_server_id(); + }; +} diff --git a/src/api.cpp b/src/api.cpp new file mode 100644 index 00000000..8aa3c226 --- /dev/null +++ b/src/api.cpp @@ -0,0 +1,51 @@ +// Copyright (c) Tribufu. All Rights Reserved. + +#include + +namespace tribufu +{ + TribufuApi::TribufuApi() + { + } + + TribufuApi::TribufuApi(std::string api_key) + { + this->options.api_key = api_key; + } + + TribufuApi::TribufuApi(TribufuApiOptions options) + { + this->options = options; + } + + TribufuApi::~TribufuApi() + { + } + + TribufuApi TribufuApi::from_env() + { + return TribufuApi::from_env(""); + } + + TribufuApi TribufuApi::from_env(std::string prefix) + { + std::string env_prefix = ""; + + if (prefix != "") + { + env_prefix = prefix + "_"; + } + + size_t required_size; + char api_key[64]; + + auto response = getenv_s(&required_size, api_key, sizeof(api_key), (env_prefix + "API_KEY").c_str()); + + if (response == 0 && required_size > 0) + { + return TribufuApi(api_key); + } + + return TribufuApi(); + } +} diff --git a/src/client.cpp b/src/client.cpp index 8c7b7255..87eb2304 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -4,17 +4,22 @@ namespace tribufu { - TribufuClient::TribufuClient(uint64_t id, const std::string &secret) + TribufuClient::TribufuClient(uint64_t client_id, const std::string &client_secret) : TribufuApi() { - this->id = id; - this->secret = secret; - this->http = HttpClient(); + this->client_id = client_id; + this->client_secret = client_secret; } TribufuClient::~TribufuClient() { } + uint64_t &TribufuClient::get_client_id() + { + return this->client_id; + } + + /* void TribufuClient::get_token() { try @@ -37,4 +42,5 @@ namespace tribufu std::cout << "exception: " << e.what() << std::endl; } } + */ } diff --git a/src/options.cpp b/src/options.cpp new file mode 100644 index 00000000..3558fdd8 --- /dev/null +++ b/src/options.cpp @@ -0,0 +1,30 @@ +// Copyright (c) Tribufu. All Rights Reserved. + +#include + +namespace tribufu +{ + TribufuApiOptions::TribufuApiOptions() : TribufuApiOptions(nullptr, nullptr, nullptr, 0.0f) + { + } + + TribufuApiOptions::TribufuApiOptions(std::string api_key) : TribufuApiOptions(api_key, nullptr, nullptr, 0.0f) + { + } + + TribufuApiOptions::TribufuApiOptions(std::string access_token, std::string refresh_token, float expires_in) : TribufuApiOptions(nullptr, access_token, refresh_token, expires_in) + { + } + + TribufuApiOptions::TribufuApiOptions(std::string api_key, std::string access_token, std::string refresh_token, float expires_in) + { + this->api_key = api_key; + this->access_token = access_token; + this->refresh_token = refresh_token; + this->expires_in = expires_in; + } + + TribufuApiOptions::~TribufuApiOptions() + { + } +} diff --git a/src/server.cpp b/src/server.cpp new file mode 100644 index 00000000..52a0cca2 --- /dev/null +++ b/src/server.cpp @@ -0,0 +1,20 @@ +// Copyright (c) Tribufu. All Rights Reserved. + +#include + +namespace tribufu +{ + TribufuServer::TribufuServer(uint64_t server_id, uint64_t client_id, const std::string &client_secret) : TribufuClient(client_id, client_secret) + { + this->server_id = server_id; + } + + TribufuServer::~TribufuServer() + { + } + + uint64_t &TribufuServer::get_server_id() + { + return this->server_id; + } +}