2019-12-26 14:45:42 -05:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
2018-04-30 13:57:29 -04:00
|
|
|
|
|
|
|
|
#include "GenericPlatform/HttpRequestImpl.h"
|
2020-04-09 06:18:05 -04:00
|
|
|
#include "Stats/Stats.h"
|
2018-04-30 13:57:29 -04:00
|
|
|
#include "Http.h"
|
|
|
|
|
|
|
|
|
|
FHttpRequestCompleteDelegate& FHttpRequestImpl::OnProcessRequestComplete()
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogHttp, VeryVerbose, TEXT("FHttpRequestImpl::OnProcessRequestComplete()"));
|
|
|
|
|
return RequestCompleteDelegate;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FHttpRequestProgressDelegate& FHttpRequestImpl::OnRequestProgress()
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogHttp, VeryVerbose, TEXT("FHttpRequestImpl::OnRequestProgress()"));
|
|
|
|
|
return RequestProgressDelegate;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FHttpRequestHeaderReceivedDelegate& FHttpRequestImpl::OnHeaderReceived()
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogHttp, VeryVerbose, TEXT("FHttpRequestImpl::OnHeaderReceived()"));
|
|
|
|
|
return HeaderReceivedDelegate;
|
|
|
|
|
}
|
|
|
|
|
|
2019-12-19 16:09:36 -05:00
|
|
|
FHttpRequestWillRetryDelegate& FHttpRequestImpl::OnRequestWillRetry()
|
|
|
|
|
{
|
|
|
|
|
UE_LOG(LogHttp, VeryVerbose, TEXT("FHttpRequestImpl::OnRequestWillRetry()"));
|
|
|
|
|
return OnRequestWillRetryDelegate;
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-01 14:07:48 -04:00
|
|
|
void FHttpRequestImpl::SetTimeout(float InTimeoutSecs)
|
|
|
|
|
{
|
|
|
|
|
TimeoutSecs = InTimeoutSecs;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FHttpRequestImpl::ClearTimeout()
|
|
|
|
|
{
|
|
|
|
|
TimeoutSecs.Reset();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TOptional<float> FHttpRequestImpl::GetTimeout() const
|
|
|
|
|
{
|
|
|
|
|
return TimeoutSecs;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
float FHttpRequestImpl::GetTimeoutOrDefault() const
|
|
|
|
|
{
|
|
|
|
|
return GetTimeout().Get(FHttpModule::Get().GetHttpTimeout());
|
|
|
|
|
}
|
|
|
|
|
|
2018-04-30 13:57:29 -04:00
|
|
|
void FHttpRequestImpl::BroadcastResponseHeadersReceived()
|
|
|
|
|
{
|
|
|
|
|
if (OnHeaderReceived().IsBound())
|
|
|
|
|
{
|
|
|
|
|
const FHttpResponsePtr Response = GetResponse();
|
|
|
|
|
if (Response.IsValid())
|
|
|
|
|
{
|
|
|
|
|
const FHttpRequestPtr ThisPtr(SharedThis(this));
|
|
|
|
|
const TArray<FString> AllHeaders = Response->GetAllHeaders();
|
|
|
|
|
for (const FString& Header : AllHeaders)
|
|
|
|
|
{
|
|
|
|
|
FString HeaderName;
|
|
|
|
|
FString HeaderValue;
|
|
|
|
|
if (Header.Split(TEXT(":"), &HeaderName, &HeaderValue))
|
|
|
|
|
{
|
|
|
|
|
HeaderValue.TrimStartInline();
|
2020-04-09 05:59:20 -04:00
|
|
|
|
|
|
|
|
QUICK_SCOPE_CYCLE_COUNTER(STAT_FHttpRequestImpl_BroadcastResponseHeadersReceived_OnHeaderReceived);
|
2018-04-30 13:57:29 -04:00
|
|
|
OnHeaderReceived().ExecuteIfBound(ThisPtr, HeaderName, HeaderValue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|