From 66f29b795f9690e3f13234b7949096e4a9c8d198 Mon Sep 17 00:00:00 2001 From: EntireTwix Date: Wed, 21 Apr 2021 20:16:36 -0700 Subject: [PATCH] :bug: many GetLogs Bugs --- .gitignore | 3 ++- config.json | 21 ++++++++++++++------- include/bank.hpp | 24 +++++++++++++++--------- include/bank_f.hpp | 2 +- 4 files changed, 32 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 6a8bc10..0e491cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .vscode -build \ No newline at end of file +build +config.json \ No newline at end of file diff --git a/config.json b/config.json index 9f4458f..5576c78 100644 --- a/config.json +++ b/config.json @@ -1,9 +1,16 @@ { - "listeners": [ - { - "address": "0.0.0.0", - "port": 80, - "https": false - } - ] + "listeners": [ + { + "address": "0.0.0.0", + "port": 80, + "https": false + }, + { + "address": "0.0.0.0", + "port": 443, + "https": true, + "cert": "", + "key": "" + } + ] } \ No newline at end of file diff --git a/include/bank.hpp b/include/bank.hpp index f38c0d6..583a641 100644 --- a/include/bank.hpp +++ b/include/bank.hpp @@ -200,27 +200,33 @@ public: state = XXH3_64bits(attempt.data(), attempt.size()) == u.password; }); - if (state) + if (!state) { - Json::Value res; - logs.if_contains(name, [&res](const Log &l) { - for (uint32_t i = l.data.size() - 1; i >= 0; --i) + return 0; + } + + Json::Value res; + if (!(logs.if_contains(name, [&res](const Log &l) { + for (uint32_t i = l.data.size() - 1; i > 0; --i) { if (!l.data[i].amount) { - break; + return; } res[99 - i]["to"] = l.data[i].to; res[99 - i]["from"] = l.data[i].from; res[99 - i]["amount"] = l.data[i].amount; } - }); - return res; + res = 1; + }))) + { + return -1; } - return users.contains(name); // so that if the user has no logs, but does exist + return res; } - void Save() + void + Save() { Json::StreamWriterBuilder builder; const std::unique_ptr writer(builder.newStreamWriter()); diff --git a/include/bank_f.hpp b/include/bank_f.hpp index 3d3ade8..d6c4000 100644 --- a/include/bank_f.hpp +++ b/include/bank_f.hpp @@ -37,7 +37,7 @@ public: { auto resp = HttpResponse::newHttpResponse(); auto handlerInfo = app().getHandlersInfo(); - resp->setBody("

ALL FUNCTIONS (that have args) ARE EXPECTING JSON AS DATA TYPE

/BankF/admin/close (POST)

 attempt  - admin password

Closes and Saves the server.

/BankF/user (POST)

 name  - name of the user being added

 init_pass  - initial password for the user being added

Adds a user to the bank

/BankF/admin/user (POST)

 name  - name of the user being added

 attempt  - admin password required to add user with balance

 init_bal  - initial balance for user being added

 init_pass  - initial password for user being added

Adds a user with initial balance

/BankF/sendfunds (POST)

 a_name  - sender's name

 b_name  - reciever's name

 amount  - amount being sent

 attempt  - password of sender

Sends money from one user to another

/BankF/changepass (PATCH)

 name  - name of user's password being changes

 attempt  - password of user being changed

 new_pass  - new password to replace the current user's password

Changes password of a user, returns -1 if user doesnt exist

/BankF/admin/{name}/bal (PATCH)

 name  - the name of the user being set

 attempt  - the admin password required

 amount  - the new balance of the user

Sets the balance of a user

/BankF/help (GET)

the page you're looking at right now!

/BankF/vpass (POST)

 name  - name of user being verified

 attempt  - password being verified

returns 0 or 1 based on if [attempt] is equal to the password of the user [name], or -1 if user does not exist. The intended usage for this function is for connected services

/BankF/contains/{name} (GET)

returns a 0 or 1 based on if the bank contains the user

/BankF/{name}/bal (GET)

returns the balance of a given user's name, if -1 that means the user does not exist

/BankF/admin/vpass (POST)

 attempt  - admin password

Verifies if password entered is admin password

/BankF/{name}/log (POST)

 attempt  - user password

returns a list of last 100 transactions, 0 if user not found, returns 1 if user exists but has no logs

/BankF/user (DELETE)

 name  - name of user being deleted

 attempt  - password of user being deleted

Deletes a user with the password of the user as verification

/BankF/admin/user (DELETE)

 name  - name of user being deleted

 attempt  - admin password

Deletes a user with admin password as verification

"); + resp->setBody("

ALL FUNCTIONS (that have args) ARE EXPECTING JSON AS DATA TYPE

/BankF/admin/close (POST)

 attempt  - admin password

Closes and Saves the server.

/BankF/user (POST)

 name  - name of the user being added

 init_pass  - initial password for the user being added

Adds a user to the bank

/BankF/admin/user (POST)

 name  - name of the user being added

 attempt  - admin password required to add user with balance

 init_bal  - initial balance for user being added

 init_pass  - initial password for user being added

Adds a user with initial balance

/BankF/sendfunds (POST)

 a_name  - sender's name

 b_name  - reciever's name

 amount  - amount being sent

 attempt  - password of sender

Sends money from one user to another

/BankF/changepass (PATCH)

 name  - name of user's password being changes

 attempt  - password of user being changed

 new_pass  - new password to replace the current user's password

Changes password of a user, returns -1 if user doesnt exist

/BankF/admin/{name}/bal (PATCH)

 name  - the name of the user being set

 attempt  - the admin password required

 amount  - the new balance of the user

Sets the balance of a user

/BankF/help (GET)

the page you're looking at right now!

/BankF/vpass (POST)

 name  - name of user being verified

 attempt  - password being verified

returns 0 or 1 based on if [attempt] is equal to the password of the user [name], or -1 if user does not exist. The intended usage for this function is for connected services

/BankF/contains/{name} (GET)

returns a 0 or 1 based on if the bank contains the user

/BankF/{name}/bal (GET)

returns the balance of a given user's name, if -1 that means the user does not exist

/BankF/admin/vpass (POST)

 attempt  - admin password

Verifies if password entered is admin password

/BankF/{name}/log (POST)

 attempt  - user password

returns a list of last 100 transactions, 0 if incorrect password, -1 if user not found, 1 if user doesnt have a log

/BankF/user (DELETE)

 name  - name of user being deleted

 attempt  - password of user being deleted

Deletes a user with the password of the user as verification

/BankF/admin/user (DELETE)

 name  - name of user being deleted

 attempt  - admin password

Deletes a user with admin password as verification

"); resp->setExpiredTime(0); callback(resp); }