mirror of
https://git.wownero.com/wownero/onion-wownero-blockchain-explorer.git
synced 2024-08-15 00:33:12 +00:00
add htmlresponse to other endpoints
This commit is contained in:
parent
d45b6b9c46
commit
73ed903eff
1 changed files with 78 additions and 45 deletions
123
main.cpp
123
main.cpp
|
@ -17,7 +17,7 @@ using namespace std;
|
|||
|
||||
namespace myxmr
|
||||
{
|
||||
struct htmlresponse: crow::response
|
||||
struct htmlresponse: public crow::response
|
||||
{
|
||||
htmlresponse(string&& _body)
|
||||
: crow::response {std::move(_body)}
|
||||
|
@ -26,7 +26,7 @@ struct htmlresponse: crow::response
|
|||
}
|
||||
};
|
||||
|
||||
struct jsonresponse: crow::response
|
||||
struct jsonresponse: public crow::response
|
||||
{
|
||||
jsonresponse(const nlohmann::json& _body)
|
||||
: crow::response {_body.dump()}
|
||||
|
@ -191,12 +191,13 @@ main(int ac, const char* av[])
|
|||
|
||||
try
|
||||
{
|
||||
mempool_info_timeout = boost::lexical_cast<uint64_t>(*mempool_info_timeout_opt);
|
||||
mempool_info_timeout = boost::lexical_cast<uint64_t>(
|
||||
*mempool_info_timeout_opt);
|
||||
}
|
||||
catch (boost::bad_lexical_cast &e)
|
||||
{
|
||||
cout << "Cant cast " << (*mempool_info_timeout_opt) <<" into numbers. Using default values."
|
||||
<< endl;
|
||||
cout << "Cant cast " << (*mempool_info_timeout_opt)
|
||||
<<" into numbers. Using default values.\n";
|
||||
}
|
||||
|
||||
uint64_t mempool_refresh_time {10};
|
||||
|
@ -300,60 +301,68 @@ main(int ac, const char* av[])
|
|||
|
||||
CROW_ROUTE(app, "/")
|
||||
([&]() {
|
||||
//return crow::response(xmrblocks.index2());
|
||||
return myxmr::htmlresponse(xmrblocks.index2());
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/page/<uint>")
|
||||
([&](size_t page_no) {
|
||||
return xmrblocks.index2(page_no);
|
||||
return myxmr::htmlresponse(xmrblocks.index2(page_no));
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/block/<uint>")
|
||||
([&](size_t block_height) {
|
||||
return crow::response(xmrblocks.show_block(block_height));
|
||||
return myxmr::htmlresponse(xmrblocks.show_block(block_height));
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/block/<string>")
|
||||
([&](string block_hash) {
|
||||
return crow::response(xmrblocks.show_block(remove_bad_chars(block_hash)));
|
||||
return myxmr::htmlresponse(
|
||||
xmrblocks.show_block(remove_bad_chars(block_hash)));
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/tx/<string>")
|
||||
([&](string tx_hash) {
|
||||
return crow::response(xmrblocks.show_tx(remove_bad_chars(tx_hash)));
|
||||
return myxmr::htmlresponse(
|
||||
xmrblocks.show_tx(remove_bad_chars(tx_hash)));
|
||||
});
|
||||
|
||||
if (enable_as_hex)
|
||||
{
|
||||
CROW_ROUTE(app, "/txhex/<string>")
|
||||
([&](string tx_hash) {
|
||||
return crow::response(xmrblocks.show_tx_hex(remove_bad_chars(tx_hash)));
|
||||
return crow::response(
|
||||
xmrblocks.show_tx_hex(remove_bad_chars(tx_hash)));
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/ringmembershex/<string>")
|
||||
([&](string tx_hash) {
|
||||
return crow::response(xmrblocks.show_ringmembers_hex(remove_bad_chars(tx_hash)));
|
||||
return crow::response(
|
||||
xmrblocks.show_ringmembers_hex(remove_bad_chars(tx_hash)));
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/blockhex/<uint>")
|
||||
([&](size_t block_height) {
|
||||
return crow::response(xmrblocks.show_block_hex(block_height, false));
|
||||
return crow::response(
|
||||
xmrblocks.show_block_hex(block_height, false));
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/blockhexcomplete/<uint>")
|
||||
([&](size_t block_height) {
|
||||
return crow::response(xmrblocks.show_block_hex(block_height, true));
|
||||
return crow::response(
|
||||
xmrblocks.show_block_hex(block_height, true));
|
||||
});
|
||||
|
||||
// CROW_ROUTE(app, "/ringmemberstxhex/<string>")
|
||||
// ([&](string tx_hash) {
|
||||
// return crow::response(xmrblocks.show_ringmemberstx_hex(remove_bad_chars(tx_hash)));
|
||||
// return crow::response(
|
||||
// xmrblocks.show_ringmemberstx_hex(remove_bad_chars(tx_hash)));
|
||||
// });
|
||||
|
||||
CROW_ROUTE(app, "/ringmemberstxhex/<string>")
|
||||
([&](string tx_hash) {
|
||||
return myxmr::jsonresponse {xmrblocks.show_ringmemberstx_jsonhex(remove_bad_chars(tx_hash))};
|
||||
return myxmr::jsonresponse {
|
||||
xmrblocks.show_ringmemberstx_jsonhex(
|
||||
remove_bad_chars(tx_hash))};
|
||||
});
|
||||
|
||||
}
|
||||
|
@ -361,11 +370,13 @@ main(int ac, const char* av[])
|
|||
CROW_ROUTE(app, "/tx/<string>/<uint>")
|
||||
([&](string tx_hash, uint16_t with_ring_signatures)
|
||||
{
|
||||
return xmrblocks.show_tx(remove_bad_chars(tx_hash), with_ring_signatures);
|
||||
return myxmr::htmlresponse(
|
||||
xmrblocks.show_tx(remove_bad_chars(tx_hash),
|
||||
with_ring_signatures));
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/myoutputs").methods("POST"_method)
|
||||
([&](const crow::request& req)
|
||||
([&](const crow::request& req) -> myxmr::htmlresponse
|
||||
{
|
||||
|
||||
map<std::string, std::string> post_body
|
||||
|
@ -388,9 +399,12 @@ main(int ac, const char* av[])
|
|||
|
||||
string domain = get_domain(req);
|
||||
|
||||
return xmrblocks.show_my_outputs(tx_hash, xmr_address,
|
||||
string response = xmrblocks.show_my_outputs(
|
||||
tx_hash, xmr_address,
|
||||
viewkey, raw_tx_data,
|
||||
domain);
|
||||
|
||||
return myxmr::htmlresponse(std::move(response));
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/myoutputs/<string>/<string>/<string>")
|
||||
|
@ -400,15 +414,17 @@ main(int ac, const char* av[])
|
|||
|
||||
string domain = get_domain(req);
|
||||
|
||||
return xmrblocks.show_my_outputs(remove_bad_chars(tx_hash),
|
||||
return myxmr::htmlresponse(xmrblocks.show_my_outputs(
|
||||
remove_bad_chars(tx_hash),
|
||||
remove_bad_chars(xmr_address),
|
||||
remove_bad_chars(viewkey),
|
||||
string {},
|
||||
domain);
|
||||
domain));
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/prove").methods("POST"_method)
|
||||
([&](const crow::request& req) {
|
||||
([&](const crow::request& req) -> myxmr::htmlresponse
|
||||
{
|
||||
|
||||
map<std::string, std::string> post_body
|
||||
= xmreg::parse_crow_post_data(req.body);
|
||||
|
@ -431,41 +447,45 @@ main(int ac, const char* av[])
|
|||
|
||||
string domain = get_domain(req);
|
||||
|
||||
return xmrblocks.show_prove(tx_hash,
|
||||
return myxmr::htmlresponse(xmrblocks.show_prove(tx_hash,
|
||||
xmr_address,
|
||||
tx_prv_key,
|
||||
raw_tx_data,
|
||||
domain);
|
||||
domain));
|
||||
});
|
||||
|
||||
|
||||
CROW_ROUTE(app, "/prove/<string>/<string>/<string>")
|
||||
([&](const crow::request& req, string tx_hash,
|
||||
string xmr_address, string tx_prv_key) {
|
||||
string xmr_address, string tx_prv_key)
|
||||
{
|
||||
|
||||
string domain = get_domain(req);
|
||||
|
||||
return xmrblocks.show_prove(remove_bad_chars(tx_hash),
|
||||
return myxmr::htmlresponse(xmrblocks.show_prove(
|
||||
remove_bad_chars(tx_hash),
|
||||
remove_bad_chars(xmr_address),
|
||||
remove_bad_chars(tx_prv_key),
|
||||
string {},
|
||||
domain);
|
||||
domain));
|
||||
});
|
||||
|
||||
if (enable_pusher)
|
||||
{
|
||||
CROW_ROUTE(app, "/rawtx")
|
||||
([&]() {
|
||||
return xmrblocks.show_rawtx();
|
||||
return myxmr::htmlresponse(xmrblocks.show_rawtx());
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/checkandpush").methods("POST"_method)
|
||||
([&](const crow::request& req) {
|
||||
([&](const crow::request& req) -> myxmr::htmlresponse
|
||||
{
|
||||
|
||||
map<std::string, std::string> post_body
|
||||
= xmreg::parse_crow_post_data(req.body);
|
||||
|
||||
if (post_body.count("rawtxdata") == 0 || post_body.count("action") == 0)
|
||||
if (post_body.count("rawtxdata") == 0
|
||||
|| post_body.count("action") == 0)
|
||||
{
|
||||
return string("Raw tx data or action not provided");
|
||||
}
|
||||
|
@ -474,9 +494,11 @@ main(int ac, const char* av[])
|
|||
string action = remove_bad_chars(post_body["action"]);
|
||||
|
||||
if (action == "check")
|
||||
return xmrblocks.show_checkrawtx(raw_tx_data, action);
|
||||
return myxmr::htmlresponse(
|
||||
xmrblocks.show_checkrawtx(raw_tx_data, action));
|
||||
else if (action == "push")
|
||||
return xmrblocks.show_pushrawtx(raw_tx_data, action);
|
||||
return myxmr::htmlresponse(
|
||||
xmrblocks.show_pushrawtx(raw_tx_data, action));
|
||||
return string("Provided action is neither check nor push");
|
||||
|
||||
});
|
||||
|
@ -486,11 +508,12 @@ main(int ac, const char* av[])
|
|||
{
|
||||
CROW_ROUTE(app, "/rawkeyimgs")
|
||||
([&]() {
|
||||
return xmrblocks.show_rawkeyimgs();
|
||||
return myxmr::htmlresponse(xmrblocks.show_rawkeyimgs());
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/checkrawkeyimgs").methods("POST"_method)
|
||||
([&](const crow::request& req) {
|
||||
([&](const crow::request& req) -> myxmr::htmlresponse
|
||||
{
|
||||
|
||||
map<std::string, std::string> post_body
|
||||
= xmreg::parse_crow_post_data(req.body);
|
||||
|
@ -508,7 +531,8 @@ main(int ac, const char* av[])
|
|||
string raw_data = remove_bad_chars(post_body["rawkeyimgsdata"]);
|
||||
string viewkey = remove_bad_chars(post_body["viewkey"]);
|
||||
|
||||
return xmrblocks.show_checkrawkeyimgs(raw_data, viewkey);
|
||||
return myxmr::htmlresponse(
|
||||
xmrblocks.show_checkrawkeyimgs(raw_data, viewkey));
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -517,11 +541,12 @@ main(int ac, const char* av[])
|
|||
{
|
||||
CROW_ROUTE(app, "/rawoutputkeys")
|
||||
([&]() {
|
||||
return xmrblocks.show_rawoutputkeys();
|
||||
return myxmr::htmlresponse(xmrblocks.show_rawoutputkeys());
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/checkrawoutputkeys").methods("POST"_method)
|
||||
([&](const crow::request& req) {
|
||||
([&](const crow::request& req) -> myxmr::htmlresponse
|
||||
{
|
||||
|
||||
map<std::string, std::string> post_body
|
||||
= xmreg::parse_crow_post_data(req.body);
|
||||
|
@ -540,25 +565,29 @@ main(int ac, const char* av[])
|
|||
string raw_data = remove_bad_chars(post_body["rawoutputkeysdata"]);
|
||||
string viewkey = remove_bad_chars(post_body["viewkey"]);
|
||||
|
||||
return xmrblocks.show_checkcheckrawoutput(raw_data, viewkey);
|
||||
return myxmr::htmlresponse(
|
||||
xmrblocks.show_checkcheckrawoutput(raw_data, viewkey));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
CROW_ROUTE(app, "/search").methods("GET"_method)
|
||||
([&](const crow::request& req) {
|
||||
return xmrblocks.search(remove_bad_chars(string(req.url_params.get("value"))));
|
||||
return myxmr::htmlresponse(
|
||||
xmrblocks.search(
|
||||
remove_bad_chars(
|
||||
string(req.url_params.get("value")))));
|
||||
});
|
||||
|
||||
CROW_ROUTE(app, "/mempool")
|
||||
([&]() {
|
||||
return xmrblocks.mempool(true);
|
||||
return myxmr::htmlresponse(xmrblocks.mempool(true));
|
||||
});
|
||||
|
||||
// alias to "/mempool"
|
||||
CROW_ROUTE(app, "/txpool")
|
||||
([&]() {
|
||||
return xmrblocks.mempool(true);
|
||||
return myxmr::htmlresponse(xmrblocks.mempool(true));
|
||||
});
|
||||
|
||||
// CROW_ROUTE(app, "/altblocks")
|
||||
|
@ -783,13 +812,16 @@ main(int ac, const char* av[])
|
|||
|
||||
try
|
||||
{
|
||||
in_mempool_aswell = regex_search(req.raw_url, regex {"mempool=[01]"}) ?
|
||||
boost::lexical_cast<bool>(req.url_params.get("mempool")) :
|
||||
in_mempool_aswell = regex_search(
|
||||
req.raw_url, regex {"mempool=[01]"}) ?
|
||||
boost::lexical_cast<bool>(
|
||||
req.url_params.get("mempool")) :
|
||||
false;
|
||||
}
|
||||
catch (const boost::bad_lexical_cast &e)
|
||||
{
|
||||
cerr << "Cant parse tx_prove as bool. Using default value" << endl;
|
||||
cerr << "Cant parse tx_prove as bool. Using default value"
|
||||
<< endl;
|
||||
}
|
||||
|
||||
myxmr::jsonresponse r{xmrblocks.json_outputsblocks(
|
||||
|
@ -826,7 +858,8 @@ main(int ac, const char* av[])
|
|||
if (use_ssl)
|
||||
{
|
||||
cout << "Staring in ssl mode" << endl;
|
||||
app.bindaddr(bindaddr).port(app_port).ssl_file(ssl_crt_file, ssl_key_file)
|
||||
app.bindaddr(bindaddr).port(app_port).ssl_file(
|
||||
ssl_crt_file, ssl_key_file)
|
||||
.multithreaded().run();
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in a new issue