Files
dmytro ivanov 7cc8ba51b4 Refactor Zen storage module to be able to use other HTTP clients
#jira UE-189687
#rb tomasz.obrebski

[CL 34336030 by dmytro ivanov in ue5-main branch]
2024-06-13 07:54:06 -04:00

51 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreTypes.h"
#include "IO/IoBuffer.h"
#include "IO/IoStatus.h"
#include "Misc/Optional.h"
#if !UE_BUILD_SHIPPING
enum class EStorageServerContentType : uint8
{
Unknown = 0,
CbObject,
Binary,
CompressedBinary,
};
class IStorageServerHttpClient
{
public:
using FResult = TTuple<TIoStatusOr<FIoBuffer>, EStorageServerContentType>;
using FResultCallback = TFunction<void(FResult)>;
virtual ~IStorageServerHttpClient() = default;
virtual FResult RequestSync(
FAnsiStringView Url,
EStorageServerContentType Accept = EStorageServerContentType::Unknown,
FAnsiStringView Verb = "GET",
TOptional<FIoBuffer> OptPayload = TOptional<FIoBuffer>(),
TOptional<FIoBuffer> OptDestination = TOptional<FIoBuffer>(),
float TimeoutSeconds = -1.f,
const bool bReportErrors = true
) = 0;
virtual void RequestAsync(
FResultCallback&& Callback,
FAnsiStringView Url,
EStorageServerContentType Accept = EStorageServerContentType::Unknown,
FAnsiStringView Verb = "GET",
TOptional<FIoBuffer> OptPayload = TOptional<FIoBuffer>(),
TOptional<FIoBuffer> OptDestination = TOptional<FIoBuffer>(),
float TimeoutSeconds = -1.f,
const bool bReportErrors = true
) = 0;
};
#endif