diff --git a/src/bank_f.cpp b/src/bank_f.cpp index 48297a2..a6b30ec 100644 --- a/src/bank_f.cpp +++ b/src/bank_f.cpp @@ -5,7 +5,7 @@ #define GEN_BODY \ const auto temp_req = req->getJsonObject(); \ const auto body = temp_req ? *temp_req : Json::Value(); -#define PASS_HEADER std::string pass = req->getHeader("Password"); +#define PASS_HEADER req->getHeader("Password") template INLINE Json::Value JsonReturn(T &&val) @@ -32,15 +32,14 @@ void BankF::Help(req_args) const { auto resp = HttpResponse::newHttpResponse(); auto handlerInfo = app().getHandlersInfo(); - resp->setBody("

Error Responses

# meaning
-1 UserNotFound
-2 WrongPassword
-3 InvalidRequest
-4 WrongAdminPassword
-5 NameTooLong
-6 UserAlreadyExists
-7 InsufficientFunds

Things of Note

Usage

Name Path Method A Description
GetBal /{name}/bal GET true returns the balance of a given user {name}
GetLog /{name}/log GET true returns a list of last n number of transactions (a configurable amount) of a given user {name}
SendFunds /{name}/send/{to}/amount={amount} POST true sends {amount} from user {name} to user {to}
VerifyPassword /{name}/pass/verify GET true returns true or false depending on if the supplied user {name}'s password matches the password supplied in the header

Meta Usage

Name Path Method A Description
ChangePassword /{name}/pass/change PATCH true if the password supplied in the header matches the user {name}'s password, the user’s password is changed to the one given in the body
SetBal /admin/{name}/bal/amount={amount} PATCH true sets the balance of a give user {name} if the supplied password matches the admin password

System Usage

Name Path Method A Description
Help /help GET false the page you’re looking at right now!
Close /admin/close POST true saves and then closes the program if the supplied password matches the admin password
Contains /contains/{name} GET false returns true or false depending on if the supplied user {name} exists
AdminVerifyPass /admin/verify GET true returns true or false depending on if the password supplied in the header matches the admin password

User Management

Name Path Method A Description
AddUser /user/{name} POST false registers a user with the name {name}, balance of 0 and a password of the password supplied in the header
AdminAddUser /admin/user/{name}?init_bal={init_bal} POST true if the password supplied in the header matches the admin password, then it registers a user with the name {name}, balance of init_bal and a password supplied by the body of the request
DelUser /user/{name} DELETE true if the password supplied in the header matches the user {name}'s password, then the user is deleted
AdminDelUser /admin/user/{name} DELETE true if the password supplied in the header matches the admin password, then the user is deleted
"); + resp->setBody("

Error Responses

# meaning
-1 UserNotFound
-2 WrongPassword
-3 InvalidRequest
-4 WrongAdminPassword
-5 NameTooLong
-6 UserAlreadyExists
-7 InsufficientFunds

Things of Note

Usage

Name Path Method A Description
GetBal /{name}/bal GET true returns the balance of a given user {name}
GetLog /{name}/log GET true returns a list of last n number of transactions (a configurable amount) of a given user {name}
SendFunds /{name}/send/{to}/amount={amount} POST true sends {amount} from user {name} to user {to}
VerifyPassword /{name}/PASS_HEADER/verify GET true returns true or false depending on if the supplied user {name}'s PASS_HEADERword matches the PASS_HEADERword supplied in the header

Meta Usage

Name Path Method A Description
ChangePassword /{name}/PASS_HEADER/change PATCH true if the PASS_HEADERword supplied in the header matches the user {name}'s PASS_HEADERword, the user’s PASS_HEADERword is changed to the one given in the body
SetBal /admin/{name}/bal/amount={amount} PATCH true sets the balance of a give user {name} if the supplied PASS_HEADERword matches the admin PASS_HEADERword

System Usage

Name Path Method A Description
Help /help GET false the page you’re looking at right now!
Close /admin/close POST true saves and then closes the program if the supplied PASS_HEADERword matches the admin PASS_HEADERword
Contains /contains/{name} GET false returns true or false depending on if the supplied user {name} exists
AdminVerifyPass /admin/verify GET true returns true or false depending on if the PASS_HEADERword supplied in the header matches the admin PASS_HEADERword

User Management

Name Path Method A Description
AddUser /user/{name} POST false registers a user with the name {name}, balance of 0 and a PASS_HEADERword of the PASS_HEADERword supplied in the header
AdminAddUser /admin/user/{name}?init_bal={init_bal} POST true if the PASS_HEADERword supplied in the header matches the admin PASS_HEADERword, then it registers a user with the name {name}, balance of init_bal and a PASS_HEADERword supplied by the body of the request
DelUser /user/{name} DELETE true if the PASS_HEADERword supplied in the header matches the user {name}'s PASS_HEADERword, then the user is deleted
AdminDelUser /admin/user/{name} DELETE true if the PASS_HEADERword supplied in the header matches the admin PASS_HEADERword, then the user is deleted
"); resp->setExpiredTime(0); callback(resp); } void BankF::Close(req_args) const { - PASS_HEADER bool res; - if (pass == bank.admin_pass) + if (PASS_HEADER == bank.admin_pass) { bank.Save(); @@ -59,28 +58,23 @@ void BankF::AddUser(req_args, std::string &&name) const } void BankF::AdminAddUser(req_args, std::string &&name, uint32_t init_bal) const { - PASS_HEADER - JSON(bank.AdminAddUser(pass, std::move(name), init_bal, std::string(req->getBody()))); + JSON(bank.AdminAddUser(PASS_HEADER, std::move(name), init_bal, std::string(req->getBody()))); } void BankF::DelUser(req_args, const std::string &name) const { - PASS_HEADER - JSON(bank.DelUser(name, pass)); + JSON(bank.DelUser(name, PASS_HEADER)); } void BankF::AdminDelUser(req_args, const std::string &name) const { - PASS_HEADER - JSON(bank.AdminDelUser(name, pass)); + JSON(bank.AdminDelUser(name, PASS_HEADER)); } void BankF::SendFunds(req_args, const std::string name, const std::string to, uint32_t amount) const { - PASS_HEADER - JSON(bank.SendFunds(name, to, amount, pass)); + JSON(bank.SendFunds(name, to, amount, PASS_HEADER)); } void BankF::ChangePassword(req_args, const std::string &name) const { - PASS_HEADER - JSON(bank.ChangePassword(name, pass, std::string(req->getBody()))); + JSON(bank.ChangePassword(name, PASS_HEADER, std::string(req->getBody()))); } void BankF::Contains(req_args, const std::string &name) const { @@ -92,25 +86,21 @@ void BankF::GetBal(req_args, const std::string &name) const } void BankF::VerifyPassword(req_args, const std::string &name) const { - PASS_HEADER - JSON(bank.VerifyPassword(name, pass)); + JSON(bank.VerifyPassword(name, PASS_HEADER)); } void BankF::SetBal(req_args, const std::string &name, uint32_t amount) const { - PASS_HEADER - JSON(bank.SetBal(name, pass, amount)); + JSON(bank.SetBal(name, PASS_HEADER, amount)); } void BankF::AdminVerifyPass(req_args) { - PASS_HEADER - JSON(bank.AdminVerifyPass(pass)); + JSON(bank.AdminVerifyPass(PASS_HEADER)); } void BankF::GetLog(req_args, const std::string &name) { if constexpr (max_log_size) { - PASS_HEADER - JSON(bank.GetLogs(name, pass)); + JSON(bank.GetLogs(name, PASS_HEADER)); } else {