Files
openapi-generator/samples/server/petstore/cpp-httplib-server/feature-test/api/ParametersApi.h
vasireddyrajesh b96334ffad Add standalone C++ server using cpp-httplib for OpenAPI-based APIs (#21724)
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
2026-02-12 19:41:05 +08:00

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