Skip to content

Commit

Permalink
Merge pull request #881 from gofractally/check-registered-http-server…
Browse files Browse the repository at this point in the history
…-first

Allow SPAs with registered http server to serve rest endpoints
  • Loading branch information
James-Mart authored Oct 7, 2024
2 parents 0f3dbd8 + ff6ea58 commit cf617a0
Showing 1 changed file with 18 additions and 14 deletions.
32 changes: 18 additions & 14 deletions services/system/HttpServer/src/HttpServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,22 +220,26 @@ namespace SystemService
// TODO: use a view
auto [sock, req] = psio::from_frac<std::tuple<std::int32_t, HttpRequest>>(act.rawData);

// First we check the `sites` server
auto server = "sites"_a;
currentRequest = {.socket = sock, .owner = server};
auto result = iface(server).serveSys(req, std::optional{sock});
// First we check the registered server
auto service = getTargetService(req);
auto registered = getServer(service);
std::optional<HttpReply> result;
psibase::AccountNumber server;

// If not found, we check the registered server
if (!result && currentRequest)
auto checkServer = [&](psibase::AccountNumber srv) {
server = srv;
currentRequest = {.socket = sock, .owner = server};
return iface(server).serveSys(req, std::optional{sock});
};

if (registered)
{
auto service = getTargetService(req);
auto registered = getServer(service);
if (registered)
{
server = registered->server;
currentRequest = {.socket = sock, .owner = server};
result = iface(server).serveSys(req, std::optional{sock});
}
result = checkServer(registered->server);
}

if (!registered || (!result && currentRequest))
{
result = checkServer("sites"_a);
}

if (currentRequest)
Expand Down

0 comments on commit cf617a0

Please sign in to comment.