diff --git a/scwx-qt/source/scwx/qt/main/main.cpp b/scwx-qt/source/scwx/qt/main/main.cpp index 400909d7..8e9967b7 100644 --- a/scwx-qt/source/scwx/qt/main/main.cpp +++ b/scwx-qt/source/scwx/qt/main/main.cpp @@ -1,8 +1,10 @@ #include #include +#include #include #include #include +#include #include #include @@ -26,6 +28,8 @@ int main(int argc, char* argv[]) QApplication a(argc, argv); QCoreApplication::setApplicationName("Supercell Wx"); + scwx::network::cpr::SetUserAgent( + fmt::format("SupercellWx/{}", scwx::qt::main::kVersionString_)); // Enable internationalization support QTranslator translator; diff --git a/scwx-qt/source/scwx/qt/manager/placefile_manager.cpp b/scwx-qt/source/scwx/qt/manager/placefile_manager.cpp index 80344b5f..8793f9f9 100644 --- a/scwx-qt/source/scwx/qt/manager/placefile_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/placefile_manager.cpp @@ -1,11 +1,14 @@ #include #include +#include #include #include #include #include +#include +#include #include #include #include @@ -340,9 +343,12 @@ void PlacefileManager::Impl::PlacefileRecord::Update() return; } + auto dpi = QGuiApplication::primaryScreen()->logicalDotsPerInch(); + // Specify parameters auto parameters = cpr::Parameters { {"version", "1.2"}, // Placefile Version Supported + {"dpi", fmt::format("{:0.0f}", dpi)}, {"lat", fmt::format("{:0.3f}", p->radarSite_->latitude())}, {"lon", fmt::format("{:0.3f}", p->radarSite_->longitude())}}; @@ -373,11 +379,8 @@ void PlacefileManager::Impl::PlacefileRecord::Update() } // Send HTTP GET request - // TODO: Update hard coded User-Agent auto response = - cpr::Get(cpr::Url {decodedUrl}, - cpr::Header {{"User-Agent", "SupercellWx/0.2.2"}}, - parameters); + cpr::Get(cpr::Url {decodedUrl}, network::cpr::GetHeader(), parameters); if (cpr::status::is_success(response.status_code)) { diff --git a/wxdata/include/scwx/network/cpr.hpp b/wxdata/include/scwx/network/cpr.hpp new file mode 100644 index 00000000..f05c093a --- /dev/null +++ b/wxdata/include/scwx/network/cpr.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include + +namespace scwx +{ +namespace network +{ +namespace cpr +{ + +::cpr::Header GetHeader(); +void SetUserAgent(const std::string& userAgent); + +} // namespace cpr +} // namespace network +} // namespace scwx diff --git a/wxdata/source/scwx/network/cpr.cpp b/wxdata/source/scwx/network/cpr.cpp new file mode 100644 index 00000000..81dea5ad --- /dev/null +++ b/wxdata/source/scwx/network/cpr.cpp @@ -0,0 +1,26 @@ +#include + +namespace scwx +{ +namespace network +{ +namespace cpr +{ + +static const std::string logPrefix_ = "scwx::network::cpr"; + +static ::cpr::Header header_ {}; + +::cpr::Header GetHeader() +{ + return header_; +} + +void SetUserAgent(const std::string& userAgent) +{ + header_.insert_or_assign("User-Agent", userAgent); +} + +} // namespace cpr +} // namespace network +} // namespace scwx diff --git a/wxdata/wxdata.cmake b/wxdata/wxdata.cmake index 3f7ab8d9..a9a8dce7 100644 --- a/wxdata/wxdata.cmake +++ b/wxdata/wxdata.cmake @@ -50,8 +50,10 @@ set(HDR_GR include/scwx/gr/color.hpp include/scwx/gr/placefile.hpp) set(SRC_GR source/scwx/gr/color.cpp source/scwx/gr/placefile.cpp) -set(HDR_NETWORK include/scwx/network/dir_list.hpp) -set(SRC_NETWORK source/scwx/network/dir_list.cpp) +set(HDR_NETWORK include/scwx/network/cpr.hpp + include/scwx/network/dir_list.hpp) +set(SRC_NETWORK source/scwx/network/cpr.cpp + source/scwx/network/dir_list.cpp) set(HDR_PROVIDER include/scwx/provider/aws_level2_data_provider.hpp include/scwx/provider/aws_level3_data_provider.hpp include/scwx/provider/aws_nexrad_data_provider.hpp