// Copyright (C) 2024 Simon Quigley // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . #ifndef DISTRIBUTION_H #define DISTRIBUTION_H #include #include #include #include "launchpad.h" #include "distro_series.h" #ifndef LAUNCHPAD_API #ifdef BUILDING_LAUNCHPAD #define LAUNCHPAD_API __attribute__((visibility("default"))) #else #define LAUNCHPAD_API #endif #endif class launchpad; class LAUNCHPAD_API distribution { public: distribution(); ~distribution(); // Static method to parse JSON data static std::optional parse(const std::string& json_data); // Public functions std::optional getSeries(const std::string& name_or_version); // Public member variables std::string name; std::string description; std::string displayname; std::string title; std::string summary; std::string domain_name; std::string self_link; std::string web_link; std::string translationgroup_link; void set_lp(launchpad* lp_ptr); // Additional read-only fields std::string active_milestones_collection_link; std::string all_milestones_collection_link; std::string all_specifications_collection_link; std::string archive_mirrors_collection_link; std::string archives_collection_link; std::string main_archive_link; std::string series_collection_link; std::string valid_specifications_collection_link; std::string vulnerabilities_collection_link; std::string webhooks_collection_link; private: launchpad* lp; // JSON parsing utility void parse_json(const std::string& json_data); }; #endif // DISTRIBUTION_H