OdbDesignLib
OdbDesign ODB++ Parsing Library
 
Loading...
Searching...
No Matches
RouteController.cpp
1#include "RouteController.h"
2
3
4namespace Odb::Lib::App
5{
6 RouteController::RouteController(IOdbServerApp& serverApp)
7 : m_serverApp(serverApp)
8 {
9 }
10
11 void RouteController::register_route_handler(std::string route, TRouteHandlerFunction handler)
12 {
13 m_serverApp.crow_app().route_dynamic(std::move(route))
14 ([/*&,*/ handler](const crow::request& req)
15 {
17 //auto authResp = m_serverApp.request_auth().AuthenticateRequest(req);
18 //if (authResp.code != crow::status::OK)
19 //{
20 // return authResp;
21 //}
22
23 return handler(req);
24 });
25
26 //app.route<crow::black_magick::get_parameter_tag(url)>(url)
27 // or
28 //app.route_dynamic(url)
29
30 //m_serverApp.crow_app().route_dynamic(const_cast<std::string&&>(route)).methods("GET"_method, "POST"_method)([&](const crow::request& req)
31 // {
32 // return handler(req);
33 // })
34
36 //CROW_ROUTE(m_pServerApp->crow_app(), "/steps/edadata")
37 // ([&](const crow::request& req)
38 // {
39 // return handler(req);
40 // });
41 }
42
43 crow::response Odb::Lib::App::RouteController::makeLoadedFileModelsResponse(bool created) const
44 {
45 auto unloadedDesignNames = m_serverApp.designs().getUnloadedDesignNames();
46 auto loadedFileArchiveNames = m_serverApp.designs().getLoadedFileArchiveNames();
47 auto loadedDesignNames = m_serverApp.designs().getLoadedDesignNames();
48
49 crow::json::wvalue::list designs;
50 for (const auto& designName : unloadedDesignNames)
51 {
52 auto loaded = false;
53 auto isDesign = false;
54 if (std::find(loadedFileArchiveNames.begin(), loadedFileArchiveNames.end(), designName) != loadedFileArchiveNames.end())
55 {
56 loaded = true;
57 isDesign = false;
58 }
59 else if (std::find(loadedDesignNames.begin(), loadedDesignNames.end(), designName) != loadedDesignNames.end())
60 {
61 loaded = true;
62 isDesign = true;
63 }
64 crow::json::wvalue design;
65 design["name"] = designName;
66 design["loaded"] = loaded;
67 design["type"] = isDesign? "Design" : "FileArchive";
68 designs.push_back(design);
69 }
70 crow::json::wvalue jsonResponse;
71 jsonResponse["filearchives"] = std::move(designs);
72
73#if defined(_DEBUG)
74 auto j = jsonResponse.dump();
75#endif
76
77 // determine type of success code
78 auto httpCode = crow::status::OK;
79 if (created)
80 {
81 httpCode = crow::status::CREATED;
82 }
83 else if (unloadedDesignNames.empty())
84 {
85 httpCode = crow::status::NO_CONTENT;
86 }
87
88 return crow::response(httpCode , jsonResponse);
89 }
90}