summaryrefslogtreecommitdiffstats
path: root/server/src/problem.cppm
diff options
context:
space:
mode:
authorRutger Broekhoff2026-08-28 21:12:55 +0200
committerRutger Broekhoff2026-08-28 21:12:55 +0200
commita5d95afb96eb9a3b65d82f5f84bf8e4a4fb4c8ac (patch)
treeb4e0ec57c3799e9f649c6bfe27cb6c3313b97364 /server/src/problem.cppm
parent973aec43ea54bbf95b64fbcb636403401d1ca60e (diff)
downloadroutemon-a5d95afb96eb9a3b65d82f5f84bf8e4a4fb4c8ac.tar.gz
routemon-a5d95afb96eb9a3b65d82f5f84bf8e4a4fb4c8ac.zip
clang-format C++ sources
Diffstat (limited to 'server/src/problem.cppm')
-rw-r--r--server/src/problem.cppm85
1 files changed, 48 insertions, 37 deletions
diff --git a/server/src/problem.cppm b/server/src/problem.cppm
index 8764962..a124312 100644
--- a/server/src/problem.cppm
+++ b/server/src/problem.cppm
@@ -14,47 +14,58 @@ namespace json = boost::json;
14 14
15namespace routemon::problem { 15namespace routemon::problem {
16 16
17 export struct details { 17export struct details
18 http::status status; 18{
19 blocale::message title; 19 http::status status;
20 std::string_view type_uri; 20 blocale::message title;
21 std::optional<blocale::message> detail = std::nullopt; 21 std::string_view type_uri;
22 std::optional<std::string> instance = std::nullopt; 22 std::optional<blocale::message> detail = std::nullopt;
23 std::optional<std::string> instance = std::nullopt;
23 24
24 auto set_detail(blocale::message detail) -> details& { 25 auto set_detail(blocale::message detail) -> details&
25 this->detail = detail; 26 {
26 return *this; 27 this->detail = detail;
27 } 28 return *this;
29 }
28 30
29 auto set_instance(std::string&& instance) -> details& { 31 auto set_instance(std::string&& instance) -> details&
30 this->instance = instance; 32 {
31 return *this; 33 this->instance = instance;
32 } 34 return *this;
33 auto set_instance(std::string_view instance) -> details& { 35 }
34 this->instance = std::string{instance}; 36 auto set_instance(std::string_view instance) -> details&
35 return *this; 37 {
36 } 38 this->instance = std::string{instance};
37 }; 39 return *this;
40 }
41};
38 42
39 export auto tag_invoke(json::value_from_tag, json::value& jv, details const& details, std::locale locale) -> void { 43export auto tag_invoke(
40 auto obj = json::object{ 44 json::value_from_tag, json::value& jv, details const& details,
41 {"type", details.type_uri}, 45 std::locale locale) -> void
42 {"title", details.title.str(locale)}, 46{
47 auto obj = json::object{
48 {"type", details.type_uri},
49 {"title", details.title.str(locale)},
43 {"status", static_cast<unsigned>(details.status)}, 50 {"status", static_cast<unsigned>(details.status)},
44 }; 51 };
45 if (details.detail) obj["detail"] = details.detail->str(locale); 52 if (details.detail)
46 if (details.instance) obj["instance"] = *details.instance; 53 obj["detail"] = details.detail->str(locale);
47 jv = obj; 54 if (details.instance)
48 } 55 obj["instance"] = *details.instance;
56 jv = obj;
57}
49 58
50 export struct tpl { 59export struct tpl
51 http::status status; 60{
52 blocale::message title; 61 http::status status;
53 std::string_view type_uri; 62 blocale::message title;
63 std::string_view type_uri;
54 64
55 auto instantiate() const -> details { 65 auto instantiate() const -> details
56 return details{status, title, type_uri}; 66 {
57 } 67 return details{status, title, type_uri};
58 }; 68 }
69};
59 70
60} 71} // namespace routemon::problem