diff --git a/src/jamidht/namedirectory.cpp b/src/jamidht/namedirectory.cpp index edf0938199745f6de76a18b9d85d3081e4e74584..ffb384f3221e532a82deb8afbefe427e66b42ea5 100644 --- a/src/jamidht/namedirectory.cpp +++ b/src/jamidht/namedirectory.cpp @@ -146,7 +146,8 @@ NameDirectory::instance(const std::string& serverUrl, std::shared_ptr<dht::Logge void NameDirectory::setHeaderFields(Request& request) { - request.set_header_field(restinio::http_field_t::user_agent, "JamiDHT"); + request.set_header_field(restinio::http_field_t::user_agent, fmt::format("Jami ({}/{})", + jami::platform(), jami::arch())); request.set_header_field(restinio::http_field_t::accept, "*/*"); request.set_header_field(restinio::http_field_t::content_type, "application/json"); } diff --git a/src/string_utils.h b/src/string_utils.h index 9ca821728df529ca2ac7fd19a12cef5f4a4a04d7..ab73d3aad54953473f5df2f53432f5d0322bf9f7 100644 --- a/src/string_utils.h +++ b/src/string_utils.h @@ -45,6 +45,42 @@ bool_to_str(bool b) noexcept return b ? TRUE_STR : FALSE_STR; } +constexpr inline std::string_view +platform() { + using namespace std::literals; +#if defined(__ANDROID__) + return "android"sv; +#elif defined(__linux__) + return "linux"sv; +#elif defined(__APPLE__) +# if TARGET_OS_IPHONE + return "ios"sv; +# else + return "macos"sv; +# endif +#elif defined(_WIN32) + return "windows"sv; +#else + return "unknown"sv; +#endif +} + +constexpr inline std::string_view +arch() { + using namespace std::literals; +#if defined(__x86_64__) || defined(_M_X64) + return "x86_64"sv; +#elif defined(__i386__) || defined(_M_IX86) + return "x86"sv; +#elif defined(__aarch64__) + return "arm64"sv; +#elif defined(__arm__) + return "arm"sv; +#else + return "unknown"sv; +#endif +} + std::string to_string(double value); #ifdef _WIN32