OdbDesignLib
OdbDesign ODB++ Parsing Library
RouteController.cpp
1 #include "RouteController.h"
2 
3 
4 namespace 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() 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  return crow::response(jsonResponse);
78  }
79 }