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
166 lines
7.5 KiB
C++
166 lines
7.5 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 <httplib.h>
|
|
#include <memory>
|
|
#include <variant>
|
|
#include <optional>
|
|
|
|
// Project headers
|
|
#include "models/ErrorResponse.h"
|
|
#include "models/SimpleObject.h"
|
|
#include "models/TestAllParameterTypes200Response.h"
|
|
#include "models/TestCookieParameters200Response.h"
|
|
#include "models/TestHeaderParameters200Response.h"
|
|
#include "models/TestHeaderParameters401Response.h"
|
|
#include "models/TestQueryParameters200Response.h"
|
|
#include "models/TestQueryParametersDeepObjectParameter.h"
|
|
|
|
namespace api {
|
|
class AuthenticationManager;
|
|
class Parameters {
|
|
public:
|
|
Parameters() = default;
|
|
virtual ~Parameters() = default;
|
|
/**
|
|
* @brief Register all routes for this API
|
|
* @param svr The httplib::Server instance to register routes on
|
|
*/
|
|
void registerRoutes(httplib::Server& svr);
|
|
// =========================
|
|
// ===== Request types =====
|
|
// =========================
|
|
|
|
/**
|
|
* @brief Request type for handlePostForParameterscombinedresourceId.
|
|
*/
|
|
struct ParameterscombinedresourceIdPostRequest
|
|
{
|
|
std::optional<models::SimpleObject> m_request; //Request Body (optional)
|
|
std::string m_filter; //Query Params (required)
|
|
std::optional<int> m_limit; //Query Params (optional)
|
|
std::string m_xCorrelationId; //HeaderParams (required)
|
|
std::optional<std::string> m_xClientVersion; //HeaderParams (optional)
|
|
int m_resourceId; //PathParams (always required)
|
|
std::string m_authToken; //Cookies (required)
|
|
std::optional<std::string> m_userPrefs; //Cookies (optional)
|
|
};
|
|
|
|
/**
|
|
* @brief Request type for handleGetForParameterscookies.
|
|
*/
|
|
struct ParameterscookiesGetRequest
|
|
{
|
|
|
|
std::string m_sessionId; //Cookies (required)
|
|
std::optional<int> m_userId; //Cookies (optional)
|
|
std::optional<std::string> m_preferences; //Cookies (optional)
|
|
};
|
|
|
|
/**
|
|
* @brief Request type for handleGetForParametersheaders.
|
|
*/
|
|
struct ParametersheadersGetRequest
|
|
{
|
|
|
|
std::string m_xApiVersion; //HeaderParams (required)
|
|
std::optional<std::string> m_xRequestId; //HeaderParams (optional)
|
|
std::optional<int> m_xRateLimit; //HeaderParams (optional)
|
|
std::optional<std::vector<std::string>> m_xTags; //HeaderParams (optional)
|
|
};
|
|
|
|
/**
|
|
* @brief Request type for handleGetForParametersquerypathId.
|
|
*/
|
|
struct ParametersquerypathIdGetRequest
|
|
{
|
|
|
|
std::string m_stringParam; //Query Params (required)
|
|
std::optional<int> m_intParam; //Query Params (optional)
|
|
std::optional<bool> m_boolParam; //Query Params (optional)
|
|
std::optional<std::vector<std::string>> m_arrayParam; //Query Params (optional)
|
|
std::optional<std::vector<std::string>> m_spaceDelimited; //Query Params (optional)
|
|
std::optional<std::vector<int>> m_pipeDelimited; //Query Params (optional)
|
|
std::optional<models::TestQueryParametersDeepObjectParameter> m_deepObject; //Query Params (optional)
|
|
int m_pathId; //PathParams (always required)
|
|
};
|
|
|
|
// ==========================
|
|
// ===== Response types =====
|
|
// ==========================
|
|
|
|
/**
|
|
* @brief Response type for handlePostForParameterscombinedresourceId.
|
|
*/
|
|
using ParameterscombinedresourceIdPostResponse = std::variant<
|
|
models::TestAllParameterTypes200Response ,
|
|
models::ErrorResponse >;
|
|
|
|
/**
|
|
* @brief Response type for handleGetForParameterscookies.
|
|
*/
|
|
using ParameterscookiesGetResponse = models::TestCookieParameters200Response;
|
|
|
|
/**
|
|
* @brief Response type for handleGetForParametersheaders.
|
|
*/
|
|
using ParametersheadersGetResponse = std::variant<
|
|
models::TestHeaderParameters200Response ,
|
|
models::TestHeaderParameters401Response >;
|
|
|
|
/**
|
|
* @brief Response type for handleGetForParametersquerypathId.
|
|
*/
|
|
using ParametersquerypathIdGetResponse = models::TestQueryParameters200Response;
|
|
// ============================================================
|
|
// ===== Pure virtual functions to be handled by the user =====
|
|
// ============================================================
|
|
/**
|
|
* ParameterscombinedresourceIdPostRequest - struct containing all the query parameters and headers and schemas as available.
|
|
* @return ParameterscombinedresourceIdPostResponse The response type returned by the handler.
|
|
*/
|
|
virtual ParameterscombinedresourceIdPostResponse handlePostForParameterscombinedresourceId(const ParameterscombinedresourceIdPostRequest& params)=0;
|
|
|
|
/**
|
|
* ParameterscookiesGetRequest - struct containing all the query parameters and headers and schemas as available.
|
|
* @return ParameterscookiesGetResponse The response type returned by the handler.
|
|
*/
|
|
virtual ParameterscookiesGetResponse handleGetForParameterscookies(const ParameterscookiesGetRequest& params)=0;
|
|
|
|
/**
|
|
* ParametersheadersGetRequest - struct containing all the query parameters and headers and schemas as available.
|
|
* @return ParametersheadersGetResponse The response type returned by the handler.
|
|
*/
|
|
virtual ParametersheadersGetResponse handleGetForParametersheaders(const ParametersheadersGetRequest& params)=0;
|
|
|
|
/**
|
|
* ParametersquerypathIdGetRequest - struct containing all the query parameters and headers and schemas as available.
|
|
* @return ParametersquerypathIdGetResponse The response type returned by the handler.
|
|
*/
|
|
virtual ParametersquerypathIdGetResponse handleGetForParametersquerypathId(const ParametersquerypathIdGetRequest& params)=0;
|
|
|
|
private:
|
|
// ========================================
|
|
// ===== Helper function declarations =====
|
|
// ========================================
|
|
static bool parseParameterscombinedresourceIdPostParams(const httplib::Request& req, ParameterscombinedresourceIdPostRequest& params, std::vector<std::string>& paramErrors);
|
|
void handleParameterscombinedresourceIdPostRequest(const httplib::Request& req, httplib::Response& res);
|
|
static void handleParameterscombinedresourceIdPostResponse(const ParameterscombinedresourceIdPostResponse& result, httplib::Response& res);
|
|
static bool parseParameterscookiesGetParams(const httplib::Request& req, ParameterscookiesGetRequest& params, std::vector<std::string>& paramErrors);
|
|
void handleParameterscookiesGetRequest(const httplib::Request& req, httplib::Response& res);
|
|
static void handleParameterscookiesGetResponse(const ParameterscookiesGetResponse& result, httplib::Response& res);
|
|
static bool parseParametersheadersGetParams(const httplib::Request& req, ParametersheadersGetRequest& params, std::vector<std::string>& paramErrors);
|
|
void handleParametersheadersGetRequest(const httplib::Request& req, httplib::Response& res);
|
|
static void handleParametersheadersGetResponse(const ParametersheadersGetResponse& result, httplib::Response& res);
|
|
static bool parseParametersquerypathIdGetParams(const httplib::Request& req, ParametersquerypathIdGetRequest& params, std::vector<std::string>& paramErrors);
|
|
void handleParametersquerypathIdGetRequest(const httplib::Request& req, httplib::Response& res);
|
|
static void handleParametersquerypathIdGetResponse(const ParametersquerypathIdGetResponse& result, httplib::Response& res);
|
|
};
|
|
|
|
} // namespace api
|