diff options
Diffstat (limited to 'src/zenserver/httpcidstore.cpp')
| -rw-r--r-- | src/zenserver/httpcidstore.cpp | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/src/zenserver/httpcidstore.cpp b/src/zenserver/httpcidstore.cpp deleted file mode 100644 index 233a45edb..000000000 --- a/src/zenserver/httpcidstore.cpp +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright Epic Games, Inc. All Rights Reserved. - -#include "httpcidstore.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 |