aboutsummaryrefslogtreecommitdiff
path: root/zenserver/casstore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'zenserver/casstore.cpp')
-rw-r--r--zenserver/casstore.cpp112
1 files changed, 0 insertions, 112 deletions
diff --git a/zenserver/casstore.cpp b/zenserver/casstore.cpp
deleted file mode 100644
index 872a40df8..000000000
--- a/zenserver/casstore.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
-
-#include "casstore.h"
-
-#include <zencore/fmtutils.h>
-#include <zencore/logging.h>
-
-#include <gsl/gsl-lite.hpp>
-
-namespace zen {
-
-HttpCasService::HttpCasService(CasStore& Store) : m_CasStore(Store)
-{
- m_Router.AddPattern("cas", "([0-9A-Fa-f]{40})");
-
- m_Router.RegisterRoute(
- "{cas}",
- [this](HttpRouterRequest& Req) {
- IoHash Hash = IoHash::FromHexString(Req.GetCapture(1));
- ZEN_DEBUG("CAS request for {}", Hash);
-
- HttpServerRequest& ServerRequest = Req.ServerRequest();
-
- switch (ServerRequest.RequestVerb())
- {
- case HttpVerb::kGet:
- case HttpVerb::kHead:
- {
- if (IoBuffer Value = m_CasStore.FindChunk(Hash))
- {
- return ServerRequest.WriteResponse(HttpResponseCode::OK, HttpContentType::kBinary, Value);
- }
-
- return ServerRequest.WriteResponse(HttpResponseCode::NotFound);
- }
- break;
-
- case HttpVerb::kPut:
- {
- IoBuffer Payload = ServerRequest.ReadPayload();
- IoHash PayloadHash = IoHash::HashBuffer(Payload.Data(), Payload.Size());
-
- // URI hash must match content hash
- if (PayloadHash != Hash)
- {
- return ServerRequest.WriteResponse(HttpResponseCode::BadRequest);
- }
-
- m_CasStore.InsertChunk(Payload, PayloadHash);
-
- return ServerRequest.WriteResponse(HttpResponseCode::OK);
- }
- break;
-
- default:
- break;
- }
- },
- HttpVerb::kGet | HttpVerb::kPut | HttpVerb::kHead);
-}
-
-const char*
-HttpCasService::BaseUri() const
-{
- return "/cas/";
-}
-
-void
-HttpCasService::HandleRequest(zen::HttpServerRequest& Request)
-{
- if (Request.RelativeUri().empty())
- {
- // Root URI request
-
- switch (Request.RequestVerb())
- {
- case HttpVerb::kPut:
- case HttpVerb::kPost:
- {
- IoBuffer Payload = Request.ReadPayload();
- IoHash PayloadHash = IoHash::HashBuffer(Payload.Data(), Payload.Size());
-
- ZEN_DEBUG("CAS POST request for {} ({} bytes)", PayloadHash, Payload.Size());
-
- auto InsertResult = m_CasStore.InsertChunk(Payload, PayloadHash);
-
- if (InsertResult.New)
- {
- return Request.WriteResponse(HttpResponseCode::Created);
- }
- else
- {
- return Request.WriteResponse(HttpResponseCode::OK);
- }
- }
- break;
-
- case HttpVerb::kGet:
- case HttpVerb::kHead:
- break;
-
- default:
- break;
- }
- }
- else
- {
- m_Router.HandleRequest(Request);
- }
-}
-
-} // namespace zen