SoupMultipartInputStream

SoupMultipartInputStream — Multipart input handling stream

Synopsis

#include <libsoup/soup.h>

struct              SoupMultipartInputStream;
SoupMultipartInputStream * soup_multipart_input_stream_new
                                                        (SoupMessage *msg,
                                                         GInputStream *base_stream);

SoupMessageHeaders * soup_multipart_input_stream_get_headers
                                                        (SoupMultipartInputStream *multipart);
GInputStream *      soup_multipart_input_stream_next_part
                                                        (SoupMultipartInputStream *multipart,
                                                         GCancellable *cancellable,
                                                         GError **error);
void                soup_multipart_input_stream_next_part_async
                                                        (SoupMultipartInputStream *multipart,
                                                         int io_priority,
                                                         GCancellable *cancellable,
                                                         GAsyncReadyCallback callback,
                                                         gpointer data);
GInputStream *      soup_multipart_input_stream_next_part_finish
                                                        (SoupMultipartInputStream *multipart,
                                                         GAsyncResult *result,
                                                         GError **error);

Object Hierarchy

  GObject
   +----GInputStream
         +----GFilterInputStream
               +----SoupMultipartInputStream

Implemented Interfaces

SoupMultipartInputStream implements GPollableInputStream.

Properties

  "message"                  SoupMessage*          : Read / Write / Construct Only

Description

This adds support for the multipart responses. For handling the multiple parts the user needs to wrap the GInputStream obtained by sending the request with a SoupMultipartInputStream and use soup_multipart_input_stream_next_part() before reading. Responses which are not wrapped will be treated like non-multipart responses.

Note that although SoupMultipartInputStream is a GInputStream, you should not read directly from it, and the results are undefined if you do.

Details

struct SoupMultipartInputStream

struct SoupMultipartInputStream;


soup_multipart_input_stream_new ()

SoupMultipartInputStream * soup_multipart_input_stream_new
                                                        (SoupMessage *msg,
                                                         GInputStream *base_stream);

Creates a new SoupMultipartInputStream that wraps the GInputStream obtained by sending the SoupRequest. Reads should not be done directly through this object, use the input streams returned by soup_multipart_input_stream_next_part() or its async counterpart instead.

msg :

the SoupMessage the response is related to.

base_stream :

the GInputStream returned by sending the request.

Returns :

a new SoupMultipartInputStream

Since 2.40


soup_multipart_input_stream_get_headers ()

SoupMessageHeaders * soup_multipart_input_stream_get_headers
                                                        (SoupMultipartInputStream *multipart);

Obtains the headers for the part currently being processed. Note that the SoupMessageHeaders that are returned are owned by the SoupMultipartInputStream and will be replaced when a call is made to soup_multipart_input_stream_next_part() or its async counterpart, so if keeping the headers is required, a copy must be made.

Note that if a part had no headers at all an empty SoupMessageHeaders will be returned.

multipart :

a SoupMultipartInputStream.

Returns :

a SoupMessageHeaders containing the headers for the part currently being processed or NULL if the headers failed to parse. [transfer none]

Since 2.40


soup_multipart_input_stream_next_part ()

GInputStream *      soup_multipart_input_stream_next_part
                                                        (SoupMultipartInputStream *multipart,
                                                         GCancellable *cancellable,
                                                         GError **error);

Obtains an input stream for the next part. When dealing with a multipart response the input stream needs to be wrapped in a SoupMultipartInputStream and this function or its async counterpart need to be called to obtain the first part for reading.

After calling this function, soup_multipart_input_stream_get_headers() can be used to obtain the headers for the first part. A read of 0 bytes indicates the end of the part; a new call to this function should be done at that point, to obtain the next part.

multipart :

the SoupMultipartInputStream

cancellable :

a GCancellable

error :

a GError

Returns :

a new GInputStream, or NULL if there are no more parts. [transfer full]

Since 2.40


soup_multipart_input_stream_next_part_async ()

void                soup_multipart_input_stream_next_part_async
                                                        (SoupMultipartInputStream *multipart,
                                                         int io_priority,
                                                         GCancellable *cancellable,
                                                         GAsyncReadyCallback callback,
                                                         gpointer data);

Obtains a GInputStream for the next request. See soup_multipart_input_stream_next_part() for details on the workflow.

multipart :

the SoupMultipartInputStream.

io_priority :

the I/O priority for the request.

cancellable :

a GCancellable.

callback :

callback to call when request is satisfied.

data :

data for callback

Since 2.40


soup_multipart_input_stream_next_part_finish ()

GInputStream *      soup_multipart_input_stream_next_part_finish
                                                        (SoupMultipartInputStream *multipart,
                                                         GAsyncResult *result,
                                                         GError **error);

Finishes an asynchronous request for the next part.

multipart :

a SoupMultipartInputStream.

result :

a GAsyncResult.

error :

a GError location to store any error, or NULL to ignore.

Returns :

a newly created GInputStream for reading the next part or NULL if there are no more parts. [transfer full]

Since 2.40

Property Details

The "message" property

  "message"                  SoupMessage*          : Read / Write / Construct Only

The SoupMessage.