Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
campaign.h
1 #ifndef CAMPAIGN_CAMPAIGN_H_
2 #define CAMPAIGN_CAMPAIGN_H_
3 
4 #include <string>
5 #include <vector>
6 #include "http/httpclient.h"
7 #include "utilities/utils.h"
8 
9 namespace campaign {
10 
11 constexpr int64_t kMaxCampaignsMetaSize = 1024 * 1024;
12 
13 class CampaignParseError : std::exception {
14  public:
15  const char *what() const noexcept override { return "Could not parse Campaign metadata"; }
16 };
17 
18 enum class Cmd {
19  Accept,
20  Decline,
21  Postpone,
22 };
23 
24 static inline Cmd cmdFromName(const std::string &name) {
25  return std::map<std::string, Cmd>{
26  {"campaign_accept", Cmd::Accept}, {"campaign_decline", Cmd::Decline}, {"campaign_postpone", Cmd::Postpone}}
27  .at(name);
28 }
29 
30 // Out of uptane concept: update campaign for a device
31 class Campaign {
32  public:
33  static std::vector<Campaign> campaignsFromJson(const Json::Value &json);
34  static void JsonFromCampaigns(const std::vector<Campaign> &in, Json::Value &out);
35  static std::vector<Campaign> fetchAvailableCampaigns(HttpInterface &http_client, const std::string &tls_server);
36 
37  public:
38  Campaign() = default;
39  Campaign(const Json::Value &json);
40  void getJson(Json::Value &out) const;
41 
42  std::string id;
43  std::string name;
44  int64_t size{0};
45  bool autoAccept{false};
46  std::string description;
47  int estInstallationDuration{0};
48  int estPreparationDuration{0};
49 };
50 
51 } // namespace campaign
52 
53 #endif
HttpInterface
Definition: httpinterface.h:38
campaign::CampaignParseError
Definition: campaign.h:13
campaign::Campaign
Definition: campaign.h:31