forked from loafle/openapi-generator-original
Supports: All OpenAPI 3.x data types: primitives, arrays, enums, nullable/optional fields, nested objects All parameter types: path, query, header, cookie, and combinations Schema composition: allOf (inheritance), oneOf (discriminated unions), anyOf (flexible unions) Security schemes: API key and bearer token authentication Discriminator-based polymorphic deserialization and error handling Provides: Error handling for invalid JSON, type mismatches, missing/unknown discriminator, and parameter validation Build system integration (CMake) for easy compilation and linking with required dependencies Clear build and run instructions for local development and testing Enables comprehensive, real-world validation of generated C++ server code against OpenAPI specifications
69 lines
1.6 KiB
C++
69 lines
1.6 KiB
C++
/**
|
|
* This file is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
* https://openapi-generator.tech
|
|
* Do not edit the class manually.
|
|
*/
|
|
|
|
#pragma once
|
|
// System headers
|
|
#include <nlohmann/json.hpp>
|
|
#include <string>
|
|
|
|
|
|
|
|
namespace models {
|
|
|
|
|
|
class CreditCard
|
|
{
|
|
public:
|
|
enum class CardTypeEnum {
|
|
UNSPECIFIED,
|
|
VISA,
|
|
MASTERCARD,
|
|
AMEX
|
|
};
|
|
|
|
// Enum conversion functions (definitions in .cpp)
|
|
static std::string CardTypeEnumToString(CardTypeEnum value);
|
|
static CardTypeEnum CardTypeEnumFromString(const std::string& str);
|
|
|
|
|
|
CreditCard();
|
|
virtual ~CreditCard() = default;
|
|
|
|
// Getters and setters
|
|
[[nodiscard]] std::string getPaymentType() const;
|
|
void setPaymentType(const std::string& paymentType);
|
|
[[nodiscard]] std::string getCardNumber() const;
|
|
void setCardNumber(const std::string& cardNumber);
|
|
[[nodiscard]] CardTypeEnum getCardType() const;
|
|
void setCardType(const CardTypeEnum& cardType);
|
|
|
|
// Serialization helpers for CardTypeEnum
|
|
friend inline void to_json(nlohmann::json& j, const CardTypeEnum& e)
|
|
{
|
|
j = CardTypeEnumToString(e);
|
|
}
|
|
|
|
friend inline void from_json(const nlohmann::json& j, CardTypeEnum& e)
|
|
{
|
|
e = CardTypeEnumFromString(j.get<std::string>());
|
|
}
|
|
|
|
|
|
|
|
// JSON serialization using NLOHMANN INTRUSIVE macro (must be inside class to access private members)
|
|
NLOHMANN_DEFINE_TYPE_INTRUSIVE(CreditCard,
|
|
paymentType, cardNumber, cardType)
|
|
|
|
private:
|
|
std::string paymentType;
|
|
std::string cardNumber;
|
|
CardTypeEnum cardType;
|
|
};
|
|
|
|
|
|
} // namespace models
|
|
|