Orbit Framework
An ultra-modern, asynchronous, cross-platform C++ Web Framework.
Loading...
Searching...
No Matches
OpenApi.hpp
Go to the documentation of this file.
1#pragma once
2#include <string>
3#include <vector>
4#include <map>
5#include <unordered_map>
7
8namespace openapi {
9
11 std::string summary;
12 std::string description;
13 std::vector<std::string> tags;
15 std::unordered_map<int, std::string> response_schemas;
16};
17
19public:
21 static OpenApiRegistry registry;
22 return registry;
23 }
24
25 void register_route(http::HttpMethod method, const std::string& path, const RouteMetadata& meta);
26
27 // Register a JSON schema (e.g. for a User object)
28 void register_schema(const std::string& name, const std::string& json_schema_body);
29
30 std::string generate_swagger_json(const std::string& title, const std::string& version) const;
31
32private:
33 OpenApiRegistry() = default;
34
35 struct EndpointMap {
36 std::map<http::HttpMethod, RouteMetadata> methods;
37 };
38
39 // path -> endpoints
40 std::map<std::string, EndpointMap> paths_;
41
42 // schema_name -> schema_json_body
43 std::unordered_map<std::string, std::string> schemas_;
44
45 std::string method_to_string(http::HttpMethod method) const;
46 std::string escape_json(const std::string& s) const;
47};
48
49} // namespace openapi
Definition OpenApi.hpp:18
std::string generate_swagger_json(const std::string &title, const std::string &version) const
Definition OpenApi.cpp:44
void register_route(http::HttpMethod method, const std::string &path, const RouteMetadata &meta)
Definition OpenApi.cpp:7
static OpenApiRegistry & instance()
Definition OpenApi.hpp:20
void register_schema(const std::string &name, const std::string &json_schema_body)
Definition OpenApi.cpp:13
HttpMethod
Represents standard HTTP methods.
Definition HttpRequest.hpp:17
Definition OpenApi.hpp:8
Definition OpenApi.hpp:10
std::string summary
Definition OpenApi.hpp:11
std::vector< std::string > tags
Definition OpenApi.hpp:13
std::string request_body_schema
Definition OpenApi.hpp:14
std::string description
Definition OpenApi.hpp:12
std::unordered_map< int, std::string > response_schemas
Definition OpenApi.hpp:15