DDNet documentation
Loading...
Searching...
No Matches
IHttpRequest Class Referenceabstract

#include <http.h>

Inheritance diagram for IHttpRequest:
[legend]
Collaboration diagram for IHttpRequest:
[legend]

Classes

class  IProgressCallback

Public Member Functions

 IHttpRequest (const char *pUrl)
virtual ~IHttpRequest ()
void Timeout (CTimeout Timeout)
void MaxResponseSize (int64_t MaxResponseSize)
void LogProgress (HTTPLOG LogProgress)
void SkipByFileTime (bool SkipByFileTime)
void IpResolve (IPRESOLVE IpResolve)
void FailOnErrorStatus (bool FailOnErrorStatus)
void WriteToMemory ()
void WriteToFileAndMemory (IStorage *pStorage, const char *pDest, int StorageType)
void WriteToFile (IStorage *pStorage, const char *pDest, int StorageType)
void ValidateBeforeOverwrite (bool ValidateBeforeOverwrite)
void ExpectSha256 (const SHA256_DIGEST &Sha256)
void Head ()
void Post (const unsigned char *pData, size_t DataLength)
void PostJson (const char *pJson)
virtual void Header (const char *pNameColonValue)=0
void HeaderString (const char *pName, const char *pValue)
void HeaderInt (const char *pName, int Value)
const char * Dest () const
double Current () const
double Size () const
int Progress () const
EHttpState State () const
bool Done () const
virtual void Abort ()
bool IsAbortRequested () const
void Wait ()
void SetProgressCallback (IProgressCallback *pCallback)
void OnValidation (bool Success)
void Result (unsigned char **ppResult, size_t *pResultLength) const
json_valueResultJson () const
const SHA256_DIGESTResultSha256 () const
int StatusCode () const
std::optional< int64_t > ResultAgeSeconds () const
std::optional< int64_t > ResultLastModified () const

Protected Types

enum class  REQUEST { GET , HEAD , POST , POST_JSON }

Protected Member Functions

bool ShouldSkipRequest ()
bool BeforeInit ()
size_t OnData (const char *pData, size_t DataSize)
void OnCompletionInternal (EHttpState State)

Static Protected Member Functions

static const char * GetRequestType (REQUEST Type)

Protected Attributes

char m_aUrl [256] = ""
REQUEST m_Type = REQUEST::GET
unsigned char * m_pBody = nullptr
size_t m_BodyLength = 0
CTimeout m_Timeout = CTimeout{0, 0, 0, 0}
int64_t m_MaxResponseSize = -1
HTTPLOG m_LogProgress = HTTPLOG::ALL
bool m_SkipByFileTime = true
IPRESOLVE m_IpResolve = IPRESOLVE::WHATEVER
bool m_FailOnErrorStatus = true
bool m_ValidateBeforeOverwrite = false
std::optional< SHA256_DIGESTm_ExpectedSha256 = std::nullopt
int64_t m_IfModifiedSince = -1
std::optional< SHA256_DIGESTm_ActualSha256 = std::nullopt
SHA256_CTX m_ActualSha256Ctx
uint64_t m_ResponseLength = 0
int m_StatusCode = 0
std::optional< int64_t > m_ResultDate = std::nullopt
std::optional< int64_t > m_ResultLastModified = std::nullopt
bool m_WriteToMemory = true
bool m_WriteToFile = false
size_t m_BufferSize = 0
unsigned char * m_pBuffer = nullptr
IOHANDLE m_File = nullptr
char m_aDestAbsoluteTmp [IO_MAX_PATH_LENGTH] = ""
char m_aDestAbsolute [IO_MAX_PATH_LENGTH] = ""
char m_aDest [IO_MAX_PATH_LENGTH] = ""
std::atomic< double > m_Size = 0.0
std::atomic< double > m_Current = 0.0
std::atomic< int > m_Progress = 0
std::atomic< EHttpStatem_State = EHttpState::QUEUED
std::atomic< bool > m_Abort = false
IProgressCallbackm_pProgressCallback = nullptr
std::mutex m_WaitMutex
std::condition_variable m_WaitCondition

Static Protected Attributes

static const char *const USER_AGENT_STRING = GAME_NAME " " GAME_RELEASE_VERSION " (" CONF_PLATFORM_STRING "; " CONF_ARCH_STRING ")"

Friends

class IHttp

Member Enumeration Documentation

◆ REQUEST

enum class IHttpRequest::REQUEST
strongprotected
Enumerator
GET 
HEAD 
POST 
POST_JSON 

Constructor & Destructor Documentation

◆ IHttpRequest()

IHttpRequest::IHttpRequest ( const char * pUrl)

◆ ~IHttpRequest()

IHttpRequest::~IHttpRequest ( )
virtual

Member Function Documentation

◆ Abort()

virtual void IHttpRequest::Abort ( )
inlinevirtual

◆ BeforeInit()

bool IHttpRequest::BeforeInit ( )
protected

◆ Current()

double IHttpRequest::Current ( ) const
inline

◆ Dest()

const char * IHttpRequest::Dest ( ) const

◆ Done()

bool IHttpRequest::Done ( ) const
inline

◆ ExpectSha256()

void IHttpRequest::ExpectSha256 ( const SHA256_DIGEST & Sha256)
inline

◆ FailOnErrorStatus()

void IHttpRequest::FailOnErrorStatus ( bool FailOnErrorStatus)
inline

◆ GetRequestType()

const char * IHttpRequest::GetRequestType ( REQUEST Type)
staticprotected

◆ Head()

void IHttpRequest::Head ( )

◆ Header()

virtual void IHttpRequest::Header ( const char * pNameColonValue)
pure virtual

Implemented in CHttpRequestCurl.

◆ HeaderInt()

void IHttpRequest::HeaderInt ( const char * pName,
int Value )

◆ HeaderString()

void IHttpRequest::HeaderString ( const char * pName,
const char * pValue )

◆ IpResolve()

void IHttpRequest::IpResolve ( IPRESOLVE IpResolve)
inline

◆ IsAbortRequested()

bool IHttpRequest::IsAbortRequested ( ) const
inline

◆ LogProgress()

void IHttpRequest::LogProgress ( HTTPLOG LogProgress)
inline

◆ MaxResponseSize()

void IHttpRequest::MaxResponseSize ( int64_t MaxResponseSize)
inline

◆ OnCompletionInternal()

void IHttpRequest::OnCompletionInternal ( EHttpState State)
protected

◆ OnData()

size_t IHttpRequest::OnData ( const char * pData,
size_t DataSize )
protected

◆ OnValidation()

void IHttpRequest::OnValidation ( bool Success)

◆ Post()

void IHttpRequest::Post ( const unsigned char * pData,
size_t DataLength )

◆ PostJson()

void IHttpRequest::PostJson ( const char * pJson)

◆ Progress()

int IHttpRequest::Progress ( ) const
inline

◆ Result()

void IHttpRequest::Result ( unsigned char ** ppResult,
size_t * pResultLength ) const

◆ ResultAgeSeconds()

std::optional< int64_t > IHttpRequest::ResultAgeSeconds ( ) const

◆ ResultJson()

json_value * IHttpRequest::ResultJson ( ) const

◆ ResultLastModified()

std::optional< int64_t > IHttpRequest::ResultLastModified ( ) const

◆ ResultSha256()

const SHA256_DIGEST & IHttpRequest::ResultSha256 ( ) const

◆ SetProgressCallback()

void IHttpRequest::SetProgressCallback ( IProgressCallback * pCallback)
inline

◆ ShouldSkipRequest()

bool IHttpRequest::ShouldSkipRequest ( )
protected

◆ Size()

double IHttpRequest::Size ( ) const
inline

◆ SkipByFileTime()

void IHttpRequest::SkipByFileTime ( bool SkipByFileTime)
inline

◆ State()

EHttpState IHttpRequest::State ( ) const
inline

◆ StatusCode()

int IHttpRequest::StatusCode ( ) const

◆ Timeout()

void IHttpRequest::Timeout ( CTimeout Timeout)
inline

◆ ValidateBeforeOverwrite()

void IHttpRequest::ValidateBeforeOverwrite ( bool ValidateBeforeOverwrite)
inline

◆ Wait()

void IHttpRequest::Wait ( )

◆ WriteToFile()

void IHttpRequest::WriteToFile ( IStorage * pStorage,
const char * pDest,
int StorageType )

◆ WriteToFileAndMemory()

void IHttpRequest::WriteToFileAndMemory ( IStorage * pStorage,
const char * pDest,
int StorageType )

◆ WriteToMemory()

void IHttpRequest::WriteToMemory ( )

◆ IHttp

friend class IHttp
friend

Member Data Documentation

◆ m_Abort

std::atomic<bool> IHttpRequest::m_Abort = false
protected

◆ m_ActualSha256

std::optional<SHA256_DIGEST> IHttpRequest::m_ActualSha256 = std::nullopt
protected

◆ m_ActualSha256Ctx

SHA256_CTX IHttpRequest::m_ActualSha256Ctx
protected

◆ m_aDest

char IHttpRequest::m_aDest[IO_MAX_PATH_LENGTH] = ""
protected

◆ m_aDestAbsolute

char IHttpRequest::m_aDestAbsolute[IO_MAX_PATH_LENGTH] = ""
protected

◆ m_aDestAbsoluteTmp

char IHttpRequest::m_aDestAbsoluteTmp[IO_MAX_PATH_LENGTH] = ""
protected

◆ m_aUrl

char IHttpRequest::m_aUrl[256] = ""
protected

◆ m_BodyLength

size_t IHttpRequest::m_BodyLength = 0
protected

◆ m_BufferSize

size_t IHttpRequest::m_BufferSize = 0
protected

◆ m_Current

std::atomic<double> IHttpRequest::m_Current = 0.0
protected

◆ m_ExpectedSha256

std::optional<SHA256_DIGEST> IHttpRequest::m_ExpectedSha256 = std::nullopt
protected

◆ m_FailOnErrorStatus

bool IHttpRequest::m_FailOnErrorStatus = true
protected

◆ m_File

IOHANDLE IHttpRequest::m_File = nullptr
protected

◆ m_IfModifiedSince

int64_t IHttpRequest::m_IfModifiedSince = -1
protected

◆ m_IpResolve

IPRESOLVE IHttpRequest::m_IpResolve = IPRESOLVE::WHATEVER
protected

◆ m_LogProgress

HTTPLOG IHttpRequest::m_LogProgress = HTTPLOG::ALL
protected

◆ m_MaxResponseSize

int64_t IHttpRequest::m_MaxResponseSize = -1
protected

◆ m_pBody

unsigned char* IHttpRequest::m_pBody = nullptr
protected

◆ m_pBuffer

unsigned char* IHttpRequest::m_pBuffer = nullptr
protected

◆ m_pProgressCallback

IProgressCallback* IHttpRequest::m_pProgressCallback = nullptr
protected

◆ m_Progress

std::atomic<int> IHttpRequest::m_Progress = 0
protected

◆ m_ResponseLength

uint64_t IHttpRequest::m_ResponseLength = 0
protected

◆ m_ResultDate

std::optional<int64_t> IHttpRequest::m_ResultDate = std::nullopt
protected

◆ m_ResultLastModified

std::optional<int64_t> IHttpRequest::m_ResultLastModified = std::nullopt
protected

◆ m_Size

std::atomic<double> IHttpRequest::m_Size = 0.0
protected

◆ m_SkipByFileTime

bool IHttpRequest::m_SkipByFileTime = true
protected

◆ m_State

std::atomic<EHttpState> IHttpRequest::m_State = EHttpState::QUEUED
protected

◆ m_StatusCode

int IHttpRequest::m_StatusCode = 0
protected

◆ m_Timeout

CTimeout IHttpRequest::m_Timeout = CTimeout{0, 0, 0, 0}
protected

◆ m_Type

REQUEST IHttpRequest::m_Type = REQUEST::GET
protected

◆ m_ValidateBeforeOverwrite

bool IHttpRequest::m_ValidateBeforeOverwrite = false
protected

◆ m_WaitCondition

std::condition_variable IHttpRequest::m_WaitCondition
protected

◆ m_WaitMutex

std::mutex IHttpRequest::m_WaitMutex
protected

◆ m_WriteToFile

bool IHttpRequest::m_WriteToFile = false
protected

◆ m_WriteToMemory

bool IHttpRequest::m_WriteToMemory = true
protected

◆ USER_AGENT_STRING

const char *const IHttpRequest::USER_AGENT_STRING = GAME_NAME " " GAME_RELEASE_VERSION " (" CONF_PLATFORM_STRING "; " CONF_ARCH_STRING ")"
staticprotected

The documentation for this class was generated from the following files: