aboutsummaryrefslogtreecommitdiff
path: root/zenserver/cidstore.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2023-05-02 10:01:47 +0200
committerGitHub <[email protected]>2023-05-02 10:01:47 +0200
commit075d17f8ada47e990fe94606c3d21df409223465 (patch)
treee50549b766a2f3c354798a54ff73404217b4c9af /zenserver/cidstore.cpp
parentfix: bundle shouldn't append content zip to zen (diff)
downloadzen-075d17f8ada47e990fe94606c3d21df409223465.tar.xz
zen-075d17f8ada47e990fe94606c3d21df409223465.zip
moved source directories into `/src` (#264)
* moved source directories into `/src` * updated bundle.lua for new `src` path * moved some docs, icon * removed old test trees
Diffstat (limited to 'zenserver/cidstore.cpp')
-rw-r--r--zenserver/cidstore.cpp124
1 files changed, 0 insertions, 124 deletions
diff --git a/zenserver/cidstore.cpp b/zenserver/cidstore.cpp
deleted file mode 100644
index bce4f1dfb..000000000
--- a/zenserver/cidstore.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
-
-#include "cidstore.h"
-
-#include <zencore/compress.h>
-#include <zencore/fmtutils.h>
-#include <zencore/logging.h>
-#include <zenstore/cidstore.h>
-
-#include <gsl/gsl-lite.hpp>
-
-namespace zen {
-
-HttpCidService::HttpCidService(CidStore& Store) : m_CidStore(Store)
-{
- m_Router.AddPattern("cid", "([0-9A-Fa-f]{40})");
-
- m_Router.RegisterRoute(
- "{cid}",
- [this](HttpRouterRequest& Req) {
- IoHash Hash = IoHash::FromHexString(Req.GetCapture(1));
- ZEN_DEBUG("CID request for {}", Hash);
-
- HttpServerRequest& ServerRequest = Req.ServerRequest();
-
- switch (ServerRequest.RequestVerb())
- {
- case HttpVerb::kGet:
- case HttpVerb::kHead:
- {
- if (IoBuffer Value = m_CidStore.FindChunkByCid(Hash))
- {
- return ServerRequest.WriteResponse(HttpResponseCode::OK, HttpContentType::kBinary, Value);
- }
-
- return ServerRequest.WriteResponse(HttpResponseCode::NotFound);
- }
- break;
-
- case HttpVerb::kPut:
- {
- IoBuffer Payload = ServerRequest.ReadPayload();
- IoHash RawHash;
- uint64_t RawSize;
- if (!CompressedBuffer::ValidateCompressedHeader(Payload, RawHash, RawSize))
- {
- return ServerRequest.WriteResponse(HttpResponseCode::UnsupportedMediaType);
- }
-
- // URI hash must match content hash
- if (RawHash != Hash)
- {
- return ServerRequest.WriteResponse(HttpResponseCode::BadRequest);
- }
-
- m_CidStore.AddChunk(Payload, RawHash);
-
- return ServerRequest.WriteResponse(HttpResponseCode::OK);
- }
- break;
-
- default:
- break;
- }
- },
- HttpVerb::kGet | HttpVerb::kPut | HttpVerb::kHead);
-}
-
-const char*
-HttpCidService::BaseUri() const
-{
- return "/cid/";
-}
-
-void
-HttpCidService::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 RawHash;
- uint64_t RawSize;
- if (!CompressedBuffer::ValidateCompressedHeader(Payload, RawHash, RawSize))
- {
- return Request.WriteResponse(HttpResponseCode::UnsupportedMediaType);
- }
-
- ZEN_DEBUG("CID POST request for {} ({} bytes)", RawHash, Payload.Size());
-
- auto InsertResult = m_CidStore.AddChunk(Payload, RawHash);
-
- 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