mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-02 06:40:42 -07:00
Initial commit for GitHub migration based on spice2x-25-03-03
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
#include "card.h"
|
||||
#include <functional>
|
||||
#include "external/rapidjson/document.h"
|
||||
#include "util/logging.h"
|
||||
#include "util/utils.h"
|
||||
#include "misc/eamuse.h"
|
||||
|
||||
using namespace std::placeholders;
|
||||
using namespace rapidjson;
|
||||
|
||||
|
||||
namespace api::modules {
|
||||
|
||||
Card::Card() : Module("card") {
|
||||
functions["insert"] = std::bind(&Card::insert, this, _1, _2);
|
||||
}
|
||||
|
||||
/**
|
||||
* insert(index, card_id)
|
||||
* index: uint in range [0, 1]
|
||||
* card_id: hex string of length 16
|
||||
*/
|
||||
void Card::insert(Request &req, Response &res) {
|
||||
|
||||
// check params
|
||||
if (req.params.Size() < 2)
|
||||
return error_params_insufficient(res);
|
||||
if (!req.params[0].IsUint())
|
||||
return error_type(res, "index", "uint");
|
||||
if (!req.params[1].IsString())
|
||||
return error_type(res, "card_id", "hex string");
|
||||
if (req.params[1].GetStringLength() != 16)
|
||||
return error_size(res, "card_id", 16);
|
||||
|
||||
// get params
|
||||
auto index = req.params[0].GetUint();
|
||||
auto card_hex = req.params[1].GetString();
|
||||
|
||||
// convert to binary
|
||||
uint8_t card_bin[8] {};
|
||||
if (!hex2bin(card_hex, card_bin)) {
|
||||
return error_type(res, "card_id", "hex string");
|
||||
}
|
||||
|
||||
// log
|
||||
if (LOGGING) {
|
||||
log_info("api::card", "inserting card: {}", card_hex);
|
||||
}
|
||||
|
||||
// insert card
|
||||
eamuse_card_insert(index & 1, card_bin);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user