SuperTuxKart
|
A http request. More...
#include <http_request.hpp>
Public Member Functions | |
HTTPRequest (int priority=1) | |
Creates a HTTP(S) request that will have a raw string as result. | |
HTTPRequest (const std::string &filename, int priority=1) | |
This constructor configures this request to save the data in a flie. | |
HTTPRequest (const char *const filename, int priority=1) | |
Char * needs a separate constructor, otherwise it will be considered to be the no-filename constructor (char* -> bool). | |
virtual bool | isAllowedToAdd () const OVERRIDE |
Checks the request if it has enough (correct) information to be executed (and thus allowed to add to the queue). | |
void | setApiURL (const std::string &url, const std::string &action) |
A handy shortcut that appends the given path to the URL of the mutiplayer server. | |
void | setAddonsURL (const std::string &path) |
A handy shortcut that appends the given path to the URL of the addons server. | |
virtual bool | hadDownloadError () const |
Returns true if there was an error downloading the file. | |
void | setDownloadAssetsRequest (bool val) |
const char * | getDownloadErrorMessage () const |
Returns the curl error message if an error has occurred. | |
const std::string & | getData () const |
Returns the downloaded string. | |
void | addParameter (const std::string &name, const std::string &value) |
Sets a parameter to 'value' (std::string). | |
void | addParameter (const std::string &name, const irr::core::stringw &value) |
Sets a parameter to 'value' (stringw). | |
template<typename T > | |
void | addParameter (const std::string &name, const T &value) |
Sets a parameter to 'value' (arbitrary types). | |
float | getProgress () const |
Returns the current progress. | |
void | setProgress (float f) |
Sets the current progress. | |
const std::string & | getURL () const |
void | setURL (const std::string &url) |
Sets the URL for this request. | |
const std::string & | getFileName () const |
double | getTotalSize () const |
void | setTotalSize (double d) |
Public Member Functions inherited from Online::Request | |
Request (int priority, int type) | |
Creates a request that can be handled by the RequestManager. | |
void | execute () |
Executes the request. | |
void | executeNow () |
Executes the request now, i.e. | |
void | queue () |
Inserts this request into the RequestManager's queue for executing. | |
virtual void | callback () |
Executed when a request has finished. | |
int | getType () const |
Returns the type of the request. | |
int | getPriority () const |
Returns the priority of this request. | |
void | cancel () |
Signals that this request should be canceled. | |
bool | isCancelled () const |
Returns if this request is to be canceled. | |
bool | isAbortable () const |
Returns if this request can be aborted. | |
void | setAbortable (bool b) |
Sets if this request is abortable or not. | |
void | setBusy () |
Sets the request state to busy. | |
void | setExecuted () |
Sets the request to be completed. | |
void | setDone () |
Should only be called by the manager. | |
bool | isDone () const |
Returns if this request is done. | |
bool | isPreparing () const |
Returns if this request is being prepared. | |
bool | isBusy () const |
Returns if this request is busy. | |
bool | hasBeenExecuted () const |
Checks if the request has completed or done (i.e. | |
virtual bool | isAllowedToAdd () const |
Virtual method to check if a request has initialized all needed members to a valid value. | |
Protected Member Functions | |
virtual void | prepareOperation () OVERRIDE |
Sets up the curl data structures. | |
virtual void | operation () OVERRIDE |
The actual curl download happens here. | |
virtual void | afterOperation () OVERRIDE |
Cleanup once the download is finished. | |
void | init () |
Initialises all member variables. | |
virtual void | operation () |
The actual operation to be executed. | |
virtual void | prepareOperation () |
Virtual function to be called before an operation. | |
virtual void | afterOperation () |
Virtual function to be called after an operation. | |
Static Protected Member Functions | |
static int | progressDownload (void *clientp, progress_t dltotal, progress_t dlnow, progress_t ultotal, progress_t ulnow) |
Callback function from curl: inform about progress. | |
static size_t | writeCallback (void *contents, size_t size, size_t nmemb, void *userp) |
Callback from curl. | |
Protected Attributes | |
std::string | m_filename |
Contains a filename if the data should be saved into a file instead of being kept in in memory. | |
bool | m_disable_sending_log |
bool | m_download_assets_request = false |
Protected Attributes inherited from Online::Request | |
Synchronised< bool > | m_cancel |
Cancel this request if it is active. | |
Synchronised< bool > | m_is_abortable |
If this request can be aborted (at the end of STK). | |
Synchronised< State > | m_state |
Set to though if the reply of the request is in and callbacks are executed. | |
Private Attributes | |
std::atomic< float > | m_progress |
The progress indicator. | |
std::atomic< double > | m_total_size |
std::string | m_url |
The url to download. | |
std::string | m_parameters |
The POST parameters that will be send with the request. | |
CURL * | m_curl_session = NULL |
Pointer to the curl data structure for this request. | |
CURLcode | m_curl_code |
curl return code. | |
std::string | m_string_buffer |
String to store the received data in. | |
struct curl_slist * | m_http_header = NULL |
Additional Inherited Members | |
Public Types inherited from Online::Request | |
enum | RequestType { RT_QUIT = 1 } |
A http request.
Online::HTTPRequest::HTTPRequest | ( | int | priority = 1 | ) |
Creates a HTTP(S) request that will have a raw string as result.
(Can of course be used if the result doesn't matter.)
priority | by what priority should the RequestManager take care of this request. |
Online::HTTPRequest::HTTPRequest | ( | const std::string & | filename, |
int | priority = 1 |
||
) |
This constructor configures this request to save the data in a flie.
filename | Name of the file to save the data to. |
priority | by what priority should the RequestManager take care of this request. |
|
protectedvirtual |
Cleanup once the download is finished.
The value of progress is guaranteed to be >=0 and <1 while the download is in progress, and will only be set to 1 on a successfull finish here.
Reimplemented from Online::Request.
Reimplemented in SubmitRankingRequest, Online::XMLRequest, and AddonsPackRequest.
|
inline |
Returns the downloaded string.
|
inline |
Returns the curl error message if an error has occurred.
|
inlinevirtual |
Returns true if there was an error downloading the file.
Reimplemented in AddonsPackRequest.
|
virtual |
Checks the request if it has enough (correct) information to be executed (and thus allowed to add to the queue).
Reimplemented from Online::Request.
|
protectedvirtual |
The actual curl download happens here.
Reimplemented from Online::Request.
|
protectedvirtual |
Sets up the curl data structures.
Reimplemented from Online::Request.
|
staticprotected |
Callback function from curl: inform about progress.
It makes sure that the value reported by getProgress () is <1 while the download is still in progress.
clientp | |
download_total | Total size of data to download. |
download_now | How much has been downloaded so far. |
upload_total | Total amount of upload. |
upload_now | How muc has been uploaded so far. |
void Online::HTTPRequest::setAddonsURL | ( | const std::string & | path | ) |
A handy shortcut that appends the given path to the URL of the addons server.
path | The path to add to the server, without the trailing slash |
void Online::HTTPRequest::setApiURL | ( | const std::string & | path, |
const std::string & | action | ||
) |
A handy shortcut that appends the given path to the URL of the mutiplayer server.
It also supports the old (version 1) api, where a 'action' parameter was sent to 'client-user.php'.
path | The path to add to the server.(see API::USER_*) |
action | The action to perform. eg: connect, pool |
|
staticprotected |
Callback from curl.
This stores the data received by curl in the buffer of this request.
content | Pointer to the data received by curl. |
size | Size of one block. |
nmemb | Number of blocks received. |
userp | Pointer to the user buffer. |
|
protected |
Contains a filename if the data should be saved into a file instead of being kept in in memory.
Otherwise this is "".
|
private |
The progress indicator.
0 untill it is started and the first packet is downloaded. Guaranteed to be <1 while the download is in progress, it will be set to either -1 (error) or 1 (everything ok) at the end.