43 lines
1.2 KiB
C++
43 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "SystemParamsProvider.h"
|
|
|
|
#include <optional>
|
|
#include <set>
|
|
#include <string>
|
|
#include <stdexcept>
|
|
|
|
struct ActivationData
|
|
{
|
|
std::string activationId;
|
|
std::string productId;
|
|
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();
|
|
std::string buildActivationRequest();
|
|
bool isActivated() const { return m_activationData.has_value(); }
|
|
std::optional<std::string> activationNumber() const { return m_activationData.has_value() ? m_activationData->activationId : std::optional<std::string>(); }
|
|
auto licensedModules() { if (!isActivated()) { throw std::runtime_error("Not active"); } return m_activationData->licensedModules; }
|
|
|
|
private:
|
|
bool loadActivationData();
|
|
bool validateActivationData(const ActivationData& activationData);
|
|
|
|
private:
|
|
SystemParamsProvider& m_systemParamsProvider;
|
|
SystemParams m_systemParams;
|
|
std::string m_licenseFile;
|
|
std::optional<ActivationData> m_activationData;
|
|
};
|