diff options
Diffstat (limited to 'src/MatrixClient.h')
-rw-r--r-- | src/MatrixClient.h | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/src/MatrixClient.h b/src/MatrixClient.h index 4d313e45..e47812d3 100644 --- a/src/MatrixClient.h +++ b/src/MatrixClient.h @@ -8,8 +8,6 @@ #include <mtxclient/http/client.hpp> -#include <curl/curl.h> - #include "Logging.h" namespace http { @@ -24,114 +22,3 @@ void init(); } -template<> -struct fmt::formatter<mtx::http::ClientError> -{ - // Presentation format: 'f' - fixed, 'e' - exponential. - bool print_network_error = false; - bool print_http_error = false; - bool print_parser_error = false; - bool print_matrix_error = false; - - // Parses format specifications of the form ['f' | 'e']. - constexpr auto parse(fmt::format_parse_context &ctx) -> decltype(ctx.begin()) - { - // [ctx.begin(), ctx.end()) is a character range that contains a part of - // the format string starting from the format specifications to be parsed, - // e.g. in - // - // fmt::format("{:f} - point of interest", point{1, 2}); - // - // the range will contain "f} - point of interest". The formatter should - // parse specifiers until '}' or the end of the range. In this example - // the formatter should parse the 'f' specifier and return an iterator - // pointing to '}'. - - // Parse the presentation format and store it in the formatter: - auto it = ctx.begin(), end = ctx.end(); - - while (it != end && *it != '}') { - auto tmp = *it++; - - switch (tmp) { - case 'n': - print_matrix_error = true; - break; - case 'h': - print_matrix_error = true; - break; - case 'p': - print_matrix_error = true; - break; - case 'm': - print_matrix_error = true; - break; - default: - throw format_error("invalid format specifier for mtx error"); - } - } - - // Check if reached the end of the range: - if (it != end && *it != '}') - throw fmt::format_error("invalid format"); - - // Return an iterator past the end of the parsed range: - return it; - } - - // Formats the point p using the parsed format specification (presentation) - // stored in this formatter. - template<typename FormatContext> - auto format(const mtx::http::ClientError &e, FormatContext &ctx) -> decltype(ctx.out()) - { - // ctx.out() is an output iterator to write to. - bool prepend_comma = false; - fmt::format_to(ctx.out(), "("); - if (print_network_error || e.error_code) { - fmt::format_to(ctx.out(), "connection: {}", e.error_code_string()); - prepend_comma = true; - } - - if (print_http_error || - (e.status_code != 0 && (e.status_code < 200 || e.status_code >= 300))) { - if (prepend_comma) - fmt::format_to(ctx.out(), ", "); - fmt::format_to(ctx.out(), "http: {}", e.status_code); - prepend_comma = true; - } - - if (print_parser_error || !e.parse_error.empty()) { - if (prepend_comma) - fmt::format_to(ctx.out(), ", "); - fmt::format_to(ctx.out(), "parser: {}", e.parse_error); - prepend_comma = true; - } - - if (print_parser_error || - (e.matrix_error.errcode != mtx::errors::ErrorCode::M_UNRECOGNIZED && - !e.matrix_error.error.empty())) { - if (prepend_comma) - fmt::format_to(ctx.out(), ", "); - fmt::format_to(ctx.out(), - "matrix: {}:'{}'", - to_string(e.matrix_error.errcode), - e.matrix_error.error); - } - - return fmt::format_to(ctx.out(), ")"); - } -}; - -template<> -struct fmt::formatter<std::optional<mtx::http::ClientError>> : formatter<mtx::http::ClientError> -{ - // parse is inherited from formatter<string_view>. - template<typename FormatContext> - auto format(std::optional<mtx::http::ClientError> c, FormatContext &ctx) - { - if (!c) - return fmt::format_to(ctx.out(), "(no error)"); - else - return formatter<mtx::http::ClientError>::format(*c, ctx); - } -}; |