SoupMultipart

SoupMultipart — multipart HTTP message bodies

Synopsis

typedef             SoupMultipart;
SoupMultipart*      soup_multipart_new                  (const char *mime_type);
SoupMultipart*      soup_multipart_new_from_message     (SoupMessageHeaders *headers,
                                                         SoupMessageBody *body);
void                soup_multipart_free                 (SoupMultipart *multipart);

int                 soup_multipart_get_length           (SoupMultipart *multipart);
gboolean            soup_multipart_get_part             (SoupMultipart *multipart,
                                                         int part,
                                                         SoupMessageHeaders **headers,
                                                         SoupBuffer **body);
void                soup_multipart_append_part          (SoupMultipart *multipart,
                                                         SoupMessageHeaders *headers,
                                                         SoupBuffer *body);
void                soup_multipart_append_form_string   (SoupMultipart *multipart,
                                                         const char *control_name,
                                                         const char *data);
void                soup_multipart_append_form_file     (SoupMultipart *multipart,
                                                         const char *control_name,
                                                         const char *filename,
                                                         const char *content_type,
                                                         SoupBuffer *body);
void                soup_multipart_to_message           (SoupMultipart *multipart,
                                                         SoupMessageHeaders *dest_headers,
                                                         SoupMessageBody *dest_body);

Description

Details

SoupMultipart

typedef struct SoupMultipart SoupMultipart;

Represents a multipart HTTP message body, parsed according to the syntax of RFC 2046. Of particular interest to HTTP are multipart/byte-ranges and multipart/form-data.

Although the headers of a SoupMultipart body part will contain the full headers from that body part, libsoup does not interpret them according to MIME rules. For example, each body part is assumed to have "binary" Content-Transfer-Encoding, even if its headers explicitly state otherwise. In other words, don't try to use SoupMultipart for handling real MIME multiparts.

Since 2.26


soup_multipart_new ()

SoupMultipart*      soup_multipart_new                  (const char *mime_type);

Creates a new empty SoupMultipart with a randomly-generated boundary string. Note that mime_type must be the full MIME type, including "multipart/".

mime_type : the MIME type of the multipart to create.
Returns : a new empty SoupMultipart of the given mime_type

Since 2.26


soup_multipart_new_from_message ()

SoupMultipart*      soup_multipart_new_from_message     (SoupMessageHeaders *headers,
                                                         SoupMessageBody *body);

Parses headers and body to form a new SoupMultipart

headers : the headers of the HTTP message to parse
body : the body of the HTTP message to parse
Returns : a new SoupMultipart (or NULL if the message couldn't be parsed or wasn't multipart).

Since 2.26


soup_multipart_free ()

void                soup_multipart_free                 (SoupMultipart *multipart);

Frees multipart

multipart : a SoupMultipart

Since 2.26


soup_multipart_get_length ()

int                 soup_multipart_get_length           (SoupMultipart *multipart);

Gets the number of body parts in multipart

multipart : a SoupMultipart
Returns : the number of body parts in multipart

Since 2.26


soup_multipart_get_part ()

gboolean            soup_multipart_get_part             (SoupMultipart *multipart,
                                                         int part,
                                                         SoupMessageHeaders **headers,
                                                         SoupBuffer **body);

Gets the indicated body part from multipart.

multipart : a SoupMultipart
part : the part number to get (counting from 0)
headers : return location for the MIME part headers
body : return location for the MIME part body
Returns : TRUE on success, FALSE if part is out of range (in which case headers and body won't be set)

Since 2.26


soup_multipart_append_part ()

void                soup_multipart_append_part          (SoupMultipart *multipart,
                                                         SoupMessageHeaders *headers,
                                                         SoupBuffer *body);

Adds a new MIME part to multipart with the given headers and body. (The multipart will make its own copies of headers and body, so you should free your copies if you are not using them for anything else.)

multipart : a SoupMultipart
headers : the MIME part headers
body : the MIME part body

Since 2.26


soup_multipart_append_form_string ()

void                soup_multipart_append_form_string   (SoupMultipart *multipart,
                                                         const char *control_name,
                                                         const char *data);

Adds a new MIME part containing data to multipart, using "Content-Disposition: form-data", as per the HTML forms specification. See soup_form_request_new_from_multipart() for more details.

multipart : a multipart (presumably of type "multipart/form-data")
control_name : the name of the control associated with data
data : the body data

Since 2.26


soup_multipart_append_form_file ()

void                soup_multipart_append_form_file     (SoupMultipart *multipart,
                                                         const char *control_name,
                                                         const char *filename,
                                                         const char *content_type,
                                                         SoupBuffer *body);

Adds a new MIME part containing body to multipart, using "Content-Disposition: form-data", as per the HTML forms specification. See soup_form_request_new_from_multipart() for more details.

multipart : a multipart (presumably of type "multipart/form-data")
control_name : the name of the control associated with this file
filename : the name of the file, or NULL if not known
content_type : the MIME type of the file, or NULL if not known
body : the file data

Since 2.26


soup_multipart_to_message ()

void                soup_multipart_to_message           (SoupMultipart *multipart,
                                                         SoupMessageHeaders *dest_headers,
                                                         SoupMessageBody *dest_body);

Serializes multipart to dest_headers and dest_body.

multipart : a SoupMultipart
dest_headers : the headers of the HTTP message to serialize multipart to
dest_body : the body of the HTTP message to serialize multipart to

Since 2.26

See Also

SoupMessageBody, SoupMessageHeaders