From 6412c77a9d57d7f5b41733fff836d344201697dc Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sat, 22 Apr 2023 20:37:01 -0500 Subject: [PATCH] Add GitHub types for Release API --- scwx-qt/scwx-qt.cmake | 4 +- scwx-qt/source/scwx/qt/types/github_types.cpp | 39 +++++++++++++++++++ scwx-qt/source/scwx/qt/types/github_types.hpp | 36 +++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 scwx-qt/source/scwx/qt/types/github_types.cpp create mode 100644 scwx-qt/source/scwx/qt/types/github_types.hpp diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake index 641f9abb..aa491d40 100644 --- a/scwx-qt/scwx-qt.cmake +++ b/scwx-qt/scwx-qt.cmake @@ -126,10 +126,12 @@ set(SRC_SETTINGS source/scwx/qt/settings/general_settings.cpp source/scwx/qt/settings/settings_variable.cpp source/scwx/qt/settings/settings_variable_base.cpp) set(HDR_TYPES source/scwx/qt/types/font_types.hpp + source/scwx/qt/types/github_types.hpp source/scwx/qt/types/qt_types.hpp source/scwx/qt/types/radar_product_record.hpp source/scwx/qt/types/text_event_key.hpp) -set(SRC_TYPES source/scwx/qt/types/radar_product_record.cpp +set(SRC_TYPES source/scwx/qt/types/github_types.cpp + source/scwx/qt/types/radar_product_record.cpp source/scwx/qt/types/text_event_key.cpp) set(HDR_UI source/scwx/qt/ui/about_dialog.hpp source/scwx/qt/ui/alert_dialog.hpp diff --git a/scwx-qt/source/scwx/qt/types/github_types.cpp b/scwx-qt/source/scwx/qt/types/github_types.cpp new file mode 100644 index 00000000..e741c23b --- /dev/null +++ b/scwx-qt/source/scwx/qt/types/github_types.cpp @@ -0,0 +1,39 @@ +#include + +#include + +namespace scwx +{ +namespace qt +{ +namespace types +{ +namespace gh +{ + +Release tag_invoke(boost::json::value_to_tag, + const boost::json::value& jv) +{ + auto jo = jv.as_object(); + + Release release {}; + + // Required parameters + release.name_ = jo.at("name").as_string(); + release.htmlUrl_ = jo.at("html_url").as_string(); + release.draft_ = jo.at("draft").as_bool(); + release.prerelease_ = jo.at("prerelease").as_bool(); + + // Optional parameters + if (jo.contains("body")) + { + release.body_ = jo.at("body").as_string(); + } + + return release; +} + +} // namespace gh +} // namespace types +} // namespace qt +} // namespace scwx diff --git a/scwx-qt/source/scwx/qt/types/github_types.hpp b/scwx-qt/source/scwx/qt/types/github_types.hpp new file mode 100644 index 00000000..829cfd28 --- /dev/null +++ b/scwx-qt/source/scwx/qt/types/github_types.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include + +#include + +namespace scwx +{ +namespace qt +{ +namespace types +{ +namespace gh +{ + +/** + * @brief GitHub Release object + * + * + */ +struct Release +{ + std::string name_ {}; + std::string htmlUrl_ {}; + std::string body_ {}; + bool draft_ {}; + bool prerelease_ {}; +}; + +Release tag_invoke(boost::json::value_to_tag, + const boost::json::value& jv); + +} // namespace gh +} // namespace types +} // namespace qt +} // namespace scwx