Soup.MultipartInputStream

g GObject.GInterface GObject.GInterface Gio.PollableInputStream Gio.PollableInputStream GObject.GInterface->Gio.PollableInputStream GObject.Object GObject.Object Gio.InputStream Gio.InputStream GObject.Object->Gio.InputStream Gio.FilterInputStream Gio.FilterInputStream Soup.MultipartInputStream Soup.MultipartInputStream Gio.FilterInputStream->Soup.MultipartInputStream Gio.InputStream->Gio.FilterInputStream Gio.PollableInputStream->Soup.MultipartInputStream

Subclasses:

None

Methods

Inherited:

Gio.FilterInputStream (3), Gio.InputStream (19), GObject.Object (37), Gio.PollableInputStream (4)

Structs:

GObject.ObjectClass (5)

class

new (msg, base_stream)

get_headers ()

next_part (cancellable)

next_part_async (io_priority, cancellable, callback, *data)

next_part_finish (result)

Virtual Methods

Inherited:

Gio.InputStream (9), GObject.Object (7), Gio.PollableInputStream (4)

Properties

Inherited:

Gio.FilterInputStream (2)

Name

Type

Flags

Short Description

message

Soup.Message

r/w/co

The Soup.Message

Signals

Inherited:

GObject.Object (1)

Fields

Inherited:

GObject.Object (1)

Class Details

class Soup.MultipartInputStream(**kwargs)
Bases:

Gio.FilterInputStream, Gio.PollableInputStream

Abstract:

No

Structure:

Soup.MultipartInputStreamClass

Handles streams of multipart messages.

This adds support for the multipart responses. For handling the multiple parts the user needs to wrap the [class`Gio`.InputStream] obtained by sending the request with a [class`MultipartInputStream`] and use [method`MultipartInputStream`.next_part] before reading. Responses which are not wrapped will be treated like non-multipart responses.

Note that although Soup.MultipartInputStream is a [class`Gio`.InputStream], you should not read directly from it, and the results are undefined if you do.

classmethod new(msg, base_stream)
Parameters:
Returns:

a new Soup.MultipartInputStream

Return type:

Soup.MultipartInputStream

Creates a new Soup.MultipartInputStream that wraps the [class`Gio`.InputStream] obtained by sending the [class`Message`].

Reads should not be done directly through this object, use the input streams returned by [method`MultipartInputStream`.next_part] or its async counterpart instead.

get_headers()
Returns:

a Soup.MessageHeaders containing the headers for the part currently being processed or None if the headers failed to parse.

Return type:

Soup.MessageHeaders or None

Obtains the headers for the part currently being processed.

Note that the [struct`MessageHeaders`] that are returned are owned by the Soup.MultipartInputStream and will be replaced when a call is made to [method`MultipartInputStream`.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 [struct`MessageHeaders`] will be returned.

next_part(cancellable)
Parameters:

cancellable (Gio.Cancellable or None) – a Gio.Cancellable

Raises:

GLib.Error

Returns:

a new Gio.InputStream, or None if there are no more parts

Return type:

Gio.InputStream or None

Obtains an input stream for the next part.

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

After calling this function, [method`MultipartInputStream`.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.

next_part_async(io_priority, cancellable, callback, *data)
Parameters:

Obtains a [class`Gio`.InputStream] for the next request.

See [method`MultipartInputStream`.next_part] for details on the workflow.

next_part_finish(result)
Parameters:

result (Gio.AsyncResult) – a Gio.AsyncResult.

Raises:

GLib.Error

Returns:

a newly created [class`Gio`.InputStream] for reading the next part or None if there are no more parts.

Return type:

Gio.InputStream or None

Finishes an asynchronous request for the next part.

Property Details

Soup.MultipartInputStream.props.message
Name:

message

Type:

Soup.Message

Default Value:

None

Flags:

READABLE, WRITABLE, CONSTRUCT_ONLY

The [class`Message`].