deskflow/src/lib/shared/SerialKeyParser.h
Serhii Hadzhilov 660853d1ac
SYNERGY1-1511 Refactoring for v3 licenses (#7183)
* SYNERGY1-1511 Refactor SerialKey constructor

* SYNERGY1-1511 Refactor SerialKey::parse

* SYNERGY1-1511 Remove unused includes

* SYNERGY1-1511 Remove key generation

* SYNERGY1-1511 Remove "using namespace std;"

* SYNERGY1-1511 Add struct SerialKeyData

* SYNERGY1-1511 Replace member with the new DTO

* SYNERGY1-1511 Rename members

* SYNERGY1-1511 Add a new class SerialKeyParser

* SYNERGY1-1511 Use SerialKeyParser

* Add SerialKeyParserV3

* Add setters and remove unused fields

* Fix return type

* Add comments

* Fix compilation

* Fix code smels

* Update ChangeLog
2022-06-01 18:17:02 +03:00

101 lines
2.8 KiB
C++

/*
* synergy -- mouse and keyboard sharing utility
* Copyright (C) 2022 Symless Ltd.
*
* This package is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* found in the file LICENSE that should have accompanied this file.
*
* This package is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <string>
#include <vector>
#include "SerialKeyData.h"
class SerialKeyParser
{
public:
/**
* @brief ~SerialKeyParser destructor
*/
virtual ~SerialKeyParser(){}
/**
* @brief parse serial key
* @param plainSerial encoded serial key
* @return true if parsed
*/
virtual bool parse(const std::string& plainSerial);
/**
* @brief getData getter for serial key data
* @return serial key data as DTO
*/
const SerialKeyData& getData() const;
/**
* @brief setKey setter to set encoded key
* @param key encoded serial key
*/
void setKey(const std::string& key);
/**
* @brief setType setter for serial type
* @param type serial key type
*/
void setType(const std::string& type);
/**
* @brief setEdition setter for serial edition
* @param edition serial key edition
*/
void setEdition(const std::string& edition);
/**
* @brief setWarningTime setter for warning time
* @param warnTime warning time for key as a string
*/
void setWarningTime(const std::string& warnTime);
/**
* @brief setExpirationTime setter for expiration date
* @param expTime expiration data as a string
*/
void setExpirationTime(const std::string& expTime);
private:
/**
* @brief decode serial key from encoded string
* @param encoded serial key as a string
* @return decoded serial key as a string
*/
std::string decode(const std::string& serial) const;
/**
* @brief parseV1 parse serial key version 1
* @param parts of serial key version 1
*/
void parseV1(const std::vector<std::string>& parts);
/**
* @brief parseV2 parse serial key version 2
* @param parts parts of serial key version 2
*/
void parseV2(const std::vector<std::string>& parts);
/**
* @brief splitToParts splits decoded serial key to parts
* @param plainSerial decoded serial key as a string
* @return splitted serial key
*/
std::vector<std::string> splitToParts(const std::string& plainSerial) const;
SerialKeyData m_data{}; //serial key data
};