45 lines
1.3 KiB
C++
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;
|
|
};
|