te::ws::core::CurlWrapper Class Reference

An abstraction to Lib Curl functions. More...

#include <CurlWrapper.h>

Inheritance diagram for te::ws::core::CurlWrapper:
MockCurlWrapper

Classes

class  CurlGlobalScope
 RAII class to init curl. More...
 
struct  Impl
 

Public Member Functions

 CurlWrapper ()
 
 CurlWrapper (CurlWrapper &&other)
 
virtual void customRequest (const te::core::URI &uri, const std::string &request, const std::string &body=std::string(""), const ::std::string &header=std::string(""))
 Method to make a custom request, useful for performing a HTTP DELETE request. More...
 
virtual void downloadFile (const std::string &url, const std::string &filePath, te::common::TaskProgress *taskProgress=0)
 Method to download a file retrieved from given URL and save into the specified file path. More...
 
virtual void downloadFile (const std::string &url, std::FILE *file, te::common::TaskProgress *taskProgress=0)
 Method to download a file retrieved from given URL and save into the specified File. More...
 
virtual void get (const te::core::URI &uri, std::string &buffer)
 Method to make a GET request. More...
 
virtual AuthenticationMethod getAuthenticationMethod () const
 Gets current AuthenticationMethod. More...
 
virtual std::string getTaskMessage () const
 This method gets the message that will be used on Progress Bar when this object is downloading some file. More...
 
virtual std::string getUsername () const
 Gets the user name that will be used when an athentication method is set. More...
 
virtual std::vector< std::string > listFiles (const te::core::URI &uri)
 Method to list files in a URI. More...
 
virtual void post (const te::core::URI &uri, const std::string &postFields, const ::std::string &header)
 Method to request a post in a determined URI. More...
 
virtual void putFile (const te::core::URI &uri, const std::string &filePath, const ::std::string &header, te::common::TaskProgress *taskProgress=0)
 Method to request a put with a file in a determined URI. More...
 
virtual void putFile (const te::core::URI &uri, FILE *file, const ::std::string &header, te::common::TaskProgress *taskProgress=0, const long &fileSize=0L)
 Method to request a put a file in a determined URI. More...
 
virtual const std::string & response () const
 Returns the last operation response if the protocol allows it. More...
 
virtual const long responseCode () const
 Returns the last operation response code. More...
 
virtual void setAuthenticationMethod (const AuthenticationMethod &method)
 Sets the authentication method that will be used on the requests. More...
 
virtual void setPassword (const std::string &password)
 Sets the password that will be used when an athentication method is set. More...
 
virtual void setTaskMessage (const std::string &taskMessage)
 This method sets the message that will be used on Progress Bar when this object is downloading some file. More...
 
virtual void setUsername (const std::string &username)
 Sets the user name that will be used when an athentication method is set. More...
 
virtual void verifyURL (std::string url, uint32_t timeout) const
 Verify if the URI is reacheble. More...
 
virtual ~CurlWrapper ()
 

Protected Member Functions

virtual void addAuthParameters ()
 Adds HTTP Authentication parameters according to the current AuthenticationMethod. More...
 
virtual void clean ()
 Reset the curl handle and the class members. More...
 
virtual void downloadFile_ (const std::string &url, std::FILE *file, te::common::TaskProgress *taskProgress=0)
 Private unsafe method to download a file retrieved from given URL and save into the specified File. More...
 
std::unique_lock< std::mutex > getLock ()
 
virtual std::vector< std::string > listFiles_ (const te::core::URI &uri)
 Private unsafe method to list files in a URI. More...
 
void setOption (int option, std::string value)
 
void setOption (int option, char *value)
 
void setOption (int option, int value)
 

Private Attributes

std::unique_ptr< Implm_pimpl
 

Static Private Attributes

static CurlGlobalScope curlScope_
 

Detailed Description

An abstraction to Lib Curl functions.

Definition at line 61 of file CurlWrapper.h.

Constructor & Destructor Documentation

te::ws::core::CurlWrapper::CurlWrapper ( )

Definition at line 73 of file CurlWrapper.cpp.

References te::ws::core::NOT_AUTH.

te::ws::core::CurlWrapper::CurlWrapper ( CurlWrapper &&  other)

Definition at line 80 of file CurlWrapper.cpp.

References ~CurlWrapper().

te::ws::core::CurlWrapper::~CurlWrapper ( )
virtualdefault

Referenced by CurlWrapper().

Member Function Documentation

void te::ws::core::CurlWrapper::addAuthParameters ( )
protectedvirtual

Adds HTTP Authentication parameters according to the current AuthenticationMethod.

Definition at line 562 of file CurlWrapper.cpp.

References te::ws::core::HTTP_BASIC, te::ws::core::HTTP_DIGEST, m_pimpl, and te::ws::core::NOT_AUTH.

Referenced by downloadFile_(), and get().

void te::ws::core::CurlWrapper::clean ( )
protectedvirtual

Reset the curl handle and the class members.

Definition at line 87 of file CurlWrapper.cpp.

References m_pimpl.

Referenced by customRequest(), downloadFile(), get(), listFiles(), post(), and putFile().

void te::ws::core::CurlWrapper::customRequest ( const te::core::URI uri,
const std::string &  request,
const std::string &  body = std::string(""),
const ::std::string &  header = std::string("") 
)
virtual

Method to make a custom request, useful for performing a HTTP DELETE request.

Parameters
uriThe URI with the address information
requestThe custom request

Definition at line 427 of file CurlWrapper.cpp.

References clean(), m_pimpl, te::core::URI::uri(), and WriteResponse().

void te::ws::core::CurlWrapper::downloadFile ( const std::string &  url,
const std::string &  filePath,
te::common::TaskProgress taskProgress = 0 
)
virtual

Method to download a file retrieved from given URL and save into the specified file path.

Parameters
urlURL that the file will be downloaded.
filePathfile path where downloaded file will be saved.

Definition at line 199 of file CurlWrapper.cpp.

References file(), te::core::CharEncoding::fromUTF8(), and TE_TR.

void te::ws::core::CurlWrapper::downloadFile ( const std::string &  url,
std::FILE *  file,
te::common::TaskProgress taskProgress = 0 
)
virtual

Method to download a file retrieved from given URL and save into the specified File.

Parameters
urlURL that the file will be downloaded.
fileFile where downloaded file will be write.

Definition at line 220 of file CurlWrapper.cpp.

References clean(), downloadFile_(), and getLock().

void te::ws::core::CurlWrapper::downloadFile_ ( const std::string &  url,
std::FILE *  file,
te::common::TaskProgress taskProgress = 0 
)
protectedvirtual

Private unsafe method to download a file retrieved from given URL and save into the specified File.

Warning
NOT thread safe, call getLock() to acquire lock before using.
NOT CURL safe, call clean() before using
Parameters
urlURL that the file will be downloaded.
fileFile where downloaded file will be write.

Definition at line 227 of file CurlWrapper.cpp.

References addAuthParameters(), DownloadProgress(), file(), te::gm::L, CurlProgress::m_baseMessage, CurlProgress::m_curl, m_pimpl, CurlProgress::m_task, te::ws::core::NOT_AUTH, TE_TR, te::common::TaskProgress::UNDEFINED, and WriteFileCallback().

Referenced by downloadFile().

void te::ws::core::CurlWrapper::get ( const te::core::URI uri,
std::string &  buffer 
)
virtual

Method to make a GET request.

Parameters
uriThe URI with the address information
bufferWhere the server answer will be write.

Definition at line 475 of file CurlWrapper.cpp.

References addAuthParameters(), clean(), m_pimpl, te::ws::core::NOT_AUTH, te::core::URI::uri(), and WriteResponse().

te::ws::core::AuthenticationMethod te::ws::core::CurlWrapper::getAuthenticationMethod ( ) const
virtual

Gets current AuthenticationMethod.

Returns
current AuthenticationMethod.

Definition at line 542 of file CurlWrapper.cpp.

References m_pimpl.

std::unique_lock< std::mutex > te::ws::core::CurlWrapper::getLock ( )
protected

Definition at line 215 of file CurlWrapper.cpp.

References m_pimpl.

Referenced by downloadFile().

std::string te::ws::core::CurlWrapper::getTaskMessage ( ) const
virtual

This method gets the message that will be used on Progress Bar when this object is downloading some file.

Definition at line 279 of file CurlWrapper.cpp.

References m_pimpl.

std::string te::ws::core::CurlWrapper::getUsername ( ) const
virtual

Gets the user name that will be used when an athentication method is set.

Returns
username

Definition at line 552 of file CurlWrapper.cpp.

References m_pimpl.

std::vector< std::string > te::ws::core::CurlWrapper::listFiles ( const te::core::URI uri)
virtual

Method to list files in a URI.

Parameters
urlURL that the files will be listed.

Definition at line 628 of file CurlWrapper.cpp.

References clean(), and listFiles_().

std::vector< std::string > te::ws::core::CurlWrapper::listFiles_ ( const te::core::URI uri)
protectedvirtual

Private unsafe method to list files in a URI.

Warning
NOT thread safe, call getLock() to acquire lock before using.
NOT CURL safe, call clean() before using
Parameters
urlURL that the files will be listed.

Definition at line 634 of file CurlWrapper.cpp.

References m_pimpl, te::core::URI::uri(), and WriteResponse().

Referenced by listFiles().

void te::ws::core::CurlWrapper::post ( const te::core::URI uri,
const std::string &  postFields,
const ::std::string &  header 
)
virtual

Method to request a post in a determined URI.

Parameters
uriThe URI with the address information to post
postFieldsThe parameters and values to post
headerA header to the post request

Definition at line 291 of file CurlWrapper.cpp.

References clean(), file(), te::ws::core::GetFileSize(), m_pimpl, putFile(), TE_TR, te::core::URI::uri(), and WriteResponse().

virtual void te::ws::core::CurlWrapper::putFile ( const te::core::URI uri,
const std::string &  filePath,
const ::std::string &  header,
te::common::TaskProgress taskProgress = 0 
)
virtual

Method to request a put with a file in a determined URI.

Parameters
uriThe URI with the address information
filePath The full path of the file to put
headerA header to the put request

Referenced by post().

void te::ws::core::CurlWrapper::putFile ( const te::core::URI uri,
FILE *  file,
const ::std::string &  header,
te::common::TaskProgress taskProgress = 0,
const long &  fileSize = 0L 
)
virtual

Method to request a put a file in a determined URI.

Parameters
uriThe URI with the address information
fileContains the file opened by the fstream
headerA header to the put request

Definition at line 354 of file CurlWrapper.cpp.

References clean(), file(), te::gm::L, CurlProgress::m_baseMessage, CurlProgress::m_curl, m_pimpl, CurlProgress::m_task, read_data(), te::common::TaskProgress::UNDEFINED, UploadProgress(), te::core::URI::uri(), and WriteResponse().

const std::string & te::ws::core::CurlWrapper::response ( ) const
virtual

Returns the last operation response if the protocol allows it.

Returns
The response

Definition at line 532 of file CurlWrapper.cpp.

References m_pimpl.

const long te::ws::core::CurlWrapper::responseCode ( ) const
virtual

Returns the last operation response code.

Returns
The response code

Definition at line 526 of file CurlWrapper.cpp.

References m_pimpl.

void te::ws::core::CurlWrapper::setAuthenticationMethod ( const AuthenticationMethod method)
virtual

Sets the authentication method that will be used on the requests.

Parameters
method(e. g.: Basic or Digest)

Definition at line 537 of file CurlWrapper.cpp.

References m_pimpl.

void te::ws::core::CurlWrapper::setOption ( int  option,
std::string  value 
)
protected

Definition at line 590 of file CurlWrapper.cpp.

References m_pimpl.

void te::ws::core::CurlWrapper::setOption ( int  option,
char *  value 
)
protected

Definition at line 596 of file CurlWrapper.cpp.

References m_pimpl.

void te::ws::core::CurlWrapper::setOption ( int  option,
int  value 
)
protected

Definition at line 603 of file CurlWrapper.cpp.

References m_pimpl.

void te::ws::core::CurlWrapper::setPassword ( const std::string &  password)
virtual

Sets the password that will be used when an athentication method is set.

Parameters
password

Definition at line 557 of file CurlWrapper.cpp.

References m_pimpl.

void te::ws::core::CurlWrapper::setTaskMessage ( const std::string &  taskMessage)
virtual

This method sets the message that will be used on Progress Bar when this object is downloading some file.

Parameters
taskMessagenew message.

Definition at line 285 of file CurlWrapper.cpp.

References m_pimpl.

void te::ws::core::CurlWrapper::setUsername ( const std::string &  username)
virtual

Sets the user name that will be used when an athentication method is set.

Parameters
username

Definition at line 547 of file CurlWrapper.cpp.

References m_pimpl.

void te::ws::core::CurlWrapper::verifyURL ( std::string  url,
uint32_t  timeout 
) const
virtual

Verify if the URI is reacheble.

Exceptions
te::ws::core::ExceptionRise if the URI cannot be reached.

Definition at line 609 of file CurlWrapper.cpp.

References m_pimpl.

Member Data Documentation

te::ws::core::CurlWrapper::CurlGlobalScope te::ws::core::CurlWrapper::curlScope_
staticprivate

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