Files correlati : Commento : Spostamento in libraries delle librerie esterne di Campo per una maggiore pulizia e organizzazione git-svn-id: svn://10.65.10.50/branches/R_10_00@24150 c028cbd2-c16b-5b4b-a496-9718f37d4682
224 lines
8.0 KiB
C++
224 lines
8.0 KiB
C++
/*
|
|
* Copyright (c) <2002-2009> <Jean-Philippe Barrette-LaPierre>
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining
|
|
* a copy of this software and associated documentation files
|
|
* (curlpp), to deal in the Software without restriction,
|
|
* including without limitation the rights to use, copy, modify, merge,
|
|
* publish, distribute, sublicense, and/or sell copies of the Software,
|
|
* and to permit persons to whom the Software is furnished to do so,
|
|
* subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included
|
|
* in all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
|
|
|
|
#ifndef CURLPP_CURLPP_HPP
|
|
#define CURLPP_CURLPP_HPP
|
|
|
|
#define LIBCURLPP_VERSION "0.8.1"
|
|
#define LIBCURLPP_VERSION_NUM 0x000801
|
|
|
|
|
|
|
|
#include <curl/curl.h>
|
|
|
|
#include <string>
|
|
#include <cstdlib>
|
|
|
|
namespace curlpp
|
|
{
|
|
|
|
/**
|
|
* This function takes care of initializing curlpp (also libcURL).
|
|
*
|
|
* If you want to cleanup cURL before your application quits just call curlpp::terminate().
|
|
* This function should only be called once (no matter how many threads or
|
|
* libcurl sessions that'll be used) by every application that uses libcurl,
|
|
* it will throw a logic_error if you call it twice.
|
|
*
|
|
* The flags option is a bit pattern that tells libcurl exact what features
|
|
* to init, as described below. Set the desired bits by ORing the values together.
|
|
*
|
|
* CURL_GLOBAL_ALL
|
|
* Initialize everything possible. This sets all known bits.
|
|
*
|
|
* CURL_GLOBAL_SSL
|
|
* Initialize SSL
|
|
*
|
|
* CURL_GLOBAL_WIN32
|
|
* Initialize the Win32 socket libraries.
|
|
*
|
|
* CURL_GLOBAL_NOTHING
|
|
* Initialise nothing extra. This sets no bit.
|
|
*
|
|
* NOTE: you should never call this function twice.
|
|
*/
|
|
|
|
void initialize(long flags = CURL_GLOBAL_ALL);
|
|
|
|
/**
|
|
* This function takes care of cleaning up curlpp (also libcURL).
|
|
*
|
|
* See curlpp::initialize(long flags) for more documentation.
|
|
* NOTE: you cannot call this function if curlpp is not loaded, or if you already
|
|
* called in once; it will throw a logic_error if you do otherwise.
|
|
*/
|
|
|
|
void terminate();
|
|
|
|
/**
|
|
* \depreciated This is an obsolete class. DO NOT use it.
|
|
*
|
|
* The only reason it's still here,
|
|
* is to be sure that it is backward compatible. This class was taking care of
|
|
* initialization and cleaning up curlpp (also libcURL) (it was calling
|
|
* curlpp:terminate() in his destructor). However, from now on, you do not need
|
|
* this class. Note that the removal of this class was done because it was
|
|
* raising some threading issues.
|
|
*
|
|
* Old documentation of that class:
|
|
*
|
|
* If you want to be sure that curlpp is cleaned up after you reached
|
|
* the end of scope of a specific function using curlpp, instantiate
|
|
* this class. This function call curlpp::initialize() in his
|
|
* constructor, so you don't have to call it by yourself, when you have
|
|
* decided to use it.
|
|
*
|
|
* See curlpp::initialize(long flags) and curlpp:terminate() for more documentation.
|
|
*/
|
|
|
|
class Cleanup
|
|
{
|
|
|
|
public:
|
|
|
|
Cleanup();
|
|
~Cleanup();
|
|
|
|
};
|
|
|
|
/**
|
|
* URL encodes string.
|
|
*
|
|
* This function will convert the given input string to an URL encoded
|
|
* string and return that as a new allocated string. All input characters
|
|
* that are not a-z, A-Z or 0-9 will be converted to their "URL escaped"
|
|
* version (%NN where NN is a two-digit hexadecimal number).
|
|
*/
|
|
|
|
std::string escape(const std::string & url);
|
|
|
|
/**
|
|
* Decodes URL encoded string.
|
|
*
|
|
* This function will convert the given URL encoded input string to a
|
|
* "plain string" and return that as a new allocated string. All input
|
|
* characters that are URL encoded (%XX) where XX is a two-digit
|
|
* hexadecimal number, or +) will be converted to their plain text versions
|
|
* (up to a ? letter, no + letters to the right of a ? letter will be
|
|
* converted).
|
|
*/
|
|
|
|
std::string unescape(const std::string & url);
|
|
|
|
/**
|
|
* Portable wrapper for the getenv() function.
|
|
*
|
|
* It's meant to emulate
|
|
* its behaviour and provide an identical interface for all operating
|
|
* systems libcurl builds on (including win32). Under unix operating
|
|
* systems, there isn't any point in returning an allocated memory,
|
|
* although other systems won't work properly if this isn't done. The unix
|
|
* implementation thus have to suffer slightly from the drawbacks of other
|
|
* systems.
|
|
*/
|
|
|
|
std::string getenv(const std::string & name);
|
|
|
|
/**
|
|
* Returns a human readable string with the version number of libcurl and
|
|
* some of its important components (like OpenSSL version).
|
|
*
|
|
* Note: this returns the actual running lib's version, you might have
|
|
* installed a newer lib's include files in your system which may turn
|
|
* your LIBCURL_VERSION #define value to differ from this result.
|
|
*/
|
|
std::string libcurlVersion();
|
|
|
|
/**
|
|
* This function returns the number of seconds since January 1st 1970,
|
|
* for the date and time that the datestring parameter specifies. The now
|
|
* parameter is there and should hold the current time to allow the
|
|
* datestring to specify relative dates/times. Read further in the date
|
|
* string parser section below.
|
|
*
|
|
* PARSING DATES AND TIMES
|
|
* A "date" is a string, possibly empty, containing many items separated
|
|
* by whitespace. The whitespace may be omitted when no ambiguity
|
|
* arises. The empty string means the beginning of today (i.e., midnight).
|
|
* Order of the items is immaterial. A date string may contain many
|
|
* flavors of items:
|
|
*
|
|
* calendar date items
|
|
* This can be specified in a number of different ways. Including
|
|
* 1970-09-17, 70-9-17, 70-09-17, 9/17/72, 24 September 1972, 24 Sept 72,
|
|
* 24 Sep 72, Sep 24, 1972, 24-sep-72, 24sep72. The year can also be
|
|
* omitted, for example: 9/17 or "sep 17".
|
|
*
|
|
* time of the day items
|
|
* This string specifies the time on a given day. Syntax supported
|
|
* includes: 18:19:0, 18:19, 6:19pm, 18:19-0500 (for specifying the time
|
|
* zone as well).
|
|
*
|
|
* time zone items
|
|
* Specifies international time zone. There are a few acronyms
|
|
* supported, but in general you should instead use the specific
|
|
* realtive time compared to UTC. Supported formats include: -1200, MST,
|
|
* +0100.
|
|
*
|
|
* day of the week items
|
|
* Specifies a day of the week. If this is mentioned alone it means that
|
|
* day of the week in the future. Days of the week may be spelled out in
|
|
* full: `Sunday', `Monday', etc or they may be abbreviated to their
|
|
* first three letters, optionally followed by a period. The special
|
|
* abbreviations `Tues' for `Tuesday', `Wednes' for `Wednesday' and `Thur'
|
|
* or `Thurs' for `Thursday' are also allowed. A number may precede a day
|
|
* of the week item to move forward supplementary weeks. It is best
|
|
* used in expression like `third monday'. In this context, `last DAY'
|
|
* or `next DAY' is also acceptable; they move one week before or after
|
|
* the day that DAY by itself would represent.
|
|
*
|
|
* relative items
|
|
* A relative item adjusts a date (or the current date if none) forward
|
|
* or backward. Example syntax includes: "1 year", "1 year ago",
|
|
* "2 days", "4 weeks". The string `tomorrow' is worth one day in the
|
|
* future (equivalent to `day'), the string `yesterday' is worth one
|
|
* day in the past (equivalent to `day ago').
|
|
*
|
|
* pure numbers
|
|
* If the decimal number is of the form YYYYMMDD and no other calendar date
|
|
* item appears before it in the date string, then YYYY is read as
|
|
* the year, MM as the month number and DD as the day of the month, for the
|
|
* specified calendar date.
|
|
*/
|
|
|
|
time_t getdate(const std::string & date, time_t * now = 0);
|
|
|
|
|
|
} // namespace curlpp
|
|
|
|
namespace cURLpp = curlpp;
|
|
|
|
|
|
#endif // #ifndef CURLPP_CURLPP_HPP
|