aboutsummaryrefslogtreecommitdiff
path: root/zenhttp/httpclient.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 /zenhttp/httpclient.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 'zenhttp/httpclient.cpp')
-rw-r--r--zenhttp/httpclient.cpp176
1 files changed, 0 insertions, 176 deletions
diff --git a/zenhttp/httpclient.cpp b/zenhttp/httpclient.cpp
deleted file mode 100644
index e6813d407..000000000
--- a/zenhttp/httpclient.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
-
-#include <zenhttp/httpclient.h>
-#include <zenhttp/httpserver.h>
-
-#include <zencore/compactbinarybuilder.h>
-#include <zencore/compactbinarypackage.h>
-#include <zencore/iobuffer.h>
-#include <zencore/logging.h>
-#include <zencore/session.h>
-#include <zencore/sharedbuffer.h>
-#include <zencore/stream.h>
-#include <zencore/testing.h>
-#include <zenhttp/httpshared.h>
-
-static std::atomic<uint32_t> HttpClientRequestIdCounter{0};
-
-namespace zen {
-
-using namespace std::literals;
-
-HttpClient::Response
-FromCprResponse(cpr::Response& InResponse)
-{
- return {.StatusCode = int(InResponse.status_code)};
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-HttpClient::HttpClient(std::string_view BaseUri) : m_BaseUri(BaseUri)
-{
- StringBuilder<32> SessionId;
- GetSessionId().ToString(SessionId);
- m_SessionId = SessionId;
-}
-
-HttpClient::~HttpClient()
-{
-}
-
-HttpClient::Response
-HttpClient::TransactPackage(std::string_view Url, CbPackage Package)
-{
- cpr::Session Sess;
- Sess.SetUrl(m_BaseUri + std::string(Url));
-
- // First, list of offered chunks for filtering on the server end
-
- std::vector<IoHash> AttachmentsToSend;
- std::span<const CbAttachment> Attachments = Package.GetAttachments();
-
- const uint32_t RequestId = ++HttpClientRequestIdCounter;
- auto RequestIdString = fmt::to_string(RequestId);
-
- if (Attachments.empty() == false)
- {
- CbObjectWriter Writer;
- Writer.BeginArray("offer");
-
- for (const CbAttachment& Attachment : Attachments)
- {
- IoHash Hash = Attachment.GetHash();
-
- Writer.AddHash(Hash);
- }
-
- Writer.EndArray();
-
- BinaryWriter MemWriter;
- Writer.Save(MemWriter);
-
- Sess.SetHeader({{"Content-Type", "application/x-ue-offer"}, {"UE-Session", m_SessionId}, {"UE-Request", RequestIdString}});
- Sess.SetBody(cpr::Body{(const char*)MemWriter.Data(), MemWriter.Size()});
-
- cpr::Response FilterResponse = Sess.Post();
-
- if (FilterResponse.status_code == 200)
- {
- IoBuffer ResponseBuffer(IoBuffer::Wrap, FilterResponse.text.data(), FilterResponse.text.size());
- CbObject ResponseObject = LoadCompactBinaryObject(ResponseBuffer);
-
- for (auto& Entry : ResponseObject["need"])
- {
- ZEN_ASSERT(Entry.IsHash());
- AttachmentsToSend.push_back(Entry.AsHash());
- }
- }
- }
-
- // Prepare package for send
-
- CbPackage SendPackage;
- SendPackage.SetObject(Package.GetObject(), Package.GetObjectHash());
-
- for (const IoHash& AttachmentCid : AttachmentsToSend)
- {
- const CbAttachment* Attachment = Package.FindAttachment(AttachmentCid);
-
- if (Attachment)
- {
- SendPackage.AddAttachment(*Attachment);
- }
- else
- {
- // This should be an error -- server asked to have something we can't find
- }
- }
-
- // Transmit package payload
-
- CompositeBuffer Message = FormatPackageMessageBuffer(SendPackage);
- SharedBuffer FlatMessage = Message.Flatten();
-
- Sess.SetHeader({{"Content-Type", "application/x-ue-cbpkg"}, {"UE-Session", m_SessionId}, {"UE-Request", RequestIdString}});
- Sess.SetBody(cpr::Body{(const char*)FlatMessage.GetData(), FlatMessage.GetSize()});
-
- cpr::Response FilterResponse = Sess.Post();
-
- if (!IsHttpSuccessCode(FilterResponse.status_code))
- {
- return FromCprResponse(FilterResponse);
- }
-
- IoBuffer ResponseBuffer(IoBuffer::Clone, FilterResponse.text.data(), FilterResponse.text.size());
-
- if (auto It = FilterResponse.header.find("Content-Type"); It != FilterResponse.header.end())
- {
- HttpContentType ContentType = ParseContentType(It->second);
-
- ResponseBuffer.SetContentType(ContentType);
- }
-
- return {.StatusCode = int(FilterResponse.status_code), .ResponsePayload = ResponseBuffer};
-}
-
-HttpClient::Response
-HttpClient::Put(std::string_view Url, IoBuffer Payload)
-{
- ZEN_UNUSED(Url);
- ZEN_UNUSED(Payload);
- return {};
-}
-
-HttpClient::Response
-HttpClient::Get(std::string_view Url)
-{
- ZEN_UNUSED(Url);
- return {};
-}
-
-HttpClient::Response
-HttpClient::Delete(std::string_view Url)
-{
- ZEN_UNUSED(Url);
- return {};
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-#if ZEN_WITH_TESTS
-
-TEST_CASE("httpclient")
-{
- using namespace std::literals;
-
- SUBCASE("client") {}
-}
-
-void
-httpclient_forcelink()
-{
-}
-
-#endif
-
-} // namespace zen