Skip to content
GitLab
    • Explore Projects Groups Snippets
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • O openapi-generator
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3,476
    • Issues 3,476
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 402
    • Merge requests 402
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • OpenAPI Tools
  • openapi-generator
  • Merge requests
  • !2911

[C++][Restbed] Add handler callback methods

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Administrator requested to merge github/fork/muttleyxd/restbed-callback into master 6 years ago
  • Overview 0
  • Commits 2
  • Pipelines 0
  • Changes 21

Created by: muttleyxd

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first. Added second commit with updated samples (not 100% sure what I should do with them), are there any tests for these? I didn't find any.
  • Filed the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language. @ravinikam @stkrwork @fvarose @etherealjoy @MartinDelille

Description of the PR

Related issue: #273 What I don't like about current generator: you need to modify generated code, there isn't a way for injecting your own handler. librestbed does not allow to replace already existing handler, which means you either modify generated code or don't use it at all. I modified it a little, to allow setting a callback, which responds with std::pair<int (HTTP status code), std::string (response)>

I'm not an expert on Mustache, so I would be really grateful for some tips where I could optimize/refactor it.

Compare
  • master (base)

and
  • latest version
    da960864
    2 commits, 2 years ago

21 files
+ 773
- 258

    Preferences

    File browser
    Compare changes
modules/…/…/…/…/c‎pp-restbed-server‎
api-heade‎r.mustache‎ +27 -0
api-sourc‎e.mustache‎ +44 -20
samples/server/pe‎tstore/cpp-restbed‎
.openapi-‎generator‎
VER‎SION‎ +1 -1
a‎pi‎
PetAp‎i.cpp‎ +170 -80
PetA‎pi.h‎ +93 -2
StoreA‎pi.cpp‎ +89 -43
Store‎Api.h‎ +51 -2
UserA‎pi.cpp‎ +176 -84
User‎Api.h‎ +98 -2
mo‎del‎
ApiResp‎onse.cpp‎ +2 -2
ApiRes‎ponse.h‎ +2 -2
Catego‎ry.cpp‎ +2 -2
Categ‎ory.h‎ +2 -2
Orde‎r.cpp‎ +2 -2
Ord‎er.h‎ +2 -2
Pet‎.cpp‎ +2 -2
Pe‎t.h‎ +2 -2
Tag‎.cpp‎ +2 -2
Ta‎g.h‎ +2 -2
User‎.cpp‎ +2 -2
Use‎r.h‎ +2 -2
modules/openapi-generator/src/main/resources/cpp-restbed-server/api-header.mustache
+ 27
- 0
  • View file @ da960864

  • Edit in single-file editor

  • Open in Web IDE


@@ -10,6 +10,8 @@
{{{defaultInclude}}}
#include <memory>
#include <utility>
#include <corvusoft/restbed/session.hpp>
#include <corvusoft/restbed/resource.hpp>
#include <corvusoft/restbed/service.hpp>
@@ -49,6 +51,31 @@ public:
{{#vendorExtensions.x-codegen-otherMethods}}
void {{httpMethod}}_method_handler(const std::shared_ptr<restbed::Session> session);
{{/vendorExtensions.x-codegen-otherMethods}}
void set_handler_{{httpMethod}}(
std::function<std::pair<int, std::string>(
{{#allParams}}{{{dataType}}} const &{{#hasMore}}, {{/hasMore}}{{/allParams}}
)> handler
);
{{#vendorExtensions.x-codegen-otherMethods}}
void set_handler_{{httpMethod}}(
std::function<std::pair<int, std::string>(
{{#allParams}}{{{dataType}}} const &{{#hasMore}}, {{/hasMore}}{{/allParams}}
)> handler
);
{{/vendorExtensions.x-codegen-otherMethods}}
private:
std::function<std::pair<int, std::string>(
{{#allParams}}{{{dataType}}} const &{{#hasMore}}, {{/hasMore}}{{/allParams}}
)> handler_{{httpMethod}}_;
{{#vendorExtensions.x-codegen-otherMethods}}
std::function<std::pair<int, std::string>(
{{#allParams}}{{{dataType}}} const &{{#hasMore}}, {{/hasMore}}{{/allParams}}
)> handler_{{httpMethod}}_;
{{/vendorExtensions.x-codegen-otherMethods}}
};
{{/operation}}
modules/openapi-generator/src/main/resources/cpp-restbed-server/api-source.mustache
+ 44
- 20
  • View file @ da960864

  • Edit in single-file editor

  • Open in Web IDE


@@ -54,6 +54,22 @@ void {{classname}}::stopService() {
{
}
void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::set_handler_{{httpMethod}}(
std::function<std::pair<int, std::string>(
{{#allParams}}{{{dataType}}} const &{{#hasMore}}, {{/hasMore}}{{/allParams}}
)> handler) {
handler_{{httpMethod}}_ = std::move(handler);
}
{{#vendorExtensions.x-codegen-otherMethods}}
void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::set_handler_{{httpMethod}}(
std::function<std::pair<int, std::string>(
{{#allParams}}{{{dataType}}} const &{{#hasMore}}, {{/hasMore}}{{/allParams}}
)> handler) {
handler_{{httpMethod}}_ = std::move(handler);
}
{{/vendorExtensions.x-codegen-otherMethods}}
void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMethod}}_method_handler(const std::shared_ptr<restbed::Session> session) {
const auto request = session->get_request();
@@ -65,12 +81,12 @@ void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMet
{
const auto request = session->get_request();
std::string requestBody = restbed::String::format("%.*s\n", ( int ) body.size( ), body.data( ));
std::string file = restbed::String::format("%.*s\n", ( int ) body.size( ), body.data( ));
/**
* Get body params or form params here from the requestBody string
* Get body params or form params here from the file string
*/
{{/hasBodyParam}}
{{#hasPathParams}}
// Getting the path params
{{#pathParams}}
@@ -79,7 +95,7 @@ void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMet
{{/isPrimitiveType}}
{{/pathParams}}
{{/hasPathParams}}
{{#hasQueryParams}}
// Getting the query params
{{#queryParams}}
@@ -97,21 +113,25 @@ void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMet
{{/isPrimitiveType}}
{{/headerParams}}
{{/hasHeaderParams}}
// Change the value of this variable to the appropriate response before sending the response
int status_code = 200;
/**
* Process the received information here
*/
std::string result = "successful operation";
if (handler_{{httpMethod}}_)
{
std::tie(status_code, result) = handler_{{httpMethod}}_(
{{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}
);
}
{{#responses}}
if (status_code == {{code}}) {
{{#headers}}
// Description: {{description}}
session->set_header("{{baseName}}", ""); // Change second param to your header value
{{/headers}}
session->close({{code}}, "{{message}}", { {"Connection", "close"} });
session->close({{code}}, result.empty() ? "{{message}}" : std::move(result), { {"Connection", "close"} });
return;
}
{{/responses}}
@@ -133,7 +153,7 @@ void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMet
{
const auto request = session->get_request();
std::string requestBody = restbed::String::format("%.*s\n", ( int ) body.size( ), body.data( ));
std::string file = restbed::String::format("%.*s\n", ( int ) body.size( ), body.data( ));
{{/hasBodyParam}}
{{#hasPathParams}}
@@ -144,7 +164,7 @@ void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMet
{{/isPrimitiveType}}
{{/pathParams}}
{{/hasPathParams}}
{{#hasQueryParams}}
// Getting the query params
{{#queryParams}}
@@ -162,14 +182,18 @@ void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMet
{{/isPrimitiveType}}
{{/headerParams}}
{{/hasHeaderParams}}
// Change the value of this variable to the appropriate response before sending the response
int status_code = 200;
/**
* Process the received information here
*/
std::string result = "successful operation";
if (handler_{{httpMethod}}_)
{
std::tie(status_code, result) = handler_{{httpMethod}}_(
{{#allParams}}{{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}
);
}
{{#responses}}
if (status_code == {{code}}) {
{{#baseType}}
@@ -179,7 +203,7 @@ void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMet
// Description: {{description}}
session->set_header("{{baseName}}", ""); // Change second param to your header value
{{/headers}}
session->close({{code}}, "{{message}}", { {"Connection", "close"} });
session->close({{code}}, result.empty() ? "{{message}}" : std::move(result), { {"Connection", "close"} });
return;
}
{{/responses}}
samples/server/petstore/cpp-restbed/.openapi-generator/VERSION
+ 1
- 1
  • View file @ da960864

  • Edit in single-file editor

  • Open in Web IDE

3.3.1-SNAPSHOT
\ No newline at end of file
4.0.1-SNAPSHOT
\ No newline at end of file
samples/server/petstore/cpp-restbed/api/PetApi.cpp
+ 170
- 80
  • View file @ da960864

  • Edit in single-file editor

  • Open in Web IDE


@@ -2,10 +2,10 @@
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
* The version of the OpenAPI document: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI-Generator 4.0.0-SNAPSHOT.
* NOTE: This class is auto generated by OpenAPI-Generator 4.0.1-SNAPSHOT.
* https://openapi-generator.tech
* Do not edit the class manually.
*/
@@ -72,6 +72,20 @@ PetApiPetResource::~PetApiPetResource()
{
}
void PetApiPetResource::set_handler_POST(
std::function<std::pair<int, std::string>(
std::shared_ptr<Pet> const &
)> handler) {
handler_POST_ = std::move(handler);
}
void PetApiPetResource::set_handler_PUT(
std::function<std::pair<int, std::string>(
std::shared_ptr<Pet> const &
)> handler) {
handler_PUT_ = std::move(handler);
}
void PetApiPetResource::POST_method_handler(const std::shared_ptr<restbed::Session> session) {
const auto request = session->get_request();
@@ -82,23 +96,27 @@ void PetApiPetResource::POST_method_handler(const std::shared_ptr<restbed::Sessi
{
const auto request = session->get_request();
std::string requestBody = restbed::String::format("%.*s\n", ( int ) body.size( ), body.data( ));
std::string file = restbed::String::format("%.*s\n", ( int ) body.size( ), body.data( ));
/**
* Get body params or form params here from the requestBody string
* Get body params or form params here from the file string
*/
// Change the value of this variable to the appropriate response before sending the response
int status_code = 200;
/**
* Process the received information here
*/
std::string result = "successful operation";
if (handler_POST_)
{
std::tie(status_code, result) = handler_POST_(
body
);
}
if (status_code == 405) {
session->close(405, "Invalid input", { {"Connection", "close"} });
session->close(405, result.empty() ? "Invalid input" : std::move(result), { {"Connection", "close"} });
return;
}
@@ -115,28 +133,32 @@ void PetApiPetResource::PUT_method_handler(const std::shared_ptr<restbed::Sessio
{
const auto request = session->get_request();
std::string requestBody = restbed::String::format("%.*s\n", ( int ) body.size( ), body.data( ));
std::string file = restbed::String::format("%.*s\n", ( int ) body.size( ), body.data( ));
// Change the value of this variable to the appropriate response before sending the response
int status_code = 200;
/**
* Process the received information here
*/
std::string result = "successful operation";
if (handler_PUT_)
{
std::tie(status_code, result) = handler_PUT_(
body
);
}
if (status_code == 400) {
session->close(400, "Invalid ID supplied", { {"Connection", "close"} });
session->close(400, result.empty() ? "Invalid ID supplied" : std::move(result), { {"Connection", "close"} });
return;
}
if (status_code == 404) {
session->close(404, "Pet not found", { {"Connection", "close"} });
session->close(404, result.empty() ? "Pet not found" : std::move(result), { {"Connection", "close"} });
return;
}
if (status_code == 405) {
session->close(405, "Validation exception", { {"Connection", "close"} });
session->close(405, result.empty() ? "Validation exception" : std::move(result), { {"Connection", "close"} });
return;
}
@@ -162,26 +184,50 @@ PetApiPetPetIdResource::~PetApiPetPetIdResource()
{
}
void PetApiPetPetIdResource::set_handler_DELETE(
std::function<std::pair<int, std::string>(
int64_t const &, std::string const &
)> handler) {
handler_DELETE_ = std::move(handler);
}
void PetApiPetPetIdResource::set_handler_GET(
std::function<std::pair<int, std::string>(
int64_t const &
)> handler) {
handler_GET_ = std::move(handler);
}
void PetApiPetPetIdResource::set_handler_POST(
std::function<std::pair<int, std::string>(
int64_t const &, std::string const &, std::string const &
)> handler) {
handler_POST_ = std::move(handler);
}
void PetApiPetPetIdResource::DELETE_method_handler(const std::shared_ptr<restbed::Session> session) {
const auto request = session->get_request();
// Getting the path params
const int64_t petId = request->get_path_parameter("petId", 0L);
// Getting the headers
const std::string apiKey = request->get_header("apiKey", "");
// Change the value of this variable to the appropriate response before sending the response
int status_code = 200;
/**
* Process the received information here
*/
std::string result = "successful operation";
if (handler_DELETE_)
{
std::tie(status_code, result) = handler_DELETE_(
petId, apiKey
);
}
if (status_code == 400) {
session->close(400, "Invalid pet value", { {"Connection", "close"} });
session->close(400, result.empty() ? "Invalid pet value" : std::move(result), { {"Connection", "close"} });
return;
}
@@ -193,27 +239,31 @@ void PetApiPetPetIdResource::GET_method_handler(const std::shared_ptr<restbed::S
// Getting the path params
const int64_t petId = request->get_path_parameter("petId", 0L);
// Change the value of this variable to the appropriate response before sending the response
int status_code = 200;
/**
* Process the received information here
*/
std::string result = "successful operation";
if (handler_GET_)
{
std::tie(status_code, result) = handler_GET_(
petId
);
}
if (status_code == 200) {
std::shared_ptr<Pet> response = NULL;
session->close(200, "successful operation", { {"Connection", "close"} });
session->close(200, result.empty() ? "successful operation" : std::move(result), { {"Connection", "close"} });
return;
}
if (status_code == 400) {
session->close(400, "Invalid ID supplied", { {"Connection", "close"} });
session->close(400, result.empty() ? "Invalid ID supplied" : std::move(result), { {"Connection", "close"} });
return;
}
if (status_code == 404) {
session->close(404, "Pet not found", { {"Connection", "close"} });
session->close(404, result.empty() ? "Pet not found" : std::move(result), { {"Connection", "close"} });
return;
}
@@ -224,18 +274,22 @@ void PetApiPetPetIdResource::POST_method_handler(const std::shared_ptr<restbed::
// Getting the path params
const int64_t petId = request->get_path_parameter("petId", 0L);
// Change the value of this variable to the appropriate response before sending the response
int status_code = 200;
/**
* Process the received information here
*/
std::string result = "successful operation";
if (handler_POST_)
{
std::tie(status_code, result) = handler_POST_(
petId, name, status
);
}
if (status_code == 405) {
session->close(405, "Invalid input", { {"Connection", "close"} });
session->close(405, result.empty() ? "Invalid input" : std::move(result), { {"Connection", "close"} });
return;
}
@@ -254,27 +308,39 @@ PetApiPetFindByStatusResource::~PetApiPetFindByStatusResource()
{
}
void PetApiPetFindByStatusResource::set_handler_GET(
std::function<std::pair<int, std::string>(
std::vector<std::string> const &
)> handler) {
handler_GET_ = std::move(handler);
}
void PetApiPetFindByStatusResource::GET_method_handler(const std::shared_ptr<restbed::Session> session) {
const auto request = session->get_request();
// Getting the query params
// Change the value of this variable to the appropriate response before sending the response
int status_code = 200;
/**
* Process the received information here
*/
std::string result = "successful operation";
if (handler_GET_)
{
std::tie(status_code, result) = handler_GET_(
status
);
}
if (status_code == 200) {
session->close(200, "successful operation", { {"Connection", "close"} });
session->close(200, result.empty() ? "successful operation" : std::move(result), { {"Connection", "close"} });
return;
}
if (status_code == 400) {
session->close(400, "Invalid status value", { {"Connection", "close"} });
session->close(400, result.empty() ? "Invalid status value" : std::move(result), { {"Connection", "close"} });
return;
}
@@ -294,27 +360,39 @@ PetApiPetFindByTagsResource::~PetApiPetFindByTagsResource()
{
}
void PetApiPetFindByTagsResource::set_handler_GET(
std::function<std::pair<int, std::string>(
std::vector<std::string> const &
)> handler) {
handler_GET_ = std::move(handler);
}
void PetApiPetFindByTagsResource::GET_method_handler(const std::shared_ptr<restbed::Session> session) {
const auto request = session->get_request();
// Getting the query params
// Change the value of this variable to the appropriate response before sending the response
int status_code = 200;
/**
* Process the received information here
*/
std::string result = "successful operation";
if (handler_GET_)
{
std::tie(status_code, result) = handler_GET_(
tags
);
}
if (status_code == 200) {
session->close(200, "successful operation", { {"Connection", "close"} });
session->close(200, result.empty() ? "successful operation" : std::move(result), { {"Connection", "close"} });
return;
}
if (status_code == 400) {
session->close(400, "Invalid tag value", { {"Connection", "close"} });
session->close(400, result.empty() ? "Invalid tag value" : std::move(result), { {"Connection", "close"} });
return;
}
@@ -334,24 +412,36 @@ PetApiPetPetIdUploadImageResource::~PetApiPetPetIdUploadImageResource()
{
}
void PetApiPetPetIdUploadImageResource::set_handler_POST(
std::function<std::pair<int, std::string>(
int64_t const &, std::string const &, std::string const &
)> handler) {
handler_POST_ = std::move(handler);
}
void PetApiPetPetIdUploadImageResource::POST_method_handler(const std::shared_ptr<restbed::Session> session) {
const auto request = session->get_request();
// Getting the path params
const int64_t petId = request->get_path_parameter("petId", 0L);
// Change the value of this variable to the appropriate response before sending the response
int status_code = 200;
/**
* Process the received information here
*/
std::string result = "successful operation";
if (handler_POST_)
{
std::tie(status_code, result) = handler_POST_(
petId, additionalMetadata, file
);
}
if (status_code == 200) {
session->close(200, "successful operation", { {"Connection", "close"} });
session->close(200, result.empty() ? "successful operation" : std::move(result), { {"Connection", "close"} });
return;
}
samples/server/petstore/cpp-restbed/api/PetApi.h
+ 93
- 2
  • View file @ da960864

  • Edit in single-file editor

  • Open in Web IDE


@@ -2,10 +2,10 @@
* OpenAPI Petstore
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
* The version of the OpenAPI document: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI-Generator 4.0.0-SNAPSHOT.
* NOTE: This class is auto generated by OpenAPI-Generator 4.0.1-SNAPSHOT.
* https://openapi-generator.tech
* Do not edit the class manually.
*/
@@ -21,6 +21,8 @@
#include <memory>
#include <utility>
#include <corvusoft/restbed/session.hpp>
#include <corvusoft/restbed/resource.hpp>
#include <corvusoft/restbed/service.hpp>
@@ -59,6 +61,27 @@ public:
virtual ~PetApiPetResource();
void POST_method_handler(const std::shared_ptr<restbed::Session> session);
void PUT_method_handler(const std::shared_ptr<restbed::Session> session);
void set_handler_POST(
std::function<std::pair<int, std::string>(
std::shared_ptr<Pet> const &
)> handler
);
void set_handler_PUT(
std::function<std::pair<int, std::string>(
std::shared_ptr<Pet> const &
)> handler
);
private:
std::function<std::pair<int, std::string>(
std::shared_ptr<Pet> const &
)> handler_POST_;
std::function<std::pair<int, std::string>(
std::shared_ptr<Pet> const &
)> handler_PUT_;
};
/// <summary>
@@ -75,6 +98,35 @@ public:
void DELETE_method_handler(const std::shared_ptr<restbed::Session> session);
void GET_method_handler(const std::shared_ptr<restbed::Session> session);
void POST_method_handler(const std::shared_ptr<restbed::Session> session);
void set_handler_DELETE(
std::function<std::pair<int, std::string>(
int64_t const &, std::string const &
)> handler
);
void set_handler_GET(
std::function<std::pair<int, std::string>(
int64_t const &
)> handler
);
void set_handler_POST(
std::function<std::pair<int, std::string>(
int64_t const &, std::string const &, std::string const &
)> handler
);
private:
std::function<std::pair<int, std::string>(
int64_t const &, std::string const &
)> handler_DELETE_;
std::function<std::pair<int, std::string>(
int64_t const &
)> handler_GET_;
std::function<std::pair<int, std::string>(
int64_t const &, std::string const &, std::string const &
)> handler_POST_;
};
/// <summary>
@@ -89,6 +141,19 @@ public:
PetApiPetFindByStatusResource();
virtual ~PetApiPetFindByStatusResource();
void GET_method_handler(const std::shared_ptr<restbed::Session> session);
void set_handler_GET(
std::function<std::pair<int, std::string>(
std::vector<std::string> const &
)> handler
);
private:
std::function<std::pair<int, std::string>(
std::vector<std::string> const &
)> handler_GET_;
};
/// <summary>
@@ -103,6 +168,19 @@ public:
PetApiPetFindByTagsResource();
virtual ~PetApiPetFindByTagsResource();
void GET_method_handler(const std::shared_ptr<restbed::Session> session);
void set_handler_GET(
std::function<std::pair<int, std::string>(
std::vector<std::string> const &
)> handler
);
private:
std::function<std::pair<int, std::string>(
std::vector<std::string> const &
)> handler_GET_;
};
/// <summary>
@@ -117,6 +195,19 @@ public:
PetApiPetPetIdUploadImageResource();
virtual ~PetApiPetPetIdUploadImageResource();
void POST_method_handler(const std::shared_ptr<restbed::Session> session);
void set_handler_POST(
std::function<std::pair<int, std::string>(
int64_t const &, std::string const &, std::string const &
)> handler
);
private:
std::function<std::pair<int, std::string>(
int64_t const &, std::string const &, std::string const &
)> handler_POST_;
};
0 Assignees
None
Assign to
0 Reviewers
None
Request review from
Labels
0
None
0
None
    Assign labels
  • Manage project labels

Milestone
4.2.3
4.2.3 (expired)
None
Time tracking
No estimate or time spent
Lock merge request
Unlocked
0
0 participants
Reference: OpenAPITools/openapi-generator!4996
Source branch: github/fork/muttleyxd/restbed-callback

Menu

Explore Projects Groups Snippets