Gjsify LogoGjsify Logo

A #SoupMessage request or response body.

Note that while length always reflects the full length of the message body, data is normally %NULL, and will only be filled in after soup_message_body_flatten() is called. For client-side messages, this automatically happens for the response body after it has been fully read, unless you set the %SOUP_MESSAGE_OVERWRITE_CHUNKS flags. Likewise, for server-side messages, the request body is automatically filled in after being read.

As an added bonus, when data is filled in, it is always terminated with a '\0' byte (which is not reflected in length).

record

Hierarchy

  • MessageBody

Index

Constructors

Properties

data: string

the data

field
length: number

length of data

field
name: string

Methods

  • append(data: Uint8Array): void
  • Appends length bytes from data to body.

    This function is exactly equivalent to soup_message_body_append() with %SOUP_MEMORY_TAKE as second argument; it exists mainly for convenience and simplifying language bindings.

    Parameters

    • data: Uint8Array

      data to append

    Returns void

  • Appends the data from buffer to body. (#SoupMessageBody uses #SoupBuffers internally, so this is normally a constant-time operation that doesn't actually require copying the data in buffer.)

    Parameters

    Returns void

  • complete(): void
  • Tags body as being complete; Call this when using chunked encoding after you have appended the last chunk.

    Returns void

  • Fills in body's data field with a buffer containing all of the data in body (plus an additional '\0' byte not counted by body's length field).

    Returns Soup.Buffer

  • free(): void
  • Frees body. You will not normally need to use this, as #SoupMessage frees its associated message bodies automatically.

    Returns void

  • get_accumulate(): boolean
  • Gets a #SoupBuffer containing data from body starting at offset. The size of the returned chunk is unspecified. You can iterate through the entire body by first calling soup_message_body_get_chunk() with an offset of 0, and then on each successive call, increment the offset by the length of the previously-returned chunk.

    If offset is greater than or equal to the total length of body, then the return value depends on whether or not soup_message_body_complete() has been called or not; if it has, then soup_message_body_get_chunk() will return a 0-length chunk (indicating the end of body). If it has not, then soup_message_body_get_chunk() will return %NULL (indicating that body may still potentially have more data, but that data is not currently available).

    Parameters

    • offset: number

      an offset

    Returns Soup.Buffer

  • Handles the #SoupMessageBody part of receiving a chunk of data from the network. Normally this means appending chunk to body, exactly as with soup_message_body_append_buffer(), but if you have set body's accumulate flag to %FALSE, then that will not happen.

    This is a low-level method which you should not normally need to use.

    Parameters

    • chunk: Soup.Buffer

      a #SoupBuffer received from the network

    Returns void

  • set_accumulate(accumulate: boolean): void
  • Sets or clears the accumulate flag on body. (The default value is %TRUE.) If set to %FALSE, body's %data field will not be filled in after the body is fully sent/received, and the chunks that make up body may be discarded when they are no longer needed.

    In particular, if you set this flag to %FALSE on an "incoming" message body (that is, the #SoupMessage:response_body of a client-side message, or #SoupMessage:request_body of a server-side message), this will cause each chunk of the body to be discarded after its corresponding #SoupMessage::got_chunk signal is emitted. (This is equivalent to setting the deprecated %SOUP_MESSAGE_OVERWRITE_CHUNKS flag on the message.)

    If you set this flag to %FALSE on the #SoupMessage:response_body of a server-side message, it will cause each chunk of the body to be discarded after its corresponding #SoupMessage::wrote_chunk signal is emitted.

    If you set the flag to %FALSE on the #SoupMessage:request_body of a client-side message, it will block the accumulation of chunks into body's %data field, but it will not normally cause the chunks to be discarded after being written like in the server-side #SoupMessage:response_body case, because the request body needs to be kept around in case the request needs to be sent a second time due to redirection or authentication. However, if you set the %SOUP_MESSAGE_CAN_REBUILD flag on the message, then the chunks will be discarded, and you will be responsible for recreating the request body after the #SoupMessage::restarted signal is emitted.

    Parameters

    • accumulate: boolean

      whether or not to accumulate body chunks in body

    Returns void

  • truncate(): void
  • Handles the #SoupMessageBody part of writing a chunk of data to the network. Normally this is a no-op, but if you have set body's accumulate flag to %FALSE, then this will cause chunk to be discarded to free up memory.

    This is a low-level method which you should not need to use, and there are further restrictions on its proper use which are not documented here.

    Parameters

    • chunk: Soup.Buffer

      a #SoupBuffer returned from soup_message_body_get_chunk()

    Returns void

Legend

  • Module
  • Object literal
  • Variable
  • Function
  • Function with type parameter
  • Index signature
  • Type alias
  • Type alias with type parameter
  • Enumeration
  • Enumeration member
  • Property
  • Method
  • Interface
  • Interface with type parameter
  • Constructor
  • Property
  • Method
  • Index signature
  • Class
  • Class with type parameter
  • Constructor
  • Property
  • Method
  • Accessor
  • Index signature
  • Inherited constructor
  • Inherited property
  • Inherited method
  • Inherited accessor
  • Protected property
  • Protected method
  • Protected accessor
  • Private property
  • Private method
  • Private accessor
  • Static property
  • Static method