diff options
| author | Stefan Boberg <[email protected]> | 2022-03-23 16:15:08 +0100 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2022-03-23 16:15:08 +0100 |
| commit | cfbe2e251e2cf174ff2474bc70f4e6b9551c4af2 (patch) | |
| tree | 9d6da6e33484be16cd0251b3781408deb14e2340 /zenserver/projectstore.cpp | |
| parent | added xmake file for zentest-appstub (diff) | |
| parent | Fixed wrong route pattern. (diff) | |
| download | zen-cfbe2e251e2cf174ff2474bc70f4e6b9551c4af2.tar.xz zen-cfbe2e251e2cf174ff2474bc70f4e6b9551c4af2.zip | |
Merge branch 'main' of https://github.com/EpicGames/zen
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..58b806989 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(); |