57 std::optional<ores::security::jwt::jwt_authenticator> verifier)
58 : nats_(nats), ctx_(std::move(ctx)), verifier_(std::move(verifier)) {}
61 BOOST_LOG_SEV(fra_convention_handler_lg(), debug)
63 auto req_ctx_expected = ores::service::service::make_request_context(
64 ctx_, msg, verifier_);
65 if (!req_ctx_expected) {
66 error_reply(nats_, msg, req_ctx_expected.error());
69 const auto& req_ctx = *req_ctx_expected;
71 get_fra_conventions_response resp;
73 resp.fra_conventions = svc.list_fra_conventions();
74 resp.total_available_count =
75 static_cast<int>(resp.fra_conventions.size());
76 }
catch (
const std::exception& e) {
77 BOOST_LOG_SEV(fra_convention_handler_lg(), error)
78 << msg.
subject <<
" failed: " << e.what();
80 resp.message = e.what();
82 BOOST_LOG_SEV(fra_convention_handler_lg(), debug)
84 reply(nats_, msg, resp);
88 BOOST_LOG_SEV(fra_convention_handler_lg(), debug)
90 auto req_ctx_expected = ores::service::service::make_request_context(
91 ctx_, msg, verifier_);
92 if (!req_ctx_expected) {
93 error_reply(nats_, msg, req_ctx_expected.error());
96 const auto& req_ctx = *req_ctx_expected;
97 if (!has_permission(req_ctx,
"refdata::fra_conventions:write")) {
102 if (
auto req = decode<save_fra_convention_request>(msg)) {
104 svc.save_fra_convention(req->data);
105 BOOST_LOG_SEV(fra_convention_handler_lg(), debug)
106 <<
"Completed " << msg.
subject;
108 save_fra_convention_response{.success =
true});
109 }
catch (
const std::exception& e) {
110 BOOST_LOG_SEV(fra_convention_handler_lg(), error)
111 << msg.
subject <<
" failed: " << e.what();
112 reply(nats_, msg, save_fra_convention_response{
113 .success =
false, .message = e.what()});
116 BOOST_LOG_SEV(fra_convention_handler_lg(), warn)
117 <<
"Failed to decode: " << msg.
subject;
123 BOOST_LOG_SEV(fra_convention_handler_lg(), debug)
125 auto req_ctx_expected = ores::service::service::make_request_context(
126 ctx_, msg, verifier_);
127 if (!req_ctx_expected) {
128 error_reply(nats_, msg, req_ctx_expected.error());
131 const auto& req_ctx = *req_ctx_expected;
133 if (
auto req = decode<get_fra_convention_history_request>(msg)) {
135 auto hist = svc.get_fra_convention_history(req->id);
136 BOOST_LOG_SEV(fra_convention_handler_lg(), debug)
137 <<
"Completed " << msg.
subject;
138 reply(nats_, msg, get_fra_convention_history_response{
139 .fra_conventions = std::move(hist), .success =
true});
140 }
catch (
const std::exception& e) {
141 BOOST_LOG_SEV(fra_convention_handler_lg(), error)
142 << msg.
subject <<
" failed: " << e.what();
143 reply(nats_, msg, get_fra_convention_history_response{
144 .success =
false, .message = e.what()});
147 BOOST_LOG_SEV(fra_convention_handler_lg(), warn)
148 <<
"Failed to decode: " << msg.
subject;
154 BOOST_LOG_SEV(fra_convention_handler_lg(), debug)
156 auto req_ctx_expected = ores::service::service::make_request_context(
157 ctx_, msg, verifier_);
158 if (!req_ctx_expected) {
159 error_reply(nats_, msg, req_ctx_expected.error());
162 const auto& req_ctx = *req_ctx_expected;
163 if (!has_permission(req_ctx,
"refdata::fra_conventions:write")) {
168 if (
auto req = decode<delete_fra_convention_request>(msg)) {
170 for (
const auto& code : req->codes)
171 svc.remove_fra_convention(code);
172 BOOST_LOG_SEV(fra_convention_handler_lg(), debug)
173 <<
"Completed " << msg.
subject;
175 delete_fra_convention_response{.success =
true});
176 }
catch (
const std::exception& e) {
177 BOOST_LOG_SEV(fra_convention_handler_lg(), error)
178 << msg.
subject <<
" failed: " << e.what();
179 reply(nats_, msg, delete_fra_convention_response{
180 .success =
false, .message = e.what()});
183 BOOST_LOG_SEV(fra_convention_handler_lg(), warn)
184 <<
"Failed to decode: " << msg.
subject;
192 std::optional<ores::security::jwt::jwt_authenticator> verifier_;