CCEngineServer/CMakeProject1/LicenseClient.h
2021-08-29 23:21:55 +02:00

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;
};