diff options
| author | Per Larsson <[email protected]> | 2022-03-23 14:01:34 +0100 |
|---|---|---|
| committer | Per Larsson <[email protected]> | 2022-03-23 14:01:34 +0100 |
| commit | 0745c75bd8e49757fd003c076f2ae98dc2ee5439 (patch) | |
| tree | 9118c1bbcaf3d8936b054ec2caff8f12bf42b4a9 /zenserver/projectstore.cpp | |
| parent | Helper function for sending compact binary array HTTP response. (diff) | |
| download | zen-0745c75bd8e49757fd003c076f2ae98dc2ee5439.tar.xz zen-0745c75bd8e49757fd003c076f2ae98dc2ee5439.zip | |
Added route '/prj/list' for retrieving project info.
Diffstat (limited to 'zenserver/projectstore.cpp')
| -rw-r--r-- | zenserver/projectstore.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/zenserver/projectstore.cpp b/zenserver/projectstore.cpp index 113a7cec4..79ebc0a65 100644 --- a/zenserver/projectstore.cpp +++ b/zenserver/projectstore.cpp @@ -933,6 +933,17 @@ ProjectStore::DiscoverProjects() } void +ProjectStore::IterateProjects(std::function<void(Project& Prj)>&& Fn) +{ + RwLock::SharedLockScope _(m_ProjectsLock); + + for (auto& Kv : m_Projects) + { + Fn(Kv.second); + } +} + +void ProjectStore::Flush() { // TODO @@ -1072,6 +1083,27 @@ HttpProjectService::HttpProjectService(CidStore& Store, ProjectStore* Projects) 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) { HttpServerRequest& HttpReq = Req.ServerRequest(); |