NCBI C++ ToolKit
Classes | Typedefs | Enumerations | Enumerator | Functions | Variables | Friends
HttpSession

Classes

struct  SGetHttpDefaultRetries
 
class  CHttpHeaders
 
class  CHttpHeaders::CHeaderNameConverter
 Helper class allowing to use both strings and enums as header names. More...
 
class  CHttpProxy
 Per-request proxy settings. More...
 
class  CHttpParam
 CHttpSession and CHttpRequest parameters. More...
 
class  CFormDataProvider_Base
 Interface for custom form data providers. More...
 
class  CHttpFormData
 POST request data. More...
 
struct  CHttpFormData::SFormData
 
class  CHttpResponse
 HTTP response. More...
 
class  CTlsCertCredentials
 Wrapper class for NCBI_CRED. More...
 
class  CHttpRequest
 HTTP request. More...
 
class  CHttpRequest::CAdjustUrlCallback_Base
 
class  CHttpRequest::CAdjustUrlCallback< TCallback >
 
class  CHttpSession_Base
 HTTP session class, holding common data for multiple requests. More...
 
class  CHttpSession
 
class  CHttpSessionException
 CHttpSessionException –. More...
 

Typedefs

typedef CNullable< unsigned short, SGetHttpDefaultRetriesTHttpRetries
 Nullable retries for CHttpRequest. More...
 
typedef vector< stringCHttpHeaders::THeaderValues
 List of header values (may be required for headers with multiple values like Cookie). More...
 
typedef map< string, THeaderValues, PNocaseCHttpHeaders::THeaders
 Map of header name-values, case-insensitive. More...
 
typedef vector< SFormDataCHttpFormData::TValues
 
typedef map< string, TValuesCHttpFormData::TEntries
 
typedef vector< CRef< CFormDataProvider_Base > > CHttpFormData::TProviders
 
typedef map< string, TProvidersCHttpFormData::TProviderEntries
 

Enumerations

enum  CHttpHeaders::EHeaderName {
  CHttpHeaders::eCacheControl = 0 , CHttpHeaders::eContentLength , CHttpHeaders::eContentType , CHttpHeaders::eCookie ,
  CHttpHeaders::eDate , CHttpHeaders::eExpires , CHttpHeaders::eLocation , CHttpHeaders::eRange ,
  CHttpHeaders::eReferer , CHttpHeaders::eSetCookie , CHttpHeaders::eUserAgent , CHttpHeaders::eHost
}
 Some standard HTTP headers. More...
 
enum  CHttpFormData::EContentType { CHttpFormData::eFormUrlEncoded , CHttpFormData::eMultipartFormData }
 Supported content types for POST requests. More...
 
enum  CHttpSession_Base::ERequestMethod {
  CHttpSession_Base::eHead = eReqMethod_Head , CHttpSession_Base::eGet = eReqMethod_Get , CHttpSession_Base::ePost = eReqMethod_Post , CHttpSession_Base::ePut = eReqMethod_Put ,
  CHttpSession_Base::ePatch = eReqMethod_Patch , CHttpSession_Base::eDelete = eReqMethod_Delete
}
 Supported request methods, proxy for EReqMethod. More...
 
enum  CHttpSession_Base::EProtocol { CHttpSession_Base::eHTTP_10 , CHttpSession_Base::eHTTP_11 , CHttpSession_Base::eHTTP_2 }
 HTTP protocol version. More...
 
enum  CHttpSessionException::EErrCode {
  CHttpSessionException::eConnFailed , CHttpSessionException::eBadRequest , CHttpSessionException::eBadContentType , CHttpSessionException::eBadFormDataName ,
  CHttpSessionException::eBadFormData , CHttpSessionException::eBadStream , CHttpSessionException::eOther
}
 

Functions

unsigned short SGetHttpDefaultRetries::operator() (void) const
 
 CHttpHeaders::CHttpHeaders (void)
 Create empty headers list. More...
 
 CHttpHeaders::CHeaderNameConverter::CHeaderNameConverter (const char *name)
 
 CHttpHeaders::CHeaderNameConverter::CHeaderNameConverter (const string &name)
 
 CHttpHeaders::CHeaderNameConverter::CHeaderNameConverter (CTempString name)
 
 CHttpHeaders::CHeaderNameConverter::CHeaderNameConverter (CHttpHeaders::EHeaderName name)
 
CTempString CHttpHeaders::CHeaderNameConverter::GetName (void)
 
bool CHttpHeaders::HasValue (CHeaderNameConverter name) const
 Check if there's at least one header with the name. More...
 
size_t CHttpHeaders::CountValues (CHeaderNameConverter name) const
 Get number of values with the given name. More...
 
const stringCHttpHeaders::GetValue (CHeaderNameConverter name) const
 Get value of the header or empty string. More...
 
const THeaderValuesCHttpHeaders::GetAllValues (CHeaderNameConverter name) const
 Get all values with the given name. More...
 
void CHttpHeaders::SetValue (CHeaderNameConverter name, CTempString value)
 Remove all existing values with the name, set the new value. More...
 
void CHttpHeaders::AddValue (CHeaderNameConverter name, CTempString value)
 Add new value with the name (multiple values are allowed with the same name, the order is preserved). More...
 
void CHttpHeaders::Clear (CHeaderNameConverter name)
 Remove all values with the given name. More...
 
void CHttpHeaders::ClearAll (void)
 Remove all headers. More...
 
void CHttpHeaders::Assign (const CHttpHeaders &headers)
 Clear any existing values and copy all headers from 'headers' to this object. More...
 
void CHttpHeaders::Merge (const CHttpHeaders &headers)
 Add values from 'headers' to this object. More...
 
virtual CHttpHeaders::~CHttpHeaders (void)
 
 CHttpHeaders::CHttpHeaders (const CHttpHeaders &)
 
CHttpHeadersCHttpHeaders::operator= (const CHttpHeaders &)
 
bool CHttpHeaders::x_IsReservedHeader (CTempString name) const
 
void CHttpHeaders::ParseHttpHeader (const CTempString &headers)
 Parse headers from the string (usually provided by a stream callback). More...
 
string CHttpHeaders::GetHttpHeader (void) const
 Get all headers as a single string as required by CConn_HttpStream. More...
 
const THeadersCHttpHeaders::Get () const
 
static const char * CHttpHeaders::GetHeaderName (EHeaderName name)
 Get string representation of the given name. More...
 
 CHttpProxy::CHttpProxy (void)
 
 CHttpProxy::CHttpProxy (string host, unsigned short port)
 
 CHttpProxy::CHttpProxy (string host, unsigned short port, string user, string password)
 
bool CHttpProxy::IsEmpty (void) const
 
const stringCHttpProxy::GetHost (void) const
 
unsigned short CHttpProxy::GetPort (void) const
 
const stringCHttpProxy::GetUser (void) const
 
const stringCHttpProxy::GetPassword (void) const
 
 CHttpParam::CHttpParam (void)
 
CHttpParamCHttpParam::SetHeaders (const CHttpHeaders &headers)
 Add all HTTP headers to request. More...
 
CHttpParamCHttpParam::SetHeader (CHttpHeaders::EHeaderName header, CTempString value)
 Set or replace a single HTTP header,. More...
 
CHttpParamCHttpParam::AddHeader (CHttpHeaders::EHeaderName header, CTempString value)
 Add a single HTTP header,. More...
 
const CHttpHeadersCHttpParam::GetHeaders (void) const
 
CHttpParamCHttpParam::SetTimeout (const CTimeout &timeout)
 
const CTimeoutCHttpParam::GetTimeout (void) const
 
CHttpParamCHttpParam::SetRetries (THttpRetries retries)
 
THttpRetries CHttpParam::GetRetries (void) const
 
CHttpParamCHttpParam::SetCredentials (shared_ptr< CTlsCertCredentials > credentials)
 
shared_ptr< CTlsCertCredentialsCHttpParam::GetCredentials (void) const
 
CHttpParamCHttpParam::SetProxy (const CHttpProxy &proxy)
 
const CHttpProxyCHttpParam::GetProxy (void) const
 
const CTimeoutCHttpParam::GetDeadline () const
 
CHttpParamCHttpParam::SetDeadline (const CTimeout &deadline)
 
ESwitch CHttpParam::GetRetryProcessing () const
 
CHttpParamCHttpParam::SetRetryProcessing (ESwitch on_off)
 
CHttpResponse g_HttpGet (const CUrl &url, const CHttpParam &param)
 Shortcut for GET request. More...
 
CHttpResponse g_HttpGet (const CUrl &url, const CTimeout &timeout=CTimeout(CTimeout::eDefault), THttpRetries retries=null)
 Shortcut for GET request. More...
 
CHttpResponse g_HttpGet (const CUrl &url, const CHttpHeaders &headers, const CTimeout &timeout=CTimeout(CTimeout::eDefault), THttpRetries retries=null)
 Shortcut for GET request with custom headers. More...
 
CHttpResponse g_HttpPost (const CUrl &url, CTempString data, const CHttpParam &param=CHttpParam())
 Shortcut for POST request. More...
 
CHttpResponse g_HttpPost (const CUrl &url, CTempString data, CTempString content_type, const CTimeout &timeout=CTimeout(CTimeout::eDefault), THttpRetries retries=null)
 Shortcut for POST request. More...
 
CHttpResponse g_HttpPost (const CUrl &url, const CHttpHeaders &headers, CTempString data, CTempString content_type=CTempString(), const CTimeout &timeout=CTimeout(CTimeout::eDefault), THttpRetries retries=null)
 Shortcut for POST request with custom headers. More...
 
CHttpResponse g_HttpPut (const CUrl &url, CTempString data, const CHttpParam &param=CHttpParam())
 Shortcut for PUT request. More...
 
CHttpResponse g_HttpPut (const CUrl &url, CTempString data, CTempString content_type, const CTimeout &timeout=CTimeout(CTimeout::eDefault), THttpRetries retries=null)
 Shortcut for PUT request. More...
 
CHttpResponse g_HttpPut (const CUrl &url, const CHttpHeaders &headers, CTempString data, CTempString content_type=CTempString(), const CTimeout &timeout=CTimeout(CTimeout::eDefault), THttpRetries retries=null)
 Shortcut for PUT request with custom headers. More...
 
virtual string CFormDataProvider_Base::GetContentType (void) const
 Get content type. More...
 
virtual string CFormDataProvider_Base::GetFileName (void) const
 Get optional filename to be shown in Content-Disposition header. More...
 
virtual void CFormDataProvider_Base::WriteData (CNcbiOstream &out) const =0
 Write user data to the stream. More...
 
virtual CFormDataProvider_Base::~CFormDataProvider_Base (void)
 
void CHttpFormData::AddEntry (CTempString entry_name, CTempString value, CTempString content_type=CTempString())
 Add name=value pair. More...
 
void CHttpFormData::AddFile (CTempString entry_name, CTempString file_name, CTempString content_type=CTempString())
 Add file entry. More...
 
void CHttpFormData::AddProvider (CTempString entry_name, CFormDataProvider_Base *provider)
 Add custom data provider. More...
 
bool CHttpFormData::IsEmpty (void) const
 Check if the form data is empty (no entries have been added). More...
 
void CHttpFormData::Clear (void)
 Clear all form data, reset content type to the default eFormUrlEncoded. More...
 
void CHttpFormData::WriteFormData (CNcbiOstream &out) const
 Write form data to the stream using the selected form content type. More...
 
EContentType CHttpFormData::GetContentType (void) const
 Get current content type. More...
 
void CHttpFormData::SetContentType (EContentType content_type)
 Set content type for the form data. More...
 
virtual CHttpFormData::~CHttpFormData (void)
 
 CHttpFormData::CHttpFormData (void)
 
 CHttpFormData::CHttpFormData (const CHttpFormData &)
 
CHttpFormDataCHttpFormData::operator= (const CHttpFormData &)
 
string CHttpFormData::GetContentTypeStr (void) const
 Get the form content type as a string. More...
 
static string CHttpFormData::CreateBoundary (void)
 Generate a new random string to be used as multipart boundary. More...
 
const CHttpHeadersCHttpResponse::Headers (void) const
 Get incoming HTTP headers. More...
 
CNcbiIstreamCHttpResponse::ContentStream (void) const
 Get input stream. More...
 
CNcbiIstreamCHttpResponse::ErrorStream (void) const
 Get input stream containing error message (e.g. More...
 
const CUrlCHttpResponse::GetLocation (void) const
 Get actual resource location. More...
 
int CHttpResponse::GetStatusCode (void) const
 Get response status code. More...
 
const stringCHttpResponse::GetStatusText (void) const
 Get response status text. More...
 
bool CHttpResponse::CanGetContentStream (void) const
 Check if the requested content can be read from the content stream. More...
 
virtual CHttpResponse::~CHttpResponse (void)
 
 CHttpResponse::CHttpResponse (CHttpSession_Base &session, const CUrl &url, shared_ptr< iostream > stream={})
 
void CHttpResponse::x_Update (CHttpHeaders::THeaders headers, int status_code, string status_text)
 
 CTlsCertCredentials::CTlsCertCredentials (const CTempStringEx &cert, const CTempStringEx &pkey)
 Initialize credentials. More...
 
 CTlsCertCredentials::~CTlsCertCredentials (void)
 
NCBI_CRED CTlsCertCredentials::GetNcbiCred (void) const
 
const stringCTlsCertCredentials::GetCert (void) const
 
const stringCTlsCertCredentials::GetPKey (void) const
 
 CTlsCertCredentials::CTlsCertCredentials (const CTlsCertCredentials &)
 
CTlsCertCredentialsCTlsCertCredentials::operator= (const CTlsCertCredentials &)
 
CHttpHeadersCHttpRequest::Headers (void)
 Get HTTP headers to be sent. More...
 
CHttpFormDataCHttpRequest::FormData (void)
 Get form data to be sent with POST request. More...
 
CNcbiOstreamCHttpRequest::ContentStream (void)
 Get output stream to write user data. More...
 
CHttpResponse CHttpRequest::Execute (void)
 Send the request, initialize and return the response. More...
 
const CTimeoutCHttpRequest::GetTimeout (void) const
 Get current timeout. More...
 
CHttpRequestCHttpRequest::SetTimeout (const CTimeout &timeout)
 Set new timeout. More...
 
CHttpRequestCHttpRequest::SetTimeout (unsigned int sec, unsigned int usec=0)
 Set new timeout in seconds/microseconds. More...
 
THttpRetries CHttpRequest::GetRetries (void) const
 Get number of retries. More...
 
void CHttpRequest::SetRetries (THttpRetries retries)
 Set number of retries. More...
 
const CTimeoutCHttpRequest::GetDeadline () const
 Get current deadline for Execute(). More...
 
CHttpRequestCHttpRequest::SetDeadline (const CTimeout &deadline)
 Set new deadline for Execute(). More...
 
ESwitch CHttpRequest::GetRetryProcessing () const
 Return whether Execute() will wait for actual response. More...
 
CHttpRequestCHttpRequest::SetRetryProcessing (ESwitch on_off)
 Set whether Execute() should wait for actual response. More...
 
template<class TCallback >
void CHttpRequest::SetAdjustUrlCallback (TCallback callback)
 Set callback to adjust URL after resolving service location. More...
 
void CHttpRequest::SetProxy (const CHttpProxy &proxy)
 Set proxy. More...
 
const CHttpProxyCHttpRequest::GetProxy (void) const
 
void CHttpRequest::SetParam (const CHttpParam &param)
 Set request parameters. More...
 
 CHttpRequest::CHttpRequest (CHttpSession_Base &session, const CUrl &url, EReqMethod method, const CHttpParam &param={})
 
virtual CHttpRequest::CAdjustUrlCallback_Base::~CAdjustUrlCallback_Base (void)
 
virtual bool CHttpRequest::CAdjustUrlCallback_Base::AdjustUrl (CUrl &url)=0
 
 CHttpRequest::CAdjustUrlCallback< TCallback >::CAdjustUrlCallback (TCallback &callback)
 
virtual bool CHttpRequest::CAdjustUrlCallback< TCallback >::AdjustUrl (CUrl &url)
 
void CHttpRequest::x_InitConnection (bool use_form_data)
 
void CHttpRequest::x_InitConnection2 (shared_ptr< iostream > stream)
 
bool CHttpRequest::x_CanSendData (void) const
 
void CHttpRequest::x_AddCookieHeader (const CUrl &url, bool initial)
 
void CHttpRequest::x_AdjustHeaders (bool use_form_data)
 
void CHttpRequest::x_UpdateResponse (CHttpHeaders::THeaders headers, int status_code, string status_text)
 
void CHttpRequest::x_SetProxy (SConnNetInfo &net_info)
 
static EHTTP_HeaderParse CHttpRequest::sx_ParseHeader (const char *headers, void *user_data, int server_error)
 
static int CHttpRequest::sx_Adjust (SConnNetInfo *net_info, void *user_data, unsigned int failure_count)
 
CHttpRequest CHttpSession_Base::NewRequest (const CUrl &url, ERequestMethod method=eGet, const CHttpParam &param={})
 Initialize request. More...
 
CHttpResponse CHttpSession_Base::Get (const CUrl &url, const CTimeout &timeout=CTimeout(CTimeout::eDefault), THttpRetries retries=null)
 Shortcut for GET requests. More...
 
CHttpResponse CHttpSession_Base::Post (const CUrl &url, CTempString data, CTempString content_type=CTempString(), const CTimeout &timeout=CTimeout(CTimeout::eDefault), THttpRetries retries=null)
 Shortcut for POST requests. More...
 
CHttpResponse CHttpSession_Base::Put (const CUrl &url, CTempString data, CTempString content_type=CTempString(), const CTimeout &timeout=CTimeout(CTimeout::eDefault), THttpRetries retries=null)
 Shortcut for PUT requests. More...
 
const CHttpCookiesCHttpSession_Base::Cookies (void) const
 Get all stored cookies. More...
 
CHttpCookiesCHttpSession_Base::Cookies (void)
 Get all stored cookies, non-const. More...
 
EProtocol CHttpSession_Base::GetProtocol (void) const
 Get protocol version. More...
 
void CHttpSession_Base::SetProtocol (EProtocol protocol)
 
THTTP_Flags CHttpSession_Base::GetHttpFlags (void) const
 Get flags passed to CConn_HttpStream. More...
 
void CHttpSession_Base::SetHttpFlags (THTTP_Flags flags)
 Set flags passed to CConn_HttpStream. More...
 
void CHttpSession_Base::SetCredentials (shared_ptr< CTlsCertCredentials > cred)
 Set TLS credentials. More...
 
shared_ptr< CTlsCertCredentialsCHttpSession_Base::GetCredentials (void) const
 
 CHttpSession_Base::CHttpSession_Base (EProtocol protocol)
 
virtual CHttpSession_Base::~CHttpSession_Base (void)
 
void CHttpSession_Base::SetProxy (const CHttpProxy &proxy)
 
const CHttpProxyCHttpSession_Base::GetProxy (void) const
 
virtual void CHttpSession_Base::x_StartRequest (EProtocol protocol, CHttpRequest &req, bool use_form_data)=0
 
virtual bool CHttpSession_Base::x_Downgrade (CHttpResponse &resp, EProtocol &protocol) const =0
 
void CHttpSession_Base::x_SetCookies (const CHttpHeaders::THeaderValues &cookies, const CUrl *url)
 
string CHttpSession_Base::x_GetCookies (const CUrl &url) const
 
 CHttpSession::CHttpSession ()
 
void CHttpSession::x_StartRequest (EProtocol protocol, CHttpRequest &req, bool use_form_data) override
 
bool CHttpSession::x_Downgrade (CHttpResponse &, EProtocol &) const override
 
virtual const char * CHttpSessionException::GetErrCodeString (void) const override
 Get error code interpreted as text. More...
 
 CHttpSessionException::NCBI_EXCEPTION_DEFAULT (CHttpSessionException, CException)
 

Variables

CTempString CHttpHeaders::CHeaderNameConverter::m_Name
 
THeaders CHttpHeaders::m_Headers
 
string CHttpProxy::m_Host
 
unsigned short CHttpProxy::m_Port
 
string CHttpProxy::m_User
 
string CHttpProxy::m_Password
 
CRef< CHttpHeadersCHttpParam::m_Headers
 
CTimeout CHttpParam::m_Timeout
 
THttpRetries CHttpParam::m_Retries
 
shared_ptr< CTlsCertCredentialsCHttpParam::m_Credentials
 
CHttpProxy CHttpParam::m_Proxy
 
CTimeout CHttpParam::m_Deadline
 
ESwitch CHttpParam::m_RetryProcessing
 
string CHttpFormData::SFormData::m_Value
 
string CHttpFormData::SFormData::m_ContentType
 
EContentType CHttpFormData::m_ContentType
 
TEntries CHttpFormData::m_Entries
 
TProviderEntries CHttpFormData::m_Providers
 
string CHttpFormData::m_Boundary
 
CRef< CHttpSession_BaseCHttpResponse::m_Session
 
CUrl CHttpResponse::m_Url
 
CUrl CHttpResponse::m_Location
 
shared_ptr< iostream > CHttpResponse::m_Stream
 
CRef< CHttpHeadersCHttpResponse::m_Headers
 
int CHttpResponse::m_StatusCode
 
string CHttpResponse::m_StatusText
 
string CTlsCertCredentials::m_Cert
 
string CTlsCertCredentials::m_PKey
 
NCBI_CRED CTlsCertCredentials::m_Cred = nullptr
 
TCallback CHttpRequest::CAdjustUrlCallback< TCallback >::m_Callback
 
CRef< CHttpSession_BaseCHttpRequest::m_Session
 
CUrl CHttpRequest::m_Url
 
EReqMethod CHttpRequest::m_Method
 
CRef< CHttpHeadersCHttpRequest::m_Headers
 
CRef< CHttpFormDataCHttpRequest::m_FormData
 
shared_ptr< iostream > CHttpRequest::m_Stream
 
CRef< CHttpResponseCHttpRequest::m_Response
 
CTimeout CHttpRequest::m_Timeout
 
THttpRetries CHttpRequest::m_Retries
 
CTimeout CHttpRequest::m_Deadline
 
ESwitch CHttpRequest::m_RetryProcessing
 
CRef< CAdjustUrlCallback_BaseCHttpRequest::m_AdjustUrl
 
shared_ptr< CTlsCertCredentialsCHttpRequest::m_Credentials
 
CHttpProxy CHttpRequest::m_Proxy
 
EProtocol CHttpSession_Base::m_Protocol
 
THTTP_Flags CHttpSession_Base::m_HttpFlags
 
CHttpCookies CHttpSession_Base::m_Cookies
 
shared_ptr< CTlsCertCredentialsCHttpSession_Base::m_Credentials
 
CHttpProxy CHttpSession_Base::m_Proxy
 

Friends

class CHttpHeaders::CHttpRequest
 
class CHttpHeaders::CHttpResponse
 
class CHttpFormData::CHttpRequest
 
class CHttpResponse::CHttpRequest
 
class CHttpRequest::CHttpSession_Base
 
class CHttpRequest::CHttpSession
 
class CHttpRequest::CHttp2Session
 
class CHttpSession_Base::CHttpRequest
 
class CHttpSession_Base::CHttpResponse
 

Detailed Description

Typedef Documentation

◆ TEntries

Definition at line 451 of file ncbi_http_session.hpp.

◆ THeaders

Map of header name-values, case-insensitive.

Definition at line 103 of file ncbi_http_session.hpp.

◆ THeaderValues

List of header values (may be required for headers with multiple values like Cookie).

Definition at line 101 of file ncbi_http_session.hpp.

◆ THttpRetries

typedef CNullable<unsigned short, SGetHttpDefaultRetries> THttpRetries

Nullable retries for CHttpRequest.

Definition at line 57 of file ncbi_http_session.hpp.

◆ TProviderEntries

Definition at line 453 of file ncbi_http_session.hpp.

◆ TProviders

Definition at line 452 of file ncbi_http_session.hpp.

◆ TValues

typedef vector<SFormData> CHttpFormData::TValues
private

Definition at line 450 of file ncbi_http_session.hpp.

Enumeration Type Documentation

◆ EContentType

Supported content types for POST requests.

Enumerator
eFormUrlEncoded 

'application/x-www-form-urlencoded', default

eMultipartFormData 

'multipart/form-data'

Definition at line 359 of file ncbi_http_session.hpp.

◆ EErrCode

Enumerator
eConnFailed 

Failed to open connection.

eBadRequest 

Error initializing or sending a request.

eBadContentType 

Content-type conflicts with the data.

eBadFormDataName 

Empty or bad name in form data.

eBadFormData 

Bad form data (e.g. unreadable file).

eBadStream 

Wrong stream used to read content or error.

eOther 

Definition at line 843 of file ncbi_http_session.hpp.

◆ EHeaderName

Some standard HTTP headers.

Enumerator
eCacheControl 
eContentLength 
eContentType 
eCookie 
eDate 
eExpires 
eLocation 
eRange 
eReferer 
eSetCookie 
eUserAgent 
eHost 

Definition at line 67 of file ncbi_http_session.hpp.

◆ EProtocol

HTTP protocol version.

Enumerator
eHTTP_10 

HTTP/1.0.

eHTTP_11 

HTTP/1.1.

eHTTP_2 

HTTP/2.

Definition at line 764 of file ncbi_http_session.hpp.

◆ ERequestMethod

Supported request methods, proxy for EReqMethod.

See also
EReqMethod
Enumerator
eHead 
eGet 
ePost 
ePut 
ePatch 
eDelete 

Definition at line 703 of file ncbi_http_session.hpp.

Function Documentation

◆ AddEntry()

void CHttpFormData::AddEntry ( CTempString  entry_name,
CTempString  value,
CTempString  content_type = CTempString() 
)

Add name=value pair.

The data of this type can be sent using either eFormUrlEncoded or eMultipartFormData content types.

Parameters
entry_nameName of the form input. The name must not be empty, otherwise an exception is thrown. Multiple values with the same name are allowed.
valueValue for the input. If the form content type is eFormUrlEncoded, the value will be URL encoded properly. Otherwise the value is sent as-is. URL-encoded form data allows only one value per entry, otherwise exception will be thrown when sending the data.
content_typeContent type for the entry used if the form content type is eMultipartFormData. If not set, the protocol assumes 'text/plain' content type. Not used when sending eFormUrlEncoded content.

Definition at line 247 of file ncbi_http_session.cpp.

References CTempString::empty(), CHttpFormData::SFormData::m_ContentType, CHttpFormData::m_Entries, CHttpFormData::SFormData::m_Value, NCBI_THROW, and rapidjson::value.

◆ AddFile()

void CHttpFormData::AddFile ( CTempString  entry_name,
CTempString  file_name,
CTempString  content_type = CTempString() 
)

Add file entry.

The form content type is automatically set to eMultipartFormData and can not be changed later.

Parameters
entry_nameName of the form input responsible for selecting files. Multiple files can be added with the same entry name. The name must not be empty, otherwise an exception is thrown.
file_namePath to the local file to be sent. The file must exist and be readable during the call to WriteFormData, otherwise an exception will be thrown.
content_typeCan be used to set content type for each file. If not set, the protocol assumes it to be 'application/octet-stream'.

Definition at line 311 of file ncbi_http_session.cpp.

References CHttpFormData::AddProvider(), and file_name.

◆ AddHeader()

CHttpParam & CHttpParam::AddHeader ( CHttpHeaders::EHeaderName  header,
CTempString  value 
)

Add a single HTTP header,.

See also
CHttpHeaders::AddValue().

Definition at line 1259 of file ncbi_http_session.cpp.

References CHttpHeaders::AddValue(), CHttpParam::m_Headers, and rapidjson::value.

◆ AddProvider()

void CHttpFormData::AddProvider ( CTempString  entry_name,
CFormDataProvider_Base provider 
)

Add custom data provider.

The data written by the provider is properly prefixed with Content-Disposition, boundary, Content-Type etc. The form content type is automatically set to eMultipartFormData and can not be changed later.

Parameters
entry_nameName of the form input responsible for the data. Multiple providers can be added with the same entry name. The name must not be empty, otherwise an exception is thrown.
providerAn instance of CFormDataProvider_Base derived class. The object must be created in heap.

Definition at line 263 of file ncbi_http_session.cpp.

References CTempString::empty(), CHttpFormData::eMultipartFormData, CHttpFormData::m_ContentType, CHttpFormData::m_Providers, NCBI_THROW, and Ref().

Referenced by CHttpFormData::AddFile().

◆ AddValue()

void CHttpHeaders::AddValue ( CHeaderNameConverter  name,
CTempString  value 
)

Add new value with the name (multiple values are allowed with the same name, the order is preserved).

Throw exception if the name is a reserved one and can not be set directly (NCBI-SID, NCBI-PHID). These values should be set through CRequestContext, the headers will be added by CConn_HttpStream automatically.

Definition at line 126 of file ncbi_http_session.cpp.

References _VERIFY, CHttpHeaders::CHeaderNameConverter::GetName(), CHttpHeaders::m_Headers, rapidjson::value, and CHttpHeaders::x_IsReservedHeader().

Referenced by CHttpParam::AddHeader().

◆ AdjustUrl() [1/2]

template<class TCallback >
virtual bool CHttpRequest::CAdjustUrlCallback< TCallback >::AdjustUrl ( CUrl url)
inlinevirtual

◆ AdjustUrl() [2/2]

virtual bool CHttpRequest::CAdjustUrlCallback_Base::AdjustUrl ( CUrl url)
pure virtual

◆ Assign()

void CHttpHeaders::Assign ( const CHttpHeaders headers)

Clear any existing values and copy all headers from 'headers' to this object.

Definition at line 190 of file ncbi_http_session.cpp.

References map_checker< Container >::clear(), CHttpHeaders::m_Headers, and CHttpHeaders::Merge().

Referenced by SRetryProcessing::Assign(), and CHttpParam::SetHeaders().

◆ CAdjustUrlCallback()

template<class TCallback >
CHttpRequest::CAdjustUrlCallback< TCallback >::CAdjustUrlCallback ( TCallback &  callback)
inline

Definition at line 647 of file ncbi_http_session.hpp.

◆ CanGetContentStream()

bool CHttpResponse::CanGetContentStream ( void  ) const

Check if the requested content can be read from the content stream.

This is true for status codes 2xx. If there's no content available, ContentStream() will throw an exception and response body can be accessed using ErrorStream().

Note
This method returns true even if the content stream is empty (e.g. after HEAD request), it's based on status code only.

Definition at line 504 of file ncbi_http_session.cpp.

References CHttpResponse::m_StatusCode.

Referenced by CHttpResponse::ContentStream(), CHttpResponse::ErrorStream(), CHttpSessionApp::PrintResponse(), and s_UpdateLocalFile().

◆ CHeaderNameConverter() [1/4]

CHttpHeaders::CHeaderNameConverter::CHeaderNameConverter ( CHttpHeaders::EHeaderName  name)
inline

Definition at line 92 of file ncbi_http_session.hpp.

◆ CHeaderNameConverter() [2/4]

CHttpHeaders::CHeaderNameConverter::CHeaderNameConverter ( const char *  name)
inline

Definition at line 86 of file ncbi_http_session.hpp.

◆ CHeaderNameConverter() [3/4]

CHttpHeaders::CHeaderNameConverter::CHeaderNameConverter ( const string name)
inline

Definition at line 88 of file ncbi_http_session.hpp.

◆ CHeaderNameConverter() [4/4]

CHttpHeaders::CHeaderNameConverter::CHeaderNameConverter ( CTempString  name)
inline

Definition at line 90 of file ncbi_http_session.hpp.

◆ CHttpFormData() [1/2]

CHttpFormData::CHttpFormData ( const CHttpFormData )
private

◆ CHttpFormData() [2/2]

CHttpFormData::CHttpFormData ( void  )
private

Definition at line 230 of file ncbi_http_session.cpp.

◆ CHttpHeaders() [1/2]

CHttpHeaders::CHttpHeaders ( const CHttpHeaders )
private

◆ CHttpHeaders() [2/2]

CHttpHeaders::CHttpHeaders ( void  )
inline

Create empty headers list.

Definition at line 64 of file ncbi_http_session.hpp.

◆ CHttpParam()

CHttpParam::CHttpParam ( void  )

Definition at line 1236 of file ncbi_http_session.cpp.

◆ CHttpProxy() [1/3]

CHttpProxy::CHttpProxy ( string  host,
unsigned short  port 
)
inline

Definition at line 188 of file ncbi_http_session.hpp.

◆ CHttpProxy() [2/3]

CHttpProxy::CHttpProxy ( string  host,
unsigned short  port,
string  user,
string  password 
)
inline

Definition at line 190 of file ncbi_http_session.hpp.

◆ CHttpProxy() [3/3]

CHttpProxy::CHttpProxy ( void  )
inline

Definition at line 187 of file ncbi_http_session.hpp.

◆ CHttpRequest()

CHttpRequest::CHttpRequest ( CHttpSession_Base session,
const CUrl url,
EReqMethod  method,
const CHttpParam param = {} 
)
private

Definition at line 572 of file ncbi_http_session.cpp.

References CHttpRequest::SetParam().

◆ CHttpResponse()

CHttpResponse::CHttpResponse ( CHttpSession_Base session,
const CUrl url,
shared_ptr< iostream >  stream = {} 
)
private

Definition at line 465 of file ncbi_http_session.cpp.

◆ CHttpSession()

CHttpSession::CHttpSession ( )
inline

Definition at line 817 of file ncbi_http_session.hpp.

◆ CHttpSession_Base()

CHttpSession_Base::CHttpSession_Base ( EProtocol  protocol)

Definition at line 1133 of file ncbi_http_session.cpp.

◆ Clear() [1/2]

void CHttpHeaders::Clear ( CHeaderNameConverter  name)

◆ Clear() [2/2]

void CHttpFormData::Clear ( void  )

◆ ClearAll()

void CHttpHeaders::ClearAll ( void  )

Remove all headers.

Definition at line 143 of file ncbi_http_session.cpp.

References map_checker< Container >::clear(), and CHttpHeaders::m_Headers.

◆ ContentStream() [1/2]

CNcbiOstream & CHttpRequest::ContentStream ( void  )

Get output stream to write user data.

Headers are sent automatically when opening the stream. No changes can be made to the request after getting the stream until it is completed by calling Execute(). Throws an exception if the selected request method does not support sending data or if the existing form data is not empty.

Note
This method automatically adds cookies to the request headers.

Definition at line 742 of file ncbi_http_session.cpp.

References _ASSERT, CHttpSession_Base::GetProtocol(), CHttpRequest::m_Response, CHttpRequest::m_Session, CHttpRequest::m_Stream, NCBI_THROW, CHttpRequest::x_CanSendData(), and CHttpSession_Base::x_StartRequest().

Referenced by g_HttpPost(), g_HttpPut(), SFileTrackAPI::GetPath(), CHttpSession_Base::Post(), CHttpSession_Base::Put(), SFileTrackUpload::RenameFile(), and CHttpSessionApp::Run().

◆ ContentStream() [2/2]

CNcbiIstream & CHttpResponse::ContentStream ( void  ) const

◆ Cookies() [1/2]

CHttpCookies& CHttpSession_Base::Cookies ( void  )
inline

Get all stored cookies, non-const.

Definition at line 761 of file ncbi_http_session.hpp.

References CHttpSession_Base::m_Cookies.

◆ Cookies() [2/2]

const CHttpCookies& CHttpSession_Base::Cookies ( void  ) const
inline

Get all stored cookies.

Definition at line 759 of file ncbi_http_session.hpp.

References CHttpSession_Base::m_Cookies.

Referenced by CHttpSessionApp::PrintResponse().

◆ CountValues()

size_t CHttpHeaders::CountValues ( CHeaderNameConverter  name) const

◆ CreateBoundary()

string CHttpFormData::CreateBoundary ( void  )
static

Generate a new random string to be used as multipart boundary.

Definition at line 358 of file ncbi_http_session.cpp.

References i, and s_SimpleRand().

Referenced by CHttpFormData::Clear(), and CHttpFormData::WriteFormData().

◆ CTlsCertCredentials() [1/2]

CTlsCertCredentials::CTlsCertCredentials ( const CTempStringEx cert,
const CTempStringEx pkey 
)

Initialize credentials.

The arguments are passed to NcbiCreateTlsCertCredentials.

See also
NcbiCreateTlsCertCredentials

Definition at line 526 of file ncbi_http_session.cpp.

References CTempStringEx::HasZeroAtEnd(), CTlsCertCredentials::m_Cert, and CTlsCertCredentials::m_PKey.

◆ CTlsCertCredentials() [2/2]

CTlsCertCredentials::CTlsCertCredentials ( const CTlsCertCredentials )
private

◆ ErrorStream()

CNcbiIstream & CHttpResponse::ErrorStream ( void  ) const

◆ Execute()

CHttpResponse CHttpRequest::Execute ( void  )

◆ FormData()

CHttpFormData & CHttpRequest::FormData ( void  )

Get form data to be sent with POST request.

Throw an exception if the selected method is not POST or if the request is already being executed (after calling ContentStream() but before Execute()).

Definition at line 762 of file ncbi_http_session.cpp.

References CHttpRequest::m_FormData, CHttpRequest::m_Stream, NCBI_THROW, CRef< C, Locker >::Reset(), and CHttpRequest::x_CanSendData().

Referenced by CHttpSessionApp::Run().

◆ g_HttpGet() [1/3]

CHttpResponse g_HttpGet ( const CUrl url,
const CHttpHeaders headers,
const CTimeout timeout = CTimeout(CTimeout::eDefault),
THttpRetries  retries = null 
)

Shortcut for GET request with custom headers.

Each request uses a separate session, no data like cookies is shared between multiple requests.

See also
CHttpSession::Get()

Definition at line 1305 of file ncbi_http_session.cpp.

References CHttpSession_Base::eGet, CHttpRequest::Execute(), CHttpRequest::Headers(), CHttpHeaders::Merge(), CHttpSession_Base::NewRequest(), CHttpRequest::SetRetries(), and CHttpRequest::SetTimeout().

◆ g_HttpGet() [2/3]

CHttpResponse g_HttpGet ( const CUrl url,
const CHttpParam param 
)

Shortcut for GET request.

Each request uses a separate session, no data like cookies is shared between multiple requests.

See also
CHttpSession::Get()

Definition at line 1287 of file ncbi_http_session.cpp.

References CHttpSession_Base::eGet, CHttpRequest::Execute(), CHttpParam::GetCredentials(), CHttpSession_Base::NewRequest(), and CHttpSession_Base::SetCredentials().

Referenced by g_HttpGet(), CUrlUtils::GetRemoteFileSize(), CHttpSessionApp::Run(), and s_UpdateLocalFile().

◆ g_HttpGet() [3/3]

CHttpResponse g_HttpGet ( const CUrl url,
const CTimeout timeout = CTimeout(CTimeout::eDefault),
THttpRetries  retries = null 
)

Shortcut for GET request.

Each request uses a separate session, no data like cookies is shared between multiple requests.

See also
CHttpSession::Get()

Definition at line 1296 of file ncbi_http_session.cpp.

References g_HttpGet().

◆ g_HttpPost() [1/3]

CHttpResponse g_HttpPost ( const CUrl url,
const CHttpHeaders headers,
CTempString  data,
CTempString  content_type = CTempString(),
const CTimeout timeout = CTimeout(CTimeout::eDefault),
THttpRetries  retries = null 
)

◆ g_HttpPost() [2/3]

CHttpResponse g_HttpPost ( const CUrl url,
CTempString  data,
const CHttpParam param = CHttpParam() 
)

◆ g_HttpPost() [3/3]

CHttpResponse g_HttpPost ( const CUrl url,
CTempString  data,
CTempString  content_type,
const CTimeout timeout = CTimeout(CTimeout::eDefault),
THttpRetries  retries = null 
)

Shortcut for POST request.

Each request uses a separate session, no data like cookies is shared between multiple requests.

See also
CHttpSession::Post()

Definition at line 1340 of file ncbi_http_session.cpp.

References data, and g_HttpPost().

◆ g_HttpPut() [1/3]

CHttpResponse g_HttpPut ( const CUrl url,
const CHttpHeaders headers,
CTempString  data,
CTempString  content_type = CTempString(),
const CTimeout timeout = CTimeout(CTimeout::eDefault),
THttpRetries  retries = null 
)

◆ g_HttpPut() [2/3]

CHttpResponse g_HttpPut ( const CUrl url,
CTempString  data,
const CHttpParam param = CHttpParam() 
)

◆ g_HttpPut() [3/3]

CHttpResponse g_HttpPut ( const CUrl url,
CTempString  data,
CTempString  content_type,
const CTimeout timeout = CTimeout(CTimeout::eDefault),
THttpRetries  retries = null 
)

Shortcut for PUT request.

Each request uses a separate session, no data like cookies is shared between multiple requests.

See also
CHttpSession::Put()

Definition at line 1407 of file ncbi_http_session.cpp.

References data, and g_HttpPut().

◆ Get() [1/2]

const THeaders& CHttpHeaders::Get ( void  ) const
inline

◆ Get() [2/2]

CHttpResponse CHttpSession_Base::Get ( const CUrl url,
const CTimeout timeout = CTimeout(CTimeout::eDefault),
THttpRetries  retries = null 
)

◆ GetAllValues()

const CHttpHeaders::THeaderValues & CHttpHeaders::GetAllValues ( CHeaderNameConverter  name) const

◆ GetCert()

const string& CTlsCertCredentials::GetCert ( void  ) const
inline

Definition at line 539 of file ncbi_http_session.hpp.

References CTlsCertCredentials::m_Cert.

◆ GetContentType() [1/2]

virtual string CFormDataProvider_Base::GetContentType ( void  ) const
inlinevirtual

Get content type.

Returns empty string by default, indicating no Content-Type header should be used for the part.

Reimplemented in CTestDataProvider, and CFileDataProvider.

Definition at line 342 of file ncbi_http_session.hpp.

References string.

◆ GetContentType() [2/2]

EContentType CHttpFormData::GetContentType ( void  ) const
inline

Get current content type.

Definition at line 425 of file ncbi_http_session.hpp.

References CHttpFormData::m_ContentType.

◆ GetContentTypeStr()

string CHttpFormData::GetContentTypeStr ( void  ) const

◆ GetCredentials() [1/2]

shared_ptr<CTlsCertCredentials> CHttpParam::GetCredentials ( void  ) const
inline

Definition at line 232 of file ncbi_http_session.hpp.

References CHttpParam::m_Credentials.

Referenced by g_HttpGet(), g_HttpPost(), and g_HttpPut().

◆ GetCredentials() [2/2]

shared_ptr<CTlsCertCredentials> CHttpSession_Base::GetCredentials ( void  ) const
inline

Definition at line 785 of file ncbi_http_session.hpp.

References CHttpSession_Base::m_Credentials.

◆ GetDeadline() [1/2]

const CTimeout& CHttpParam::GetDeadline ( ) const
inline

Definition at line 237 of file ncbi_http_session.hpp.

References CHttpParam::m_Deadline.

Referenced by CHttpRequest::SetParam().

◆ GetDeadline() [2/2]

const CTimeout& CHttpRequest::GetDeadline ( ) const
inline

Get current deadline for Execute().

For now, effective only if waiting for actual response (as opposed to a recognized 'retry later' response), infinite by default.

See also
Execute() GetRetryProcessing()

Definition at line 599 of file ncbi_http_session.hpp.

References CHttpRequest::m_Deadline.

◆ GetErrCodeString()

const char * CHttpSessionException::GetErrCodeString ( void  ) const
overridevirtual

◆ GetFileName()

virtual string CFormDataProvider_Base::GetFileName ( void  ) const
inlinevirtual

Get optional filename to be shown in Content-Disposition header.

Reimplemented in CTestDataProvider, and CFileDataProvider.

Definition at line 345 of file ncbi_http_session.hpp.

References string.

◆ GetHeaderName()

const char * CHttpHeaders::GetHeaderName ( EHeaderName  name)
static

Get string representation of the given name.

Definition at line 78 of file ncbi_http_session.cpp.

References _ASSERT, and kHttpHeaderNames.

◆ GetHeaders()

const CHttpHeaders& CHttpParam::GetHeaders ( void  ) const
inline

Definition at line 223 of file ncbi_http_session.hpp.

References CHttpParam::m_Headers.

Referenced by g_HttpPost(), g_HttpPut(), and CHttpRequest::SetParam().

◆ GetHost()

const string& CHttpProxy::GetHost ( void  ) const
inline

Definition at line 194 of file ncbi_http_session.hpp.

References CHttpProxy::m_Host.

Referenced by CHttpRequest::x_SetProxy().

◆ GetHttpFlags()

THTTP_Flags CHttpSession_Base::GetHttpFlags ( void  ) const
inline

Get flags passed to CConn_HttpStream.

See also
SetHttpFlags

Definition at line 776 of file ncbi_http_session.hpp.

References CHttpSession_Base::m_HttpFlags.

Referenced by CHttpRequest::x_InitConnection().

◆ GetHttpHeader()

string CHttpHeaders::GetHttpHeader ( void  ) const

Get all headers as a single string as required by CConn_HttpStream.

Each header line is terminated by a single HTTP_EOL.

Definition at line 178 of file ncbi_http_session.cpp.

References HTTP_EOL, ITERATE, kHttpHeaderDelimiter, CHttpHeaders::m_Headers, and val.

Referenced by CHttpRequest::sx_Adjust(), and CHttpRequest::x_InitConnection().

◆ GetLocation()

const CUrl& CHttpResponse::GetLocation ( void  ) const
inline

Get actual resource location.

This may be different from the requested URL in case of redirects.

Definition at line 492 of file ncbi_http_session.hpp.

References CHttpResponse::m_Location.

◆ GetName()

CTempString CHttpHeaders::CHeaderNameConverter::GetName ( void  )
inline

◆ GetNcbiCred()

NCBI_CRED CTlsCertCredentials::GetNcbiCred ( void  ) const

◆ GetPassword()

const string& CHttpProxy::GetPassword ( void  ) const
inline

Definition at line 197 of file ncbi_http_session.hpp.

References CHttpProxy::m_Password.

Referenced by CHttpRequest::x_SetProxy().

◆ GetPKey()

const string& CTlsCertCredentials::GetPKey ( void  ) const
inline

Definition at line 540 of file ncbi_http_session.hpp.

References CTlsCertCredentials::m_PKey.

◆ GetPort()

unsigned short CHttpProxy::GetPort ( void  ) const
inline

Definition at line 195 of file ncbi_http_session.hpp.

References CHttpProxy::m_Port.

Referenced by CHttpRequest::x_SetProxy().

◆ GetProtocol()

EProtocol CHttpSession_Base::GetProtocol ( void  ) const
inline

◆ GetProxy() [1/3]

const CHttpProxy& CHttpParam::GetProxy ( void  ) const
inline

Definition at line 235 of file ncbi_http_session.hpp.

References CHttpParam::m_Proxy.

Referenced by CHttpRequest::SetParam().

◆ GetProxy() [2/3]

const CHttpProxy& CHttpRequest::GetProxy ( void  ) const
inline

Definition at line 625 of file ncbi_http_session.hpp.

References CHttpRequest::m_Proxy.

Referenced by CHttpRequest::x_SetProxy().

◆ GetProxy() [3/3]

const CHttpProxy& CHttpSession_Base::GetProxy ( void  ) const
inline

Definition at line 791 of file ncbi_http_session.hpp.

References CHttpSession_Base::m_Proxy.

Referenced by CHttpRequest::x_SetProxy().

◆ GetRetries() [1/2]

THttpRetries CHttpParam::GetRetries ( void  ) const
inline

Definition at line 229 of file ncbi_http_session.hpp.

References CHttpParam::m_Retries.

Referenced by CHttpRequest::SetParam().

◆ GetRetries() [2/2]

THttpRetries CHttpRequest::GetRetries ( void  ) const
inline

Get number of retries.

If not set returns the global default value ($CONN_MAX_TRY - 1).

Definition at line 590 of file ncbi_http_session.hpp.

References CHttpRequest::m_Retries.

◆ GetRetryProcessing() [1/2]

ESwitch CHttpParam::GetRetryProcessing ( ) const
inline

Definition at line 240 of file ncbi_http_session.hpp.

References CHttpParam::m_RetryProcessing.

Referenced by CHttpRequest::SetParam().

◆ GetRetryProcessing() [2/2]

ESwitch CHttpRequest::GetRetryProcessing ( ) const
inline

Return whether Execute() will wait for actual response.

If on, will wait for deadline expired or actual response (as opposed to a recognized 'retry later' response), off by default.

See also
Execute() GetDeadline()

Definition at line 608 of file ncbi_http_session.hpp.

References CHttpRequest::m_RetryProcessing.

◆ GetStatusCode()

int CHttpResponse::GetStatusCode ( void  ) const
inline

◆ GetStatusText()

const string& CHttpResponse::GetStatusText ( void  ) const
inline

Get response status text.

Definition at line 498 of file ncbi_http_session.hpp.

References CHttpResponse::m_StatusText.

Referenced by CDoiLookup::GetPubFromCrossRef(), and CHttpSessionApp::PrintResponse().

◆ GetTimeout() [1/2]

const CTimeout& CHttpParam::GetTimeout ( void  ) const
inline

Definition at line 226 of file ncbi_http_session.hpp.

References CHttpParam::m_Timeout.

Referenced by CHttpRequest::SetParam().

◆ GetTimeout() [2/2]

const CTimeout& CHttpRequest::GetTimeout ( void  ) const
inline

Get current timeout.

If set to CTimeout::eDefault, the global default value is used (or the one from $CONN_TIMEOUT).

Definition at line 582 of file ncbi_http_session.hpp.

References CHttpRequest::m_Timeout.

◆ GetUser()

const string& CHttpProxy::GetUser ( void  ) const
inline

Definition at line 196 of file ncbi_http_session.hpp.

References CHttpProxy::m_User.

Referenced by CHttpRequest::x_SetProxy().

◆ GetValue()

const string & CHttpHeaders::GetValue ( CHeaderNameConverter  name) const

Get value of the header or empty string.

If multiple values exist, return the last one.

Definition at line 99 of file ncbi_http_session.cpp.

References map_checker< Container >::end(), map_checker< Container >::find(), CHttpHeaders::CHeaderNameConverter::GetName(), kEmptyStr, and CHttpHeaders::m_Headers.

Referenced by g_HttpPost(), g_HttpPut(), SRetryProcessing::operator()(), and CHttpRequest::SetParam().

◆ HasValue()

bool CHttpHeaders::HasValue ( CHeaderNameConverter  name) const

◆ Headers() [1/2]

CHttpHeaders& CHttpRequest::Headers ( void  )
inline

◆ Headers() [2/2]

const CHttpHeaders& CHttpResponse::Headers ( void  ) const
inline

Get incoming HTTP headers.

Definition at line 478 of file ncbi_http_session.hpp.

References CHttpResponse::m_Headers.

Referenced by CHttpRequest::Execute(), CUrlUtils::GetRemoteFileSize(), and CHttpSessionApp::PrintResponse().

◆ IsEmpty() [1/2]

bool CHttpProxy::IsEmpty ( void  ) const
inline

Definition at line 193 of file ncbi_http_session.hpp.

References CHttpProxy::m_Host.

Referenced by CHttpRequest::x_SetProxy().

◆ IsEmpty() [2/2]

bool CHttpFormData::IsEmpty ( void  ) const

Check if the form data is empty (no entries have been added).

Definition at line 454 of file ncbi_http_session.cpp.

References map_checker< Container >::empty(), CHttpFormData::m_Entries, and CHttpFormData::m_Providers.

◆ Merge()

void CHttpHeaders::Merge ( const CHttpHeaders headers)

Add values from 'headers' to this object.

When merging values with the same name, the new values are added after the existing ones, so that the new values have higher priority.

Definition at line 197 of file ncbi_http_session.cpp.

References ITERATE, and CHttpHeaders::m_Headers.

Referenced by CHttpHeaders::Assign(), g_HttpGet(), g_HttpPost(), g_HttpPut(), and CHttpRequest::SetParam().

◆ NCBI_EXCEPTION_DEFAULT()

CHttpSessionException::NCBI_EXCEPTION_DEFAULT ( CHttpSessionException  ,
CException   
)

◆ NewRequest()

CHttpRequest CHttpSession_Base::NewRequest ( const CUrl url,
ERequestMethod  method = eGet,
const CHttpParam param = {} 
)

Initialize request.

This does not open connection to the server. A user can set headers/form-data before opening the stream and sending the actual request. The default request method is GET.

Definition at line 1140 of file ncbi_http_session.cpp.

References CHttpSession_Base::CHttpRequest.

Referenced by CGuiHttpSessionRequest::CGuiHttpSessionRequest(), g_HttpGet(), g_HttpPost(), g_HttpPut(), CHttpSession_Base::Get(), SFileTrackAPI::GetPath(), CHttpSession_Base::Post(), CHttpSession_Base::Put(), SFileTrackAPI::Remove(), SFileTrackUpload::RenameFile(), and CHttpSessionApp::Run().

◆ operator()()

unsigned short SGetHttpDefaultRetries::operator() ( void  ) const

◆ operator=() [1/3]

CHttpFormData& CHttpFormData::operator= ( const CHttpFormData )
private

◆ operator=() [2/3]

CHttpHeaders& CHttpHeaders::operator= ( const CHttpHeaders )
private

◆ operator=() [3/3]

CTlsCertCredentials& CTlsCertCredentials::operator= ( const CTlsCertCredentials )
private

◆ ParseHttpHeader()

void CHttpHeaders::ParseHttpHeader ( const CTempString headers)

Parse headers from the string (usually provided by a stream callback).

The new headers are added to the existing ones.

Definition at line 172 of file ncbi_http_session.cpp.

References CHttpHeaders::m_Headers, and s_ParseHttpHeader().

◆ Post()

CHttpResponse CHttpSession_Base::Post ( const CUrl url,
CTempString  data,
CTempString  content_type = CTempString(),
const CTimeout timeout = CTimeout(CTimeout::eDefault),
THttpRetries  retries = null 
)

Shortcut for POST requests.

Parameters
urlURL to send request to.
dataData to be sent with the request. The data is sent as-is, any required encoding must be performed by the caller.
content_typeContent-type. If empty, application/x-www-form-urlencoded is used.
See also
NewRequest() CHttpRequest

Definition at line 1157 of file ncbi_http_session.cpp.

References CHttpRequest::ContentStream(), data, CHttpHeaders::eContentType, CTempString::empty(), CHttpSession_Base::ePost, CHttpRequest::Execute(), CHttpRequest::Headers(), kContentType_FormUrlEnc, CHttpSession_Base::NewRequest(), CHttpRequest::SetRetries(), CHttpRequest::SetTimeout(), and CHttpHeaders::SetValue().

◆ Put()

CHttpResponse CHttpSession_Base::Put ( const CUrl url,
CTempString  data,
CTempString  content_type = CTempString(),
const CTimeout timeout = CTimeout(CTimeout::eDefault),
THttpRetries  retries = null 
)

Shortcut for PUT requests.

Parameters
urlURL to send request to.
dataData to be sent with the request. The data is sent as-is, any required encoding must be performed by the caller.
content_typeContent-type. If empty, application/x-www-form-urlencoded is used.
See also
NewRequest() CHttpRequest

Definition at line 1177 of file ncbi_http_session.cpp.

References CHttpRequest::ContentStream(), data, CHttpHeaders::eContentType, CTempString::empty(), CHttpSession_Base::ePut, CHttpRequest::Execute(), CHttpRequest::Headers(), kContentType_FormUrlEnc, CHttpSession_Base::NewRequest(), CHttpRequest::SetRetries(), CHttpRequest::SetTimeout(), and CHttpHeaders::SetValue().

◆ SetAdjustUrlCallback()

template<class TCallback >
void CHttpRequest::SetAdjustUrlCallback ( TCallback  callback)
inline

Set callback to adjust URL after resolving service location.

The callback must take a CUrl reference and return bool: bool AdjustUrlCallback(CUrl& url); The callback should return true for the adjusted URL to be used to make the request, or false if the changes should be discarded.

Definition at line 619 of file ncbi_http_session.hpp.

References CHttpRequest::m_AdjustUrl.

◆ SetContentType()

void CHttpFormData::SetContentType ( EContentType  content_type)

Set content type for the form data.

If the new content type conflicts with the types of entries already added, throw an exception (e.g. files/providers require eMultipartFormData content type).

Note
Content types for individual entries can be set when adding an entry (see AddEntry, AddFile, AddProvider).

Definition at line 237 of file ncbi_http_session.cpp.

References map_checker< Container >::empty(), CHttpFormData::eMultipartFormData, CHttpFormData::m_ContentType, CHttpFormData::m_Providers, and NCBI_THROW.

◆ SetCredentials() [1/2]

void CHttpSession_Base::SetCredentials ( shared_ptr< CTlsCertCredentials cred)

Set TLS credentials.

See also
CTlsCertCredentials

Definition at line 1226 of file ncbi_http_session.cpp.

References eOther, CHttpSession_Base::m_Credentials, and NCBI_THROW.

Referenced by g_HttpGet(), g_HttpPost(), g_HttpPut(), and CHttpSessionApp::Run().

◆ SetCredentials() [2/2]

CHttpParam & CHttpParam::SetCredentials ( shared_ptr< CTlsCertCredentials credentials)

Definition at line 1280 of file ncbi_http_session.cpp.

References CHttpParam::m_Credentials.

Referenced by CHttpSessionApp::SetupParam().

◆ SetDeadline() [1/2]

CHttpParam& CHttpParam::SetDeadline ( const CTimeout deadline)
inline

Definition at line 238 of file ncbi_http_session.hpp.

References CHttpParam::m_Deadline.

Referenced by CHttpSessionApp::SetupParam().

◆ SetDeadline() [2/2]

CHttpRequest & CHttpRequest::SetDeadline ( const CTimeout deadline)

Set new deadline for Execute().

See also
Execute() SetRetryProcessing()

Definition at line 1099 of file ncbi_http_session.cpp.

References CHttpRequest::m_Deadline.

Referenced by CGuiHttpSessionRequest::CGuiHttpSessionRequest().

◆ SetHeader()

CHttpParam & CHttpParam::SetHeader ( CHttpHeaders::EHeaderName  header,
CTempString  value 
)

Set or replace a single HTTP header,.

See also
CHttpHeaders::SetValue().

Definition at line 1252 of file ncbi_http_session.cpp.

References CHttpParam::m_Headers, CHttpHeaders::SetValue(), and rapidjson::value.

◆ SetHeaders()

CHttpParam & CHttpParam::SetHeaders ( const CHttpHeaders headers)

Add all HTTP headers to request.

Definition at line 1245 of file ncbi_http_session.cpp.

References CHttpHeaders::Assign(), and CHttpParam::m_Headers.

◆ SetHttpFlags()

void CHttpSession_Base::SetHttpFlags ( THTTP_Flags  flags)
inline

Set flags passed to CConn_HttpStream.

When sending request, fHTTP_AdjustOnRedirect is always added to the flags.

See also
GetHttpFlags

Definition at line 780 of file ncbi_http_session.hpp.

References flags, and CHttpSession_Base::m_HttpFlags.

Referenced by SFileTrackAPI::GetPath(), SFileTrackAPI::Remove(), and SFileTrackUpload::RenameFile().

◆ SetParam()

void CHttpRequest::SetParam ( const CHttpParam param)

◆ SetProtocol()

void CHttpSession_Base::SetProtocol ( EProtocol  protocol)
inline

Definition at line 772 of file ncbi_http_session.hpp.

References CHttpSession_Base::m_Protocol.

Referenced by CHttpSessionApp::Run().

◆ SetProxy() [1/3]

CHttpParam& CHttpParam::SetProxy ( const CHttpProxy proxy)
inline

Definition at line 234 of file ncbi_http_session.hpp.

References CHttpParam::m_Proxy.

Referenced by CHttpSessionApp::SetupParam().

◆ SetProxy() [2/3]

void CHttpRequest::SetProxy ( const CHttpProxy proxy)
inline

Set proxy.

Definition at line 624 of file ncbi_http_session.hpp.

References CHttpRequest::m_Proxy.

◆ SetProxy() [3/3]

void CHttpSession_Base::SetProxy ( const CHttpProxy proxy)
inline

Definition at line 790 of file ncbi_http_session.hpp.

References CHttpSession_Base::m_Proxy.

◆ SetRetries() [1/2]

CHttpParam & CHttpParam::SetRetries ( THttpRetries  retries)

Definition at line 1273 of file ncbi_http_session.cpp.

References CHttpParam::m_Retries.

Referenced by CHttpSessionApp::SetupParam().

◆ SetRetries() [2/2]

void CHttpRequest::SetRetries ( THttpRetries  retries)
inline

Set number of retries.

If not set, the global default value is used ($CONN_MAX_TRY - 1).

Definition at line 593 of file ncbi_http_session.hpp.

References CHttpRequest::m_Retries.

Referenced by g_HttpGet(), g_HttpPost(), g_HttpPut(), CHttpSession_Base::Get(), CHttpSession_Base::Post(), and CHttpSession_Base::Put().

◆ SetRetryProcessing() [1/2]

CHttpParam& CHttpParam::SetRetryProcessing ( ESwitch  on_off)
inline

Definition at line 241 of file ncbi_http_session.hpp.

References CHttpParam::m_RetryProcessing.

Referenced by CHttpSessionApp::SetupParam().

◆ SetRetryProcessing() [2/2]

CHttpRequest & CHttpRequest::SetRetryProcessing ( ESwitch  on_off)

Set whether Execute() should wait for actual response.

See also
Execute() SetDeadline()

Definition at line 1106 of file ncbi_http_session.cpp.

References CHttpRequest::m_RetryProcessing.

Referenced by CGuiHttpSessionRequest::CGuiHttpSessionRequest().

◆ SetTimeout() [1/3]

CHttpParam & CHttpParam::SetTimeout ( const CTimeout timeout)

Definition at line 1266 of file ncbi_http_session.cpp.

References CHttpParam::m_Timeout.

Referenced by CHttpSessionApp::SetupParam().

◆ SetTimeout() [2/3]

CHttpRequest & CHttpRequest::SetTimeout ( const CTimeout timeout)

◆ SetTimeout() [3/3]

CHttpRequest & CHttpRequest::SetTimeout ( unsigned int  sec,
unsigned int  usec = 0 
)

Set new timeout in seconds/microseconds.

Definition at line 1091 of file ncbi_http_session.cpp.

References CHttpRequest::m_Timeout, and CTimeout::Set().

◆ SetValue()

void CHttpHeaders::SetValue ( CHeaderNameConverter  name,
CTempString  value 
)

◆ sx_Adjust()

int CHttpRequest::sx_Adjust ( SConnNetInfo net_info,
void *  user_data,
unsigned int  failure_count 
)
staticprivate

◆ sx_ParseHeader()

EHTTP_HeaderParse CHttpRequest::sx_ParseHeader ( const char *  headers,
void *  user_data,
int  server_error 
)
staticprivate

◆ WriteData()

virtual void CFormDataProvider_Base::WriteData ( CNcbiOstream out) const
pure virtual

Write user data to the stream.

Implemented in CTestDataProvider, and CFileDataProvider.

◆ WriteFormData()

void CHttpFormData::WriteFormData ( CNcbiOstream out) const

◆ x_AddCookieHeader()

void CHttpRequest::x_AddCookieHeader ( const CUrl url,
bool  initial 
)
private

◆ x_AdjustHeaders()

void CHttpRequest::x_AdjustHeaders ( bool  use_form_data)
private

◆ x_CanSendData()

bool CHttpRequest::x_CanSendData ( void  ) const
private

◆ x_Downgrade() [1/2]

bool CHttpSession::x_Downgrade ( CHttpResponse ,
EProtocol  
) const
inlineoverrideprivatevirtual

Implements CHttpSession_Base.

Definition at line 826 of file ncbi_http_session.hpp.

◆ x_Downgrade() [2/2]

virtual bool CHttpSession_Base::x_Downgrade ( CHttpResponse resp,
EProtocol protocol 
) const
privatepure virtual

Implemented in CHttp2Session, and CHttpSession.

Referenced by CHttpRequest::Execute().

◆ x_GetCookies()

string CHttpSession_Base::x_GetCookies ( const CUrl url) const
private

◆ x_InitConnection()

void CHttpRequest::x_InitConnection ( bool  use_form_data)
private

◆ x_InitConnection2()

void CHttpRequest::x_InitConnection2 ( shared_ptr< iostream >  stream)
private

◆ x_IsReservedHeader()

bool CHttpHeaders::x_IsReservedHeader ( CTempString  name) const
private

◆ x_SetCookies()

void CHttpSession_Base::x_SetCookies ( const CHttpHeaders::THeaderValues cookies,
const CUrl url 
)
private

◆ x_SetProxy()

void CHttpRequest::x_SetProxy ( SConnNetInfo net_info)
private

◆ x_StartRequest() [1/2]

void CHttpSession::x_StartRequest ( EProtocol  protocol,
CHttpRequest req,
bool  use_form_data 
)
inlineoverrideprivatevirtual

◆ x_StartRequest() [2/2]

virtual void CHttpSession_Base::x_StartRequest ( EProtocol  protocol,
CHttpRequest req,
bool  use_form_data 
)
privatepure virtual

◆ x_Update()

void CHttpResponse::x_Update ( CHttpHeaders::THeaders  headers,
int  status_code,
string  status_text 
)
private

◆ x_UpdateResponse()

void CHttpRequest::x_UpdateResponse ( CHttpHeaders::THeaders  headers,
int  status_code,
string  status_text 
)
private

◆ ~CAdjustUrlCallback_Base()

virtual CHttpRequest::CAdjustUrlCallback_Base::~CAdjustUrlCallback_Base ( void  )
inlinevirtual

Definition at line 640 of file ncbi_http_session.hpp.

◆ ~CFormDataProvider_Base()

virtual CFormDataProvider_Base::~CFormDataProvider_Base ( void  )
inlinevirtual

Definition at line 350 of file ncbi_http_session.hpp.

◆ ~CHttpFormData()

virtual CHttpFormData::~CHttpFormData ( void  )
inlinevirtual

Definition at line 433 of file ncbi_http_session.hpp.

◆ ~CHttpHeaders()

virtual CHttpHeaders::~CHttpHeaders ( void  )
inlinevirtual

Definition at line 148 of file ncbi_http_session.hpp.

◆ ~CHttpResponse()

virtual CHttpResponse::~CHttpResponse ( void  )
inlinevirtual

Definition at line 508 of file ncbi_http_session.hpp.

◆ ~CHttpSession_Base()

virtual CHttpSession_Base::~CHttpSession_Base ( void  )
inlinevirtual

Definition at line 788 of file ncbi_http_session.hpp.

◆ ~CTlsCertCredentials()

CTlsCertCredentials::~CTlsCertCredentials ( void  )

Variable Documentation

◆ m_AdjustUrl

CRef<CAdjustUrlCallback_Base> CHttpRequest::m_AdjustUrl
private

◆ m_Boundary

string CHttpFormData::m_Boundary
mutableprivate

◆ m_Callback

template<class TCallback >
TCallback CHttpRequest::CAdjustUrlCallback< TCallback >::m_Callback
private

◆ m_Cert

string CTlsCertCredentials::m_Cert
private

◆ m_ContentType [1/2]

string CHttpFormData::SFormData::m_ContentType

Definition at line 447 of file ncbi_http_session.hpp.

Referenced by CHttpFormData::AddEntry().

◆ m_ContentType [2/2]

EContentType CHttpFormData::m_ContentType
private

◆ m_Cookies

CHttpCookies CHttpSession_Base::m_Cookies
private

◆ m_Cred

NCBI_CRED CTlsCertCredentials::m_Cred = nullptr
mutableprivate

◆ m_Credentials [1/3]

shared_ptr<CTlsCertCredentials> CHttpParam::m_Credentials
private

◆ m_Credentials [2/3]

shared_ptr<CTlsCertCredentials> CHttpRequest::m_Credentials
private

◆ m_Credentials [3/3]

shared_ptr<CTlsCertCredentials> CHttpSession_Base::m_Credentials
private

◆ m_Deadline [1/2]

CTimeout CHttpParam::m_Deadline
private

Definition at line 249 of file ncbi_http_session.hpp.

Referenced by CHttpParam::GetDeadline(), and CHttpParam::SetDeadline().

◆ m_Deadline [2/2]

CTimeout CHttpRequest::m_Deadline
private

◆ m_Entries

TEntries CHttpFormData::m_Entries
private

◆ m_FormData

CRef<CHttpFormData> CHttpRequest::m_FormData
private

◆ m_Headers [1/4]

THeaders CHttpHeaders::m_Headers
private

◆ m_Headers [2/4]

CRef<CHttpHeaders> CHttpParam::m_Headers
private

◆ m_Headers [3/4]

CRef<CHttpHeaders> CHttpResponse::m_Headers
private

Definition at line 522 of file ncbi_http_session.hpp.

Referenced by CHttpResponse::Headers(), and CHttpResponse::x_Update().

◆ m_Headers [4/4]

CRef<CHttpHeaders> CHttpRequest::m_Headers
private

◆ m_Host

string CHttpProxy::m_Host
private

Definition at line 200 of file ncbi_http_session.hpp.

Referenced by CHttpProxy::GetHost(), and CHttpProxy::IsEmpty().

◆ m_HttpFlags

THTTP_Flags CHttpSession_Base::m_HttpFlags
private

◆ m_Location

CUrl CHttpResponse::m_Location
private

◆ m_Method

EReqMethod CHttpRequest::m_Method
private

◆ m_Name

CTempString CHttpHeaders::CHeaderNameConverter::m_Name
private

Definition at line 96 of file ncbi_http_session.hpp.

Referenced by CHttpHeaders::CHeaderNameConverter::GetName().

◆ m_Password

string CHttpProxy::m_Password
private

Definition at line 203 of file ncbi_http_session.hpp.

Referenced by CHttpProxy::GetPassword().

◆ m_PKey

string CTlsCertCredentials::m_PKey
private

◆ m_Port

unsigned short CHttpProxy::m_Port
private

Definition at line 201 of file ncbi_http_session.hpp.

Referenced by CHttpProxy::GetPort().

◆ m_Protocol

EProtocol CHttpSession_Base::m_Protocol
private

◆ m_Providers

TProviderEntries CHttpFormData::m_Providers
private

◆ m_Proxy [1/3]

CHttpProxy CHttpParam::m_Proxy
private

Definition at line 248 of file ncbi_http_session.hpp.

Referenced by CHttpParam::GetProxy(), and CHttpParam::SetProxy().

◆ m_Proxy [2/3]

CHttpProxy CHttpRequest::m_Proxy
private

◆ m_Proxy [3/3]

CHttpProxy CHttpSession_Base::m_Proxy
private

◆ m_Response

CRef<CHttpResponse> CHttpRequest::m_Response
private

◆ m_Retries [1/2]

THttpRetries CHttpParam::m_Retries
private

Definition at line 246 of file ncbi_http_session.hpp.

Referenced by CHttpParam::GetRetries(), and CHttpParam::SetRetries().

◆ m_Retries [2/2]

THttpRetries CHttpRequest::m_Retries
private

◆ m_RetryProcessing [1/2]

ESwitch CHttpParam::m_RetryProcessing
private

◆ m_RetryProcessing [2/2]

ESwitch CHttpRequest::m_RetryProcessing
private

◆ m_Session [1/2]

CRef<CHttpSession_Base> CHttpResponse::m_Session
private

Definition at line 518 of file ncbi_http_session.hpp.

Referenced by CHttpResponse::x_Update().

◆ m_Session [2/2]

CRef<CHttpSession_Base> CHttpRequest::m_Session
private

◆ m_StatusCode

int CHttpResponse::m_StatusCode
private

◆ m_StatusText

string CHttpResponse::m_StatusText
private

◆ m_Stream [1/2]

shared_ptr<iostream> CHttpResponse::m_Stream
private

◆ m_Stream [2/2]

shared_ptr<iostream> CHttpRequest::m_Stream
private

◆ m_Timeout [1/2]

CTimeout CHttpParam::m_Timeout
private

Definition at line 245 of file ncbi_http_session.hpp.

Referenced by CHttpParam::GetTimeout(), and CHttpParam::SetTimeout().

◆ m_Timeout [2/2]

CTimeout CHttpRequest::m_Timeout
private

◆ m_Url [1/2]

CUrl CHttpResponse::m_Url
private

Definition at line 519 of file ncbi_http_session.hpp.

◆ m_Url [2/2]

CUrl CHttpRequest::m_Url
private

◆ m_User

string CHttpProxy::m_User
private

Definition at line 202 of file ncbi_http_session.hpp.

Referenced by CHttpProxy::GetUser().

◆ m_Value

string CHttpFormData::SFormData::m_Value

Definition at line 446 of file ncbi_http_session.hpp.

Referenced by CHttpFormData::AddEntry().

Friends

◆ CHttp2Session

friend class CHttp2Session
friend

Definition at line 634 of file ncbi_http_session.hpp.

◆ CHttpRequest [1/4]

friend class CHttpRequest
friend

Definition at line 151 of file ncbi_http_session.hpp.

◆ CHttpRequest [2/4]

friend class CHttpRequest
friend

Definition at line 436 of file ncbi_http_session.hpp.

◆ CHttpRequest [3/4]

friend class CHttpRequest
friend

Definition at line 511 of file ncbi_http_session.hpp.

◆ CHttpRequest [4/4]

friend class CHttpRequest
friend

Definition at line 793 of file ncbi_http_session.hpp.

Referenced by CHttpSession_Base::NewRequest().

◆ CHttpResponse [1/2]

friend class CHttpResponse
friend

Definition at line 152 of file ncbi_http_session.hpp.

◆ CHttpResponse [2/2]

friend class CHttpResponse
friend

Definition at line 794 of file ncbi_http_session.hpp.

◆ CHttpSession

friend class CHttpSession
friend

Definition at line 633 of file ncbi_http_session.hpp.

◆ CHttpSession_Base

friend class CHttpSession_Base
friend

Definition at line 632 of file ncbi_http_session.hpp.

Modified on Tue Apr 23 07:38:48 2024 by modify_doxy.py rev. 669887