mirror of
https://github.com/curl/curl.git
synced 2026-07-25 05:27:15 +03:00
mime: new MIME API.
Available in HTTP, SMTP and IMAP. Deprecates the FORM API. See CURLOPT_MIMEPOST. Lib code and associated documentation.
This commit is contained in:
parent
5bae72734b
commit
ce0881edee
38 changed files with 2946 additions and 994 deletions
|
|
@ -1791,6 +1791,9 @@ typedef enum {
|
|||
/* Enable/disable SSH compression */
|
||||
CINIT(SSH_COMPRESSION, LONG, 268),
|
||||
|
||||
/* Post MIME data. */
|
||||
CINIT(MIMEPOST, OBJECTPOINT, 269),
|
||||
|
||||
CURLOPT_LASTENTRY /* the last unused */
|
||||
} CURLoption;
|
||||
|
||||
|
|
@ -1946,6 +1949,133 @@ typedef enum {
|
|||
CURL_EXTERN int (curl_strequal)(const char *s1, const char *s2);
|
||||
CURL_EXTERN int (curl_strnequal)(const char *s1, const char *s2, size_t n);
|
||||
|
||||
/* Mime/form handling support. */
|
||||
typedef struct Curl_mime curl_mime; /* Mime context. */
|
||||
typedef struct Curl_mimepart curl_mimepart; /* Mime part context. */
|
||||
|
||||
/*
|
||||
* NAME curl_mime_init()
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Create a mime context and return its handle. The easy parameter is the
|
||||
* target handle.
|
||||
*/
|
||||
CURL_EXTERN curl_mime *curl_mime_init(CURL *easy);
|
||||
|
||||
/*
|
||||
* NAME curl_mime_free()
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* release a mime handle and its substructures.
|
||||
*/
|
||||
CURL_EXTERN void curl_mime_free(curl_mime *mime);
|
||||
|
||||
/*
|
||||
* NAME curl_mime_addpart()
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Append a new empty part to the given mime context and return a handle to
|
||||
* the created part.
|
||||
*/
|
||||
CURL_EXTERN curl_mimepart *curl_mime_addpart(curl_mime *mime);
|
||||
|
||||
/*
|
||||
* NAME curl_mime_name()
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Set mime/form part name.
|
||||
*/
|
||||
CURL_EXTERN CURLcode curl_mime_name(curl_mimepart *part,
|
||||
const char *name, ssize_t namesize);
|
||||
|
||||
/*
|
||||
* NAME curl_mime_filename()
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Set mime part remote file name.
|
||||
*/
|
||||
CURL_EXTERN CURLcode curl_mime_filename(curl_mimepart *part,
|
||||
const char *filename);
|
||||
|
||||
/*
|
||||
* NAME curl_mime_type()
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Set mime part type.
|
||||
*/
|
||||
CURL_EXTERN CURLcode curl_mime_type(curl_mimepart *part, const char *mimetype);
|
||||
|
||||
/*
|
||||
* NAME curl_mime_encoder()
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Set mime data transfer encoder.
|
||||
*/
|
||||
CURL_EXTERN CURLcode curl_mime_encoder(struct Curl_mimepart *part,
|
||||
const char *encoding);
|
||||
|
||||
/*
|
||||
* NAME curl_mime_data()
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Set mime part data source from memory data,
|
||||
*/
|
||||
CURL_EXTERN CURLcode curl_mime_data(curl_mimepart *part,
|
||||
const char *data, ssize_t datasize);
|
||||
|
||||
/*
|
||||
* NAME curl_mime_filedata()
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Set mime part data source from named file.
|
||||
*/
|
||||
CURL_EXTERN CURLcode curl_mime_filedata(curl_mimepart *part,
|
||||
const char *filename);
|
||||
|
||||
/*
|
||||
* NAME curl_mime_data_cb()
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Set mime part data source from callback function.
|
||||
*/
|
||||
CURL_EXTERN CURLcode curl_mime_data_cb(curl_mimepart *part,
|
||||
curl_off_t datasize,
|
||||
curl_read_callback readfunc,
|
||||
curl_seek_callback seekfunc,
|
||||
curl_free_callback freefunc,
|
||||
void *arg);
|
||||
|
||||
/*
|
||||
* NAME curl_mime_subparts()
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Set mime part data source from subparts.
|
||||
*/
|
||||
CURL_EXTERN CURLcode curl_mime_subparts(curl_mimepart *part,
|
||||
curl_mime *subparts);
|
||||
/*
|
||||
* NAME curl_mime_headers()
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Set mime part headers.
|
||||
*/
|
||||
CURL_EXTERN CURLcode curl_mime_headers(curl_mimepart *part,
|
||||
struct curl_slist *headers,
|
||||
int take_ownership);
|
||||
|
||||
/* Old form API. */
|
||||
/* name is uppercase CURLFORM_<name> */
|
||||
#ifdef CFINIT
|
||||
#undef CFINIT
|
||||
|
|
|
|||
|
|
@ -96,6 +96,9 @@ __extension__ ({ \
|
|||
if((_curl_opt) == CURLOPT_HTTPPOST) \
|
||||
if(!_curl_is_arr((value), struct curl_httppost)) \
|
||||
_curl_easy_setopt_err_curl_httpost(); \
|
||||
if((_curl_opt) == CURLOPT_MIMEPOST) \
|
||||
if(!_curl_is_ptr((value), curl_mime)) \
|
||||
_curl_easy_setopt_err_curl_mimepost(); \
|
||||
if(_curl_is_slist_option(_curl_opt)) \
|
||||
if(!_curl_is_arr((value), struct curl_slist)) \
|
||||
_curl_easy_setopt_err_curl_slist(); \
|
||||
|
|
@ -200,6 +203,9 @@ _CURL_WARNING(_curl_easy_setopt_err_postfields,
|
|||
_CURL_WARNING(_curl_easy_setopt_err_curl_httpost,
|
||||
"curl_easy_setopt expects a 'struct curl_httppost *' "
|
||||
"argument for this option")
|
||||
_CURL_WARNING(_curl_easy_setopt_err_curl_mimepost,
|
||||
"curl_easy_setopt expects a 'curl_mime *' "
|
||||
"argument for this option")
|
||||
_CURL_WARNING(_curl_easy_setopt_err_curl_slist,
|
||||
"curl_easy_setopt expects a 'struct curl_slist *' argument for this option")
|
||||
_CURL_WARNING(_curl_easy_setopt_err_CURLSH,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue