libLicenseClient/api/LicenseClient.h
2018-03-27 23:03:06 +02:00

45 lines
1.3 KiB
C++

#pragma once
#include "HTTPClient.h"
#include "ModuleUpdate.h"
#include "SystemParamsProvider.h"
#include <optional>
#include <set>
#include <string>
struct ActivationData
{
std::string activationId;
std::string appId;
SystemParams systemParams;
std::set<std::string> licensedModules;
};
std::optional<std::string> validateLicenseKey(const std::string& licenseKey);
class LicenseClient
{
public:
explicit LicenseClient(SystemParamsProvider& systemParamsProvider, const std::string& licenseFile);
virtual ~LicenseClient();
public:
void init();
bool isActivated() const { return m_activationData.has_value(); }
bool tryPreactivate(HTTPClient &httpClient);
bool activate(HTTPClient &httpClient, const std::string& licenseNumber );
auto licensedModules() { if (!isActivated()) { throw std::runtime_error("Not active"); } return m_activationData->licensedModules; }
std::vector<ModuleUpdate> checkForUpdates(HTTPClient &httpClient, const std::map<std::string, ModuleVersion>& currentVersions);
private:
bool loadActivationData();
bool validateActivationData(const ActivationData& activationData);
private:
SystemParamsProvider& m_systemParamsProvider;
SystemParams m_systemParams;
std::string m_licenseFile;
std::optional<ActivationData> m_activationData;
};