219 lines
5.3 KiB
C++
219 lines
5.3 KiB
C++
#undef DLIB_BROWSER_ABSTRACh_
|
|
#ifdef DLIB_BROWSER_ABSTRACh_
|
|
|
|
|
|
|
|
namespace dlib
|
|
{
|
|
|
|
// Function which is called when there is data available.
|
|
// Return false to stop the download process...
|
|
typedef bool (*fnOnDownload)(long already_downloaded, long total_to_download, void * userInfo);
|
|
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
/*
|
|
TODO:
|
|
- Timed cookie support
|
|
- POSTing files: check it!
|
|
- Don't timeout when still downloading!
|
|
*/
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
|
|
class Browser
|
|
{
|
|
/*!
|
|
WHAT THIS OBJECT REPRESENTS
|
|
This object represents a possibility for the end user to download webpages (HTTP/1.0)
|
|
from the internet like a normal webbrowser would do.
|
|
!*/
|
|
|
|
public:
|
|
|
|
Browser(
|
|
);
|
|
/*!
|
|
Constructor
|
|
!*/
|
|
|
|
void set_header(
|
|
const std::string& header_name,
|
|
const std::string& header_value
|
|
);
|
|
/*!
|
|
Set a header to a certain value
|
|
Example: set_header("User-Agent", "Internet Explorer")
|
|
!*/
|
|
|
|
|
|
void set_header(
|
|
const std::string& header_name,
|
|
long header_value
|
|
);
|
|
/*!
|
|
Set a header to a certain number
|
|
Example: set_header("Content-Length", 1234)
|
|
!*/
|
|
|
|
std::string get_header(
|
|
const std::string& header_name
|
|
) const;
|
|
/*!
|
|
Get the value of the header or an empty string when it's not set.
|
|
Example: get_header("Content-Length") would return "1234"
|
|
!*/
|
|
|
|
void remove_header(
|
|
const std::string& header_name
|
|
);
|
|
/*!
|
|
Removes a certain header
|
|
!*/
|
|
|
|
bool is_header_set(
|
|
const std::string& header_name
|
|
) const;
|
|
/*!
|
|
Returns when a header is set and is not empty
|
|
!*/
|
|
|
|
void set_user_agent(
|
|
const std::string& new_agent
|
|
) { set_header("User-Agent", new_agent); }
|
|
/*!
|
|
Convenience function for setting a user agent
|
|
!*/
|
|
|
|
void clear(
|
|
);
|
|
/*!
|
|
Clear out all cookies & headers set until now
|
|
!*/
|
|
|
|
void prepare_for_next_url(
|
|
);
|
|
/*!
|
|
Clear out any header and/or cookie which would obstruct getting a next page.
|
|
At this moment this is cleared:
|
|
- the Content-Type header
|
|
!*/
|
|
|
|
void set_callback_function(
|
|
fnOnDownload od,
|
|
void * _user_info
|
|
);
|
|
/*!
|
|
Set a callback function for one of the following events:
|
|
- OnDownload: this will tell you how much is downloaded and how much will need to be downloaded
|
|
!*/
|
|
|
|
void set_cookie(
|
|
const std::string& cookie_name,
|
|
const std::string& cookie_value
|
|
);
|
|
/*!
|
|
Set a cookie
|
|
!*/
|
|
|
|
void set_cookie(
|
|
const std::string& cookie_name,
|
|
long cookie_value
|
|
);
|
|
/*!
|
|
Set a cookie
|
|
!*/
|
|
|
|
void remove_cookie(
|
|
const std::string& cookie_name
|
|
);
|
|
/*!
|
|
Remove a cookie if it's set
|
|
!*/
|
|
|
|
void set_timeout(
|
|
unsigned int milliseconds
|
|
);
|
|
/*!
|
|
Set the maximum time how long a request can take. Setting this to 0 disables
|
|
this behavior.
|
|
!*/
|
|
|
|
string_to_stringvector get_returned_headers(
|
|
) const;
|
|
/*!
|
|
Returns all the headers which are returned in the download of the webpage.
|
|
!*/
|
|
|
|
short get_http_return (
|
|
) const;
|
|
/*!
|
|
Retrieves the HTTP return code.
|
|
!*/
|
|
|
|
const std::string& get_body (
|
|
) const;
|
|
/*!
|
|
Retrieves the HTTP body.
|
|
!*/
|
|
|
|
const std::string& post_url (
|
|
const std::string& url,
|
|
const string_to_stringmap& postvars,
|
|
const string_to_stringmap& filenames = string_to_stringmap()
|
|
);
|
|
/*!
|
|
POST an url to the internet.
|
|
You can pass the post variables as well as a list of filenames
|
|
!*/
|
|
|
|
const std::string& post_url (
|
|
const std::string& url,
|
|
const std::string& postbuffer
|
|
);
|
|
/*!
|
|
POST an url to the internet.
|
|
In this function you have constructed the POST string yourselves
|
|
!*/
|
|
|
|
const std::string& get_url (
|
|
const std::string& url
|
|
);
|
|
/*!
|
|
GET an url from the internet.
|
|
!*/
|
|
|
|
bool has_error(
|
|
) const;
|
|
/*!
|
|
Has there happened an error?
|
|
!*/
|
|
|
|
const std::string& get_error(
|
|
) const;
|
|
/*!
|
|
Get the error explanation
|
|
!*/
|
|
|
|
static std::string urlencode(
|
|
const std::string& in,
|
|
bool post_encode = false
|
|
);
|
|
/*!
|
|
Convenience function to URLencode a string
|
|
!*/
|
|
|
|
static std::string urldecode(
|
|
const std::string& in
|
|
);
|
|
/*!
|
|
Convenience function to URLdecode a string
|
|
!*/
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif // DLIB_BROWSER_ABSTRACh_
|
|
|