Skip to content
This repository was archived by the owner on Jul 4, 2025. It is now read-only.

Commit c6523e9

Browse files
committed
fix: swagger getting configuration from config file
1 parent 52acbfa commit c6523e9

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

engine/controllers/swagger.cc

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,17 @@ constexpr auto ScalarUi = R"(
2222
</html>
2323
)";
2424

25-
Json::Value SwaggerController::generateOpenAPISpec() {
25+
Json::Value SwaggerController::GenerateOpenApiSpec() const {
2626
Json::Value root;
2727
Json::Reader reader;
2828
reader.parse(CortexOpenApi::GetOpenApiJson(), root);
29+
30+
Json::Value server_url;
31+
server_url["url"] = host_ + ":" + port_;
32+
Json::Value resp_data(Json::arrayValue);
33+
resp_data.append(server_url);
34+
35+
root["servers"] = resp_data;
2936
return root;
3037
}
3138

@@ -41,7 +48,7 @@ void SwaggerController::serveSwaggerUI(
4148
void SwaggerController::serveOpenAPISpec(
4249
const drogon::HttpRequestPtr& req,
4350
std::function<void(const drogon::HttpResponsePtr&)>&& callback) const {
44-
Json::Value spec = generateOpenAPISpec();
51+
auto spec = GenerateOpenApiSpec();
4552
auto resp = cortex_utils::CreateCortexHttpJsonResponse(spec);
4653
callback(resp);
4754
}

engine/controllers/swagger.h

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@
55

66
using namespace drogon;
77

8-
class SwaggerController : public drogon::HttpController<SwaggerController> {
8+
class SwaggerController
9+
: public drogon::HttpController<SwaggerController, false> {
10+
911
public:
1012
METHOD_LIST_BEGIN
1113
ADD_METHOD_TO(SwaggerController::serveSwaggerUI, "/", Get);
1214
ADD_METHOD_TO(SwaggerController::serveOpenAPISpec, "/openapi.json", Get);
1315
METHOD_LIST_END
1416

17+
explicit SwaggerController(const std::string& host, const std::string& port)
18+
: host_{host}, port_{port} {};
19+
1520
void serveSwaggerUI(
1621
const drogon::HttpRequestPtr& req,
1722
std::function<void(const drogon::HttpResponsePtr&)>&& callback) const;
@@ -21,6 +26,10 @@ class SwaggerController : public drogon::HttpController<SwaggerController> {
2126
std::function<void(const drogon::HttpResponsePtr&)>&& callback) const;
2227

2328
private:
29+
std::string host_;
30+
std::string port_;
31+
2432
static const std::string swaggerUIHTML;
25-
static Json::Value generateOpenAPISpec();
26-
};
33+
34+
Json::Value GenerateOpenApiSpec() const;
35+
};

engine/main.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "controllers/models.h"
1212
#include "controllers/process_manager.h"
1313
#include "controllers/server.h"
14+
#include "controllers/swagger.h"
1415
#include "controllers/threads.h"
1516
#include "database/database.h"
1617
#include "migrations/migration_manager.h"
@@ -155,6 +156,8 @@ void RunServer(std::optional<int> port, bool ignore_cout) {
155156
file_watcher_srv->start();
156157

157158
// initialize custom controllers
159+
auto swagger_ctl = std::make_shared<SwaggerController>(config.apiServerHost,
160+
config.apiServerPort);
158161
auto file_ctl = std::make_shared<Files>(file_srv, message_srv);
159162
auto assistant_ctl = std::make_shared<Assistants>(assistant_srv);
160163
auto thread_ctl = std::make_shared<Threads>(thread_srv, message_srv);
@@ -169,6 +172,7 @@ void RunServer(std::optional<int> port, bool ignore_cout) {
169172
std::make_shared<inferences::server>(inference_svc, engine_service);
170173
auto config_ctl = std::make_shared<Configs>(config_service);
171174

175+
drogon::app().registerController(swagger_ctl);
172176
drogon::app().registerController(file_ctl);
173177
drogon::app().registerController(assistant_ctl);
174178
drogon::app().registerController(thread_ctl);

0 commit comments

Comments
 (0)