mirror of
https://github.com/Expand-sys/CCash
synced 2026-03-22 20:47:10 +11:00
✨ MIN_API_SUPPORT
This commit is contained in:
parent
a68e86b216
commit
09422995e8
9 changed files with 80 additions and 14 deletions
|
|
@ -87,6 +87,12 @@ else()
|
|||
set(API_VERSION_VAL 2)
|
||||
endif()
|
||||
|
||||
if(DEFINED MIN_API_SUPPORT)
|
||||
set(MIN_API_SUPPORT_VAL MIN_API_SUPPORT)
|
||||
else()
|
||||
set(MIN_API_SUPPORT_VAL 1)
|
||||
endif()
|
||||
|
||||
configure_file(ccash_config.hpp.in ${CMAKE_CURRENT_SOURCE_DIR}/include/ccash_config.hpp)
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC include)
|
||||
|
|
|
|||
|
|
@ -90,9 +90,11 @@ int main(int argc, char **argv)
|
|||
Op(Bank::VerifyPassword("twix", "root"), "verify pass: ", 1000000);
|
||||
Op(Bank::ChangePassword("twix", "root"), "change pass: ", 1000000);
|
||||
#if MAX_LOG_SIZE > 0
|
||||
#if MIN_API_SUPPORT == 1
|
||||
Op(Bank::GetLogs("twix"), "get logs init: ", 1);
|
||||
Op(Bank::GetLogs("twix"), "get logs cached: ", 1000000);
|
||||
#if API_VERSION >= 2
|
||||
#endif
|
||||
#if (API_VERSION >= 2) && (MIN_API_SUPPORT <= 2)
|
||||
Op(Bank::GetLogsV2("twix"), "get logs init (v2): ", 1);
|
||||
Op(Bank::GetLogsV2("twix"), "get logs cached (v2): ", 1000000);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@ etc
|
|||
*/
|
||||
#define API_VERSION @API_VERSION_VAL@
|
||||
|
||||
// doesnt compile api endpoints below MIN_API_SUPPORT
|
||||
#define MIN_API_SUPPORT @MIN_API_SUPPORT_VAL@
|
||||
|
||||
#define MULTI_THREADED @MULTI_THREADED_VAL@
|
||||
|
||||
#define ADD_USER_OPEN @ADD_USER_OPEN_VAL@
|
||||
|
|
@ -43,12 +43,17 @@ public:
|
|||
static size_t SumBal() noexcept;
|
||||
|
||||
static BankResponse GetBal(const std::string &name) noexcept;
|
||||
|
||||
#if MAX_LOG_SIZE > 0
|
||||
#if MIN_API_SUPPORT == 1
|
||||
static BankResponse GetLogs(const std::string &name) noexcept;
|
||||
#if API_VERSION >= 2
|
||||
#endif
|
||||
|
||||
#if (API_VERSION >= 2) && (MIN_API_SUPPORT <= 2)
|
||||
static BankResponse GetLogsV2(const std::string &name) noexcept;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static BankResponse SendFunds(const std::string &a_name, const std::string &b_name, uint32_t amount) noexcept;
|
||||
static bool VerifyPassword(const std::string &name, const std::string_view &attempt) noexcept;
|
||||
|
||||
|
|
@ -56,6 +61,7 @@ public:
|
|||
static BankResponse SetBal(const std::string &name, uint32_t amount) noexcept;
|
||||
static BankResponse ImpactBal(const std::string &name, int64_t amount) noexcept;
|
||||
static bool Contains(const std::string &name) noexcept;
|
||||
|
||||
#if MAX_LOG_SIZE > 0
|
||||
static BankResponse PruneUsers(time_t threshold_time, uint32_t threshold_bal) noexcept;
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ class api : public HttpController<api>
|
|||
public:
|
||||
static void GetBal(req_args, const std::string &name);
|
||||
static void GetLogs(req_args);
|
||||
#if API_VERSION >= 2
|
||||
#if (API_VERSION >= 2) && (MIN_API_SUPPORT <= 2)
|
||||
static void GetLogsV2(req_args);
|
||||
#endif
|
||||
static void SendFunds(req_args);
|
||||
|
|
@ -38,18 +38,13 @@ public:
|
|||
|
||||
METHOD_LIST_BEGIN
|
||||
|
||||
#if MIN_API_SUPPORT == 1
|
||||
//Usage
|
||||
METHOD_ADD(api::GetBal, "/v1/user/balance?name={name}", Get, Options, "JsonFilter<false>");
|
||||
#if MAX_LOG_SIZE > 0
|
||||
METHOD_ADD(api::GetLogs, "/v1/user/log", Get, Options, "JsonFilter<false>", "UserFilter<true, false>");
|
||||
#if API_VERSION >= 2
|
||||
METHOD_ADD(api::GetLogsV2, "/v2/user/log", Get, Options, "JsonFilter<false>", "UserFilter<true, false>");
|
||||
#endif
|
||||
#else
|
||||
METHOD_ADD(api::GetLogs, "/v1/user/log", Get, Options, "JsonFilter<false>");
|
||||
#if API_VERSION >= 2
|
||||
METHOD_ADD(api::GetLogsV2, "/v2/user/log", Get, Options, "JsonFilter<false>");
|
||||
#endif
|
||||
#endif
|
||||
METHOD_ADD(api::SendFunds, "/v1/user/transfer", Post, Options, "JsonFilter<true>", "UserFilter<true, false>"); //expects ["name"](string) and ["amount"](uint32)
|
||||
METHOD_ADD(api::VerifyPassword, "/v1/user/verify_password", Post, Options, "UserFilter<false, false>", "JsonFilter<false>");
|
||||
|
|
@ -73,6 +68,39 @@ public:
|
|||
METHOD_ADD(api::AdminAddUser, "/v1/admin/user/register", Post, Options, "JsonFilter<true>", "UserFilter<false, true>"); //expects ["name"](string) ["amount"](uint32) ["pass"](string)
|
||||
METHOD_ADD(api::DelSelf, "/v1/user/delete", Delete, Options, "UserFilter<true, false>", "JsonFilter<false>");
|
||||
METHOD_ADD(api::AdminDelUser, "/v1/admin/user/delete", Delete, Options, "JsonFilter<true>", "UserFilter<false, true>"); //expects ["name"](string)
|
||||
#endif
|
||||
|
||||
#if (API_VERSION >= 2) && (MIN_API_SUPPORT <= 2)
|
||||
//Usage
|
||||
METHOD_ADD(api::GetBal, "/v2/user/balance?name={name}", Get, Options, "JsonFilter<false>");
|
||||
#if MAX_LOG_SIZE > 0
|
||||
METHOD_ADD(api::GetLogsV2, "/v2/user/log", Get, Options, "JsonFilter<false>", "UserFilter<true, false>");
|
||||
#else
|
||||
METHOD_ADD(api::GetLogsV2, "/v2/user/log", Get, Options, "JsonFilter<false>");
|
||||
#endif
|
||||
METHOD_ADD(api::SendFunds, "/v2/user/transfer", Post, Options, "JsonFilter<true>", "UserFilter<true, false>"); //expects ["name"](string) and ["amount"](uint32)
|
||||
METHOD_ADD(api::VerifyPassword, "/v2/user/verify_password", Post, Options, "UserFilter<false, false>", "JsonFilter<false>");
|
||||
|
||||
//Meta Usage
|
||||
METHOD_ADD(api::ChangePassword, "/v2/user/change_password", Patch, Options, "JsonFilter<true>", "UserFilter<true, false>"); //expects ["pass"](string)
|
||||
METHOD_ADD(api::AdminChangePassword, "/v2/admin/user/change_password", Patch, Options, "JsonFilter<true>", "UserFilter<false, true>"); //expects ["name"](string) and ["pass"](string)
|
||||
METHOD_ADD(api::SetBal, "/v2/admin/set_balance", Patch, Options, "JsonFilter<true>", "UserFilter<false, true>"); //expects ["name"](string) and ["amount"](uint32)
|
||||
METHOD_ADD(api::ImpactBal, "/v2/admin/impact_balance", Post, Options, "JsonFilter<true>", "UserFilter<false, true>"); //expects ["name"](string) and ["amount"](uint32)
|
||||
|
||||
//System Usage
|
||||
METHOD_ADD(api::Help, "/v2/help", Get, Options);
|
||||
METHOD_ADD(api::Close, "/v2/admin/shutdown", Post, Options, "UserFilter<false, true>", "JsonFilter<false>");
|
||||
METHOD_ADD(api::Contains, "/v2/user/exists?name={name}", Get, Options, "JsonFilter<false>");
|
||||
METHOD_ADD(api::AdminVerifyAccount, "/v2/admin/verify_account", Post, Options, "UserFilter<false, true>", "JsonFilter<false>");
|
||||
METHOD_ADD(api::PruneUsers, "/v2/admin/prune_users", Post, "UserFilter<false, true>", "JsonFilter<true>"); //expects ["time"](int64) and ["amount"](uint32)
|
||||
METHOD_ADD(api::ApiProperties, "/properties", Get, Options);
|
||||
|
||||
//User Managment
|
||||
METHOD_ADD(api::AddUser, "/v2/user/register", Post, Options); //expects ["name"](string) ["pass"](string)
|
||||
METHOD_ADD(api::AdminAddUser, "/v2/admin/user/register", Post, Options, "JsonFilter<true>", "UserFilter<false, true>"); //expects ["name"](string) ["amount"](uint32) ["pass"](string)
|
||||
METHOD_ADD(api::DelSelf, "/v2/user/delete", Delete, Options, "UserFilter<true, false>", "JsonFilter<false>");
|
||||
METHOD_ADD(api::AdminDelUser, "/v2/admin/user/delete", Delete, Options, "JsonFilter<true>", "UserFilter<false, true>"); //expects ["name"](string)
|
||||
#endif
|
||||
|
||||
METHOD_LIST_END
|
||||
};
|
||||
|
|
@ -10,9 +10,13 @@ using namespace simdjson;
|
|||
struct Log
|
||||
{
|
||||
private:
|
||||
|
||||
#if MIN_API_SUPPORT == 1
|
||||
ChangeFlag<true> log_flag;
|
||||
std::string log_snapshot = "null";
|
||||
#if API_VERSION >= 2
|
||||
#endif
|
||||
|
||||
#if (API_VERSION >= 2) && (MIN_API_SUPPORT <= 2)
|
||||
ChangeFlag<true> log_flag_v2;
|
||||
std::string log_snapshot_v2 = "null";
|
||||
#endif
|
||||
|
|
@ -20,8 +24,11 @@ private:
|
|||
public:
|
||||
std::deque<Transaction> data;
|
||||
|
||||
#if MIN_API_SUPPORT == 1
|
||||
std::string GetLogs(const std::string& name) noexcept;
|
||||
#if API_VERSION >= 2
|
||||
#endif
|
||||
|
||||
#if (API_VERSION >= 2) && (MIN_API_SUPPORT <= 2)
|
||||
std::string GetLogsV2() noexcept;
|
||||
#endif
|
||||
void AddTrans(const std::string &counterparty_str, bool receiving, uint32_t amount, time_t time) noexcept;
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@ BankResponse Bank::GetBal(const std::string &name) noexcept
|
|||
}
|
||||
}
|
||||
#if MAX_LOG_SIZE > 0
|
||||
#if MIN_API_SUPPORT == 1
|
||||
BankResponse Bank::GetLogs(const std::string &name) noexcept
|
||||
{
|
||||
BankResponse res;
|
||||
|
|
@ -98,7 +99,9 @@ BankResponse Bank::GetLogs(const std::string &name) noexcept
|
|||
return res;
|
||||
}
|
||||
}
|
||||
#if API_VERSION >= 2
|
||||
#endif
|
||||
|
||||
#if (API_VERSION >= 2) && (MIN_API_SUPPORT <= 2)
|
||||
BankResponse Bank::GetLogsV2(const std::string &name) noexcept
|
||||
{
|
||||
BankResponse res;
|
||||
|
|
@ -113,6 +116,7 @@ BankResponse Bank::GetLogsV2(const std::string &name) noexcept
|
|||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
BankResponse Bank::SendFunds(const std::string &a_name, const std::string &b_name, uint32_t amount) noexcept
|
||||
{
|
||||
if (!amount)
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@ void api::GetBal(req_args, const std::string &name)
|
|||
{
|
||||
RESPONSE_PARSE(Bank::GetBal(name));
|
||||
}
|
||||
|
||||
#if MIN_API_SUPPORT == 1
|
||||
void api::GetLogs(req_args)
|
||||
{
|
||||
#if MAX_LOG_SIZE > 0
|
||||
|
|
@ -40,7 +42,9 @@ void api::GetLogs(req_args)
|
|||
callback(resp);
|
||||
#endif
|
||||
}
|
||||
#if API_VERSION >= 2
|
||||
#endif
|
||||
|
||||
#if (API_VERSION >= 2) && (MIN_API_SUPPORT <= 2)
|
||||
void api::GetLogsV2(req_args)
|
||||
{
|
||||
#if MAX_LOG_SIZE > 0
|
||||
|
|
@ -53,6 +57,7 @@ void api::GetLogsV2(req_args)
|
|||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
void api::SendFunds(req_args)
|
||||
{
|
||||
SIMD_JSON_GEN;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ void Log::AddTrans(const std::string &counterparty_str, bool receiving, uint32_t
|
|||
data.emplace_back(counterparty_str, receiving, amount, time);
|
||||
}
|
||||
|
||||
#if MIN_API_SUPPORT == 1
|
||||
std::string Log::GetLogs(const std::string& name) noexcept
|
||||
{
|
||||
if (log_flag.GetChangeState() && data.size()) //if there are changes
|
||||
|
|
@ -40,6 +41,9 @@ std::string Log::GetLogs(const std::string& name) noexcept
|
|||
|
||||
return log_snapshot;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (API_VERSION >= 2) && (MIN_API_SUPPORT <= 2)
|
||||
std::string Log::GetLogsV2() noexcept
|
||||
{
|
||||
if (log_flag_v2.GetChangeState() && data.size()) //if there are changes
|
||||
|
|
@ -70,3 +74,4 @@ std::string Log::GetLogsV2() noexcept
|
|||
|
||||
return log_snapshot_v2;
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue