From 0745c75bd8e49757fd003c076f2ae98dc2ee5439 Mon Sep 17 00:00:00 2001 From: Per Larsson Date: Wed, 23 Mar 2022 14:01:34 +0100 Subject: Added route '/prj/list' for retrieving project info. --- zenserver/projectstore.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'zenserver/projectstore.cpp') diff --git a/zenserver/projectstore.cpp b/zenserver/projectstore.cpp index 113a7cec4..79ebc0a65 100644 --- a/zenserver/projectstore.cpp +++ b/zenserver/projectstore.cpp @@ -932,6 +932,17 @@ ProjectStore::DiscoverProjects() } } +void +ProjectStore::IterateProjects(std::function&& Fn) +{ + RwLock::SharedLockScope _(m_ProjectsLock); + + for (auto& Kv : m_Projects) + { + Fn(Kv.second); + } +} + void ProjectStore::Flush() { @@ -1071,6 +1082,27 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects) m_Router.AddPattern("chunk", "([[:xdigit:]]{24})"); m_Router.AddPattern("hash", "([[:xdigit:]]{40})"); + m_Router.RegisterRoute( + "/list", + [this](HttpRouterRequest& Req) { + m_ProjectStore->DiscoverProjects(); + + CbWriter Response; + Response.BeginArray(); + m_ProjectStore->IterateProjects([&Response](ProjectStore::Project& Prj) { + Response.BeginObject(); + Response << "Id"sv << Prj.Identifier; + Response << "RootDir"sv << Prj.RootDir.string(); + Response << "ProjectRootDir"sv << Prj.ProjectRootDir; + Response << "EngineRootDir"sv << Prj.EngineRootDir; + Response.EndObject(); + }); + Response.EndArray(); + + Req.ServerRequest().WriteResponse(HttpResponseCode::OK, Response.Save().AsArray()); + }, + HttpVerb::kGet); + m_Router.RegisterRoute( "{project}/oplog/{log}/batch", [this](HttpRouterRequest& Req) { -- cgit v1.2.3 From 1bba6125a1cc47424569ad9c966a43bb3b33c17e Mon Sep 17 00:00:00 2001 From: Per Larsson Date: Wed, 23 Mar 2022 14:06:00 +0100 Subject: Fixed wrong route pattern. --- zenserver/projectstore.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'zenserver/projectstore.cpp') diff --git a/zenserver/projectstore.cpp b/zenserver/projectstore.cpp index 79ebc0a65..58b806989 100644 --- a/zenserver/projectstore.cpp +++ b/zenserver/projectstore.cpp @@ -1083,7 +1083,7 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects) m_Router.AddPattern("hash", "([[:xdigit:]]{40})"); m_Router.RegisterRoute( - "/list", + "list", [this](HttpRouterRequest& Req) { m_ProjectStore->DiscoverProjects(); -- cgit v1.2.3