提交 7e1dfa8a 编写于 作者: J Jonathan Giszczak

Revise chain API to return http response 200 or 202, as appropriate.

上级 7a05597f
......@@ -26,13 +26,13 @@ chain_api_plugin::~chain_api_plugin(){}
void chain_api_plugin::set_program_options(options_description&, options_description&) {}
void chain_api_plugin::plugin_initialize(const variables_map&) {}
#define CALL(api_name, api_handle, api_namespace, call_name) \
#define CALL(api_name, api_handle, api_namespace, call_name, http_response_code) \
{std::string("/v1/" #api_name "/" #call_name), \
[this, api_handle](string, string body, url_response_callback cb) mutable { \
try { \
if (body.empty()) body = "{}"; \
auto result = api_handle.call_name(fc::json::from_string(body).as<api_namespace::call_name ## _params>()); \
cb(201, fc::json::to_string(result)); \
cb(http_response_code, fc::json::to_string(result)); \
} catch (chain::tx_missing_sigs& e) { \
error_results results{401, "UnAuthorized", e.to_string()}; \
cb(401, fc::json::to_string(results)); \
......@@ -53,8 +53,8 @@ void chain_api_plugin::plugin_initialize(const variables_map&) {}
} \
}}
#define CHAIN_RO_CALL(call_name) CALL(chain, ro_api, chain_apis::read_only, call_name)
#define CHAIN_RW_CALL(call_name) CALL(chain, rw_api, chain_apis::read_write, call_name)
#define CHAIN_RO_CALL(call_name, http_response_code) CALL(chain, ro_api, chain_apis::read_only, call_name, http_response_code)
#define CHAIN_RW_CALL(call_name, http_response_code) CALL(chain, rw_api, chain_apis::read_write, call_name, http_response_code)
void chain_api_plugin::plugin_startup() {
ilog( "starting chain_api_plugin" );
......@@ -63,17 +63,17 @@ void chain_api_plugin::plugin_startup() {
auto rw_api = app().get_plugin<chain_plugin>().get_read_write_api();
app().get_plugin<http_plugin>().add_api({
CHAIN_RO_CALL(get_info),
CHAIN_RO_CALL(get_block),
CHAIN_RO_CALL(get_account),
CHAIN_RO_CALL(get_code),
CHAIN_RO_CALL(get_table_rows),
CHAIN_RO_CALL(abi_json_to_bin),
CHAIN_RO_CALL(abi_bin_to_json),
CHAIN_RO_CALL(get_required_keys),
CHAIN_RW_CALL(push_block),
CHAIN_RW_CALL(push_transaction),
CHAIN_RW_CALL(push_transactions)
CHAIN_RO_CALL(get_info, 200),
CHAIN_RO_CALL(get_block, 200),
CHAIN_RO_CALL(get_account, 200),
CHAIN_RO_CALL(get_code, 200),
CHAIN_RO_CALL(get_table_rows, 200),
CHAIN_RO_CALL(abi_json_to_bin, 200),
CHAIN_RO_CALL(abi_bin_to_json, 200),
CHAIN_RO_CALL(get_required_keys, 200),
CHAIN_RW_CALL(push_block, 202),
CHAIN_RW_CALL(push_transaction, 202),
CHAIN_RW_CALL(push_transactions, 202)
});
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册