<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <include name="Soup" version="2.4"/>
  <package name="rest-0.7"/>
  <c:include name="rest/oauth-proxy-call.h"/>
  <c:include name="rest/oauth-proxy.h"/>
  <c:include name="rest/oauth2-proxy-call.h"/>
  <c:include name="rest/oauth2-proxy.h"/>
  <c:include name="rest/rest-enum-types.h"/>
  <c:include name="rest/rest-param.h"/>
  <c:include name="rest/rest-params.h"/>
  <c:include name="rest/rest-proxy-auth.h"/>
  <c:include name="rest/rest-proxy-call.h"/>
  <c:include name="rest/rest-proxy.h"/>
  <c:include name="rest/rest-xml-node.h"/>
  <c:include name="rest/rest-xml-parser.h"/>
  <namespace name="Rest"
             version="0.7"
             shared-library="librest-0.7.so.0.2"
             c:identifier-prefixes="Rest"
             c:symbol-prefixes="rest">
    <enumeration name="MemoryUse" c:type="RestMemoryUse">
      <member name="static" value="0" c:identifier="REST_MEMORY_STATIC">
        <doc xml:space="preserve">the memory block can be assumed to always exist for the
lifetime of the parameter, #RestParam will use it directly.</doc>
      </member>
      <member name="take" value="1" c:identifier="REST_MEMORY_TAKE">
        <doc xml:space="preserve">#RestParam will take ownership of the memory block, and
g_free() it when it isn't used.</doc>
      </member>
      <member name="copy" value="2" c:identifier="REST_MEMORY_COPY">
        <doc xml:space="preserve">#RestParam will make a copy of the memory block.</doc>
      </member>
    </enumeration>
    <class name="OAuth2Proxy"
           c:symbol-prefix="oauth2_proxy"
           c:type="OAuth2Proxy"
           parent="Proxy"
           glib:type-name="OAuth2Proxy"
           glib:get-type="oauth2_proxy_get_type"
           glib:type-struct="OAuth2ProxyClass">
      <doc xml:space="preserve">#OAuth2Proxy has no publicly available members.</doc>
      <constructor name="new" c:identifier="oauth2_proxy_new">
        <doc xml:space="preserve">Create a new #OAuth2Proxy for the specified endpoint @url_format, using the
specified API key and secret.

This proxy won't have the Token set so will be unauthorised.  If the token is
unknown then the following steps should be taken to acquire an access token:
- Get the authentication url with oauth2_proxy_build_login_url()
- Display this url in an embedded browser widget
- wait for the browser widget to be redirected to the specified redirect_uri
- extract the token from the fragment of the redirected uri (using
convenience function oauth2_proxy_extract_access_token())
- set the token with oauth2_proxy_set_access_token()

Set @binding_required to %TRUE if the URL contains string formatting
operations (for example "http://foo.com/%&lt;!-- --&gt;s".  These must be expanded
using rest_proxy_bind() before invoking the proxy.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new #OAuth2Proxy.</doc>
          <type name="Proxy" c:type="RestProxy*"/>
        </return-value>
        <parameters>
          <parameter name="client_id" transfer-ownership="none">
            <doc xml:space="preserve">the client (application) id</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="auth_endpoint" transfer-ownership="none">
            <doc xml:space="preserve">the authentication endpoint URL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="url_format" transfer-ownership="none">
            <doc xml:space="preserve">the endpoint URL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="binding_required" transfer-ownership="none">
            <doc xml:space="preserve">whether the URL needs to be bound before calling</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_token"
                   c:identifier="oauth2_proxy_new_with_token">
        <doc xml:space="preserve">Create a new #OAuth2Proxy for the specified endpoint @url_format, using the
specified client id

@access_token is used for the Access Token, so if they are still valid then
this proxy is authorised.

Set @binding_required to %TRUE if the URL contains string formatting
operations (for example "http://foo.com/%&lt;!-- --&gt;s".  These must be expanded
using rest_proxy_bind() before invoking the proxy.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new #OAuth2Proxy.</doc>
          <type name="Proxy" c:type="RestProxy*"/>
        </return-value>
        <parameters>
          <parameter name="client_id" transfer-ownership="none">
            <doc xml:space="preserve">the client (application) id</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="access_token" transfer-ownership="none">
            <doc xml:space="preserve">the Access Token</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="auth_endpoint" transfer-ownership="none">
            <doc xml:space="preserve">the authentication endpoint URL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="url_format" transfer-ownership="none">
            <doc xml:space="preserve">the endpoint URL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="binding_required" transfer-ownership="none">
            <doc xml:space="preserve">whether the URL needs to be bound before calling</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="extract_access_token"
                c:identifier="oauth2_proxy_extract_access_token">
        <doc xml:space="preserve">A utility function to extract the access token from the url that results from
the redirection after the user authenticates</doc>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">the url which contains an access token in its fragment</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <method name="build_login_url"
              c:identifier="oauth2_proxy_build_login_url">
        <doc xml:space="preserve">Builds a url at which the user can log in to the specified OAuth2-based web
service.  See the documentation for oauth2_proxy_build_login_url_full() for
detailed information.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated uri string</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an OAuth2Proxy object</doc>
            <type name="OAuth2Proxy" c:type="OAuth2Proxy*"/>
          </instance-parameter>
          <parameter name="redirect_uri" transfer-ownership="none">
            <doc xml:space="preserve">the uri to redirect to after the user authenticates</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="build_login_url_full"
              c:identifier="oauth2_proxy_build_login_url_full">
        <doc xml:space="preserve">Builds a url at which the user can log in to the specified OAuth2-based web
service.  In general, this url should be displayed in an embedded browser
widget, and you should then intercept the browser's redirect to @redirect_uri
and extract the access token from the url fragment. After the access token
has been retrieved, call oauth2_proxy_set_access_token().  This must be done
before making any API calls to the service.

See the oauth2 spec for more details about the "user-agent" authentication
flow.

The @extra_params and @redirect_uri should not be uri-encoded, that will be
done automatically</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated uri string</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">a OAuth2Proxy object</doc>
            <type name="OAuth2Proxy" c:type="OAuth2Proxy*"/>
          </instance-parameter>
          <parameter name="redirect_uri" transfer-ownership="none">
            <doc xml:space="preserve">the uri to redirect to after the user authenticates</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="extra_params" transfer-ownership="none">
            <doc xml:space="preserve">any extra parameters to add to the login url (e.g. facebook
uses 'scope=foo,bar' to request extended permissions).</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="gpointer" c:type="gpointer"/>
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="get_access_token"
              c:identifier="oauth2_proxy_get_access_token">
        <doc xml:space="preserve">Get the current request or access token.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the token, or %NULL if there is no token yet.  This string is owned
by #OAuth2Proxy and should not be freed.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuth2Proxy</doc>
            <type name="OAuth2Proxy" c:type="OAuth2Proxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_access_token"
              c:identifier="oauth2_proxy_set_access_token">
        <doc xml:space="preserve">Set the access token.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuth2Proxy</doc>
            <type name="OAuth2Proxy" c:type="OAuth2Proxy*"/>
          </instance-parameter>
          <parameter name="access_token" transfer-ownership="none">
            <doc xml:space="preserve">the access token</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <property name="access-token" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="auth-endpoint"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="client-id"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="Proxy" c:type="RestProxy"/>
      </field>
      <field name="priv">
        <type name="OAuth2ProxyPrivate" c:type="OAuth2ProxyPrivate*"/>
      </field>
    </class>
    <class name="OAuth2ProxyCall"
           c:symbol-prefix="oauth2_proxy_call"
           c:type="OAuth2ProxyCall"
           parent="ProxyCall"
           glib:type-name="OAuth2ProxyCall"
           glib:get-type="oauth2_proxy_call_get_type"
           glib:type-struct="OAuth2ProxyCallClass">
      <doc xml:space="preserve">#OAuth2ProxyCall has no publicly available members.</doc>
      <field name="parent">
        <type name="ProxyCall" c:type="RestProxyCall"/>
      </field>
    </class>
    <record name="OAuth2ProxyCallClass"
            c:type="OAuth2ProxyCallClass"
            glib:is-gtype-struct-for="OAuth2ProxyCall">
      <field name="parent_class">
        <type name="ProxyCallClass" c:type="RestProxyCallClass"/>
      </field>
      <field name="_padding_dummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="OAuth2ProxyClass"
            c:type="OAuth2ProxyClass"
            glib:is-gtype-struct-for="OAuth2Proxy">
      <field name="parent_class">
        <type name="ProxyClass" c:type="RestProxyClass"/>
      </field>
      <field name="_padding_dummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="OAuth2ProxyPrivate"
            c:type="OAuth2ProxyPrivate"
            disguised="1">
    </record>
    <class name="OAuthProxy"
           c:symbol-prefix="oauth_proxy"
           c:type="OAuthProxy"
           parent="Proxy"
           glib:type-name="OAuthProxy"
           glib:get-type="oauth_proxy_get_type"
           glib:type-struct="OAuthProxyClass">
      <doc xml:space="preserve">#OAuthProxy has no publicly available members.</doc>
      <constructor name="new" c:identifier="oauth_proxy_new">
        <doc xml:space="preserve">Create a new #OAuthProxy for the specified endpoint @url_format, using the
specified API key and secret.

This proxy won't have the Token or Token Secret set so as such will be
unauthorised.  If the tokens are unknown then oauth_proxy_request_token() and
oauth_proxy_access_token() should be called to do the OAuth authorisation, or
the tokens should be set using oauth_proxy_set_token() and
oauth_proxy_set_token_secret().

Set @binding_required to %TRUE if the URL contains string formatting
operations (for example "http://foo.com/%&lt;!-- --&gt;s".  These must be expanded
using rest_proxy_bind() before invoking the proxy.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new #OAuthProxy.</doc>
          <type name="Proxy" c:type="RestProxy*"/>
        </return-value>
        <parameters>
          <parameter name="consumer_key" transfer-ownership="none">
            <doc xml:space="preserve">the Consumer Key</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="consumer_secret" transfer-ownership="none">
            <doc xml:space="preserve">the Consumer Secret</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="url_format" transfer-ownership="none">
            <doc xml:space="preserve">the endpoint URL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="binding_required" transfer-ownership="none">
            <doc xml:space="preserve">whether the URL needs to be bound before calling</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_token"
                   c:identifier="oauth_proxy_new_with_token">
        <doc xml:space="preserve">Create a new #OAuthProxy for the specified endpoint @url_format, using the
specified API key and secret.

@token and @token_secret are used for the Access Token and Token Secret, so
if they are still valid then this proxy is authorised.

Set @binding_required to %TRUE if the URL contains string formatting
operations (for example "http://foo.com/%&lt;!-- --&gt;s".  These must be expanded
using rest_proxy_bind() before invoking the proxy.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new #OAuthProxy.</doc>
          <type name="Proxy" c:type="RestProxy*"/>
        </return-value>
        <parameters>
          <parameter name="consumer_key" transfer-ownership="none">
            <doc xml:space="preserve">the Consumer Key</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="consumer_secret" transfer-ownership="none">
            <doc xml:space="preserve">the Consumer Secret</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="token" transfer-ownership="none">
            <doc xml:space="preserve">the Access Token</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="token_secret" transfer-ownership="none">
            <doc xml:space="preserve">the Token Secret</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="url_format" transfer-ownership="none">
            <doc xml:space="preserve">the endpoint URL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="binding_required" transfer-ownership="none">
            <doc xml:space="preserve">whether the URL needs to be bound before calling</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="access_token"
              c:identifier="oauth_proxy_access_token"
              throws="1">
        <doc xml:space="preserve">Perform the Access Token phase of OAuth, invoking @function (defaulting to
"access_token" if @function is NULL).

@verifier is only used if you are using OAuth 1.0a.  This is either the
"oauth_verifier" parameter that was passed to your callback URI, or a string
that the user enters in some other manner (for example in a popup dialog) if
"oob" was passed to oauth_proxy_request_token().  For OAuth 1.0, pass %NULL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, or %FALSE on failure. On failure @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
          <parameter name="function" transfer-ownership="none">
            <doc xml:space="preserve">the function name to invoke</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="verifier" transfer-ownership="none">
            <doc xml:space="preserve">the verifier</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="access_token_async"
              c:identifier="oauth_proxy_access_token_async"
              throws="1">
        <doc xml:space="preserve">Perform the Access Token phase of OAuth, invoking @function (defaulting to
"access_token" if @function is NULL).

@verifier is only used if you are using OAuth 1.0a.  This is either the
"oauth_verifier" parameter that was passed to your callback URI, or a string
that the user enters in some other manner (for example in a popup dialog) if
"oob" was passed to oauth_proxy_request_token().  For OAuth 1.0, pass %NULL.

This method will return once the method has been queued, @callback will be
invoked when it has completed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the method was successfully queued, or %FALSE on
failure. On failure @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
          <parameter name="function" transfer-ownership="none">
            <doc xml:space="preserve">the function name to invoke</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="verifier" transfer-ownership="none">
            <doc xml:space="preserve">the verifier</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve">a #OAuthProxyAuthCallback to invoke on completion</doc>
            <type name="OAuthProxyAuthCallback"
                  c:type="OAuthProxyAuthCallback"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none">
            <doc xml:space="preserve">#GObject to weakly reference and tie the lifecycle of the method call too</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="auth_step" c:identifier="oauth_proxy_auth_step" throws="1">
        <doc xml:space="preserve">Perform an OAuth authorisation step.  This calls @function and then updates
the token and token secret in the proxy.

@proxy must not require binding, the function will be invoked using
rest_proxy_call_set_function().</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
          <parameter name="function" transfer-ownership="none">
            <doc xml:space="preserve">the function to invoke on the proxy</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="auth_step_async"
              c:identifier="oauth_proxy_auth_step_async"
              throws="1">
        <doc xml:space="preserve">Perform an OAuth authorisation step.  This calls @function and then updates
the token and token secret in the proxy.

@proxy must not require binding, the function will be invoked using
rest_proxy_call_set_function().</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
          <parameter name="function" transfer-ownership="none">
            <doc xml:space="preserve">the function to invoke on the proxy</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">the callback to invoke when authorisation is complete</doc>
            <type name="OAuthProxyAuthCallback"
                  c:type="OAuthProxyAuthCallback"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none">
            <doc xml:space="preserve">the #GObject to weakly reference and tie the lifecycle too</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_signature_host"
              c:identifier="oauth_proxy_get_signature_host">
        <doc xml:space="preserve">Get the signature hostname used when creating a signature base string.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the signature hostname, or %NULL if there is none set.
 This string is owned by #OAuthProxy and should not be freed.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_token" c:identifier="oauth_proxy_get_token">
        <doc xml:space="preserve">Get the current request or access token.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the token, or %NULL if there is no token yet.  This string is owned
by #OAuthProxy and should not be freed.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_token_secret"
              c:identifier="oauth_proxy_get_token_secret">
        <doc xml:space="preserve">Get the current request or access token secret.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the token secret, or %NULL if there is no token secret yet.  This
string is owned by #OAuthProxy and should not be freed.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_oauth10a" c:identifier="oauth_proxy_is_oauth10a">
        <doc xml:space="preserve">Determines if the server supports OAuth 1.0a with this proxy. This is only
valid after oauth_proxy_request_token() or oauth_proxy_request_token_async()
has been called.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the server supports OAuth 1.0a, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">a valid #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="new_echo_proxy" c:identifier="oauth_proxy_new_echo_proxy">
        <doc xml:space="preserve">Create a new &lt;ulink
url="http://www.scribd.com/doc/26707268/OAuth-Echo-Identity-Veri%EF%AC%81cation-Delegation-Draft"&gt;OAuth
Echo&lt;/ulink&gt; proxy.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new OAuth Echo proxy</doc>
          <type name="Proxy" c:type="RestProxy*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
          <parameter name="service_url" transfer-ownership="none">
            <doc xml:space="preserve">the service URL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="url_format" transfer-ownership="none">
            <doc xml:space="preserve">the URL format</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="binding_required" transfer-ownership="none">
            <doc xml:space="preserve">whether a binding is required</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_token"
              c:identifier="oauth_proxy_request_token"
              throws="1">
        <doc xml:space="preserve">Perform the Request Token phase of OAuth, invoking @function (defaulting to
"request_token" if @function is NULL).

The value of @callback depends on whether you wish to use OAuth 1.0 or 1.0a.
If you wish to use 1.0 then callback must be NULL.  To use 1.0a then
@callback should either be your callback URI, or "oob" (out-of-band).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, or %FALSE on failure. On failure @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
          <parameter name="function" transfer-ownership="none">
            <doc xml:space="preserve">the function name to invoke</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="callback_uri" transfer-ownership="none">
            <doc xml:space="preserve">the callback URI</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_token_async"
              c:identifier="oauth_proxy_request_token_async"
              throws="1">
        <doc xml:space="preserve">Perform the Request Token phase of OAuth, invoking @function (defaulting to
"request_token" if @function is NULL).

The value of @callback depends on whether you wish to use OAuth 1.0 or 1.0a.
If you wish to use 1.0 then callback must be NULL.  To use 1.0a then
@callback should either be your callback URI, or "oob" (out-of-band).

This method will return once the method has been queued, @callback will be
invoked when it has completed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the method was successfully queued, or %FALSE on
failure. On failure @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
          <parameter name="function" transfer-ownership="none">
            <doc xml:space="preserve">the function name to invoke</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="callback_uri" transfer-ownership="none">
            <doc xml:space="preserve">the callback URI</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve">a #OAuthProxyAuthCallback to invoke on completion</doc>
            <type name="OAuthProxyAuthCallback"
                  c:type="OAuthProxyAuthCallback"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none">
            <doc xml:space="preserve">#GObject to weakly reference and tie the lifecycle of the method call too</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_signature_host"
              c:identifier="oauth_proxy_set_signature_host">
        <doc xml:space="preserve">Set the signature hostname used when creating a signature base string.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
          <parameter name="signature_host" transfer-ownership="none">
            <doc xml:space="preserve">the signature host</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_token" c:identifier="oauth_proxy_set_token">
        <doc xml:space="preserve">Set the access token.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
          <parameter name="token" transfer-ownership="none">
            <doc xml:space="preserve">the access token</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_token_secret"
              c:identifier="oauth_proxy_set_token_secret">
        <doc xml:space="preserve">Set the access token secret.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">an #OAuthProxy</doc>
            <type name="OAuthProxy" c:type="OAuthProxy*"/>
          </instance-parameter>
          <parameter name="token_secret" transfer-ownership="none">
            <doc xml:space="preserve">the access token secret</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <property name="consumer-key"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="consumer-secret"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="signature-host" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="signature-method" writable="1" transfer-ownership="none">
        <type name="OAuthSignatureMethod"/>
      </property>
      <property name="token" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="token-secret" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="Proxy" c:type="RestProxy"/>
      </field>
    </class>
    <callback name="OAuthProxyAuthCallback">
      <doc xml:space="preserve">Callback from oauth_proxy_request_token_async() and
oauth_proxy_access_token_async().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="proxy" transfer-ownership="none">
          <doc xml:space="preserve">the #OAuthProxy</doc>
          <type name="OAuthProxy" c:type="OAuthProxy*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <doc xml:space="preserve">a #GError if the authentication failed, otherwise %NULL</doc>
          <type name="GLib.Error" c:type="const GError*"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <doc xml:space="preserve">the weak object passed to the caller</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="userdata" transfer-ownership="none">
          <doc xml:space="preserve">the user data passed to the caller</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="OAuthProxyCall"
           c:symbol-prefix="oauth_proxy_call"
           c:type="OAuthProxyCall"
           parent="ProxyCall"
           glib:type-name="OAuthProxyCall"
           glib:get-type="oauth_proxy_call_get_type"
           glib:type-struct="OAuthProxyCallClass">
      <doc xml:space="preserve">#OAuthProxyCall has no publicly available members.</doc>
      <method name="parse_token_reponse"
              c:identifier="oauth_proxy_call_parse_token_reponse">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <type name="OAuthProxyCall" c:type="OAuthProxyCall*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="parse_token_response"
              c:identifier="oauth_proxy_call_parse_token_response">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <type name="OAuthProxyCall" c:type="OAuthProxyCall*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="ProxyCall" c:type="RestProxyCall"/>
      </field>
    </class>
    <record name="OAuthProxyCallClass"
            c:type="OAuthProxyCallClass"
            glib:is-gtype-struct-for="OAuthProxyCall">
      <field name="parent_class">
        <type name="ProxyCallClass" c:type="RestProxyCallClass"/>
      </field>
      <field name="_padding_dummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="OAuthProxyClass"
            c:type="OAuthProxyClass"
            glib:is-gtype-struct-for="OAuthProxy">
      <field name="parent_class">
        <type name="ProxyClass" c:type="RestProxyClass"/>
      </field>
      <field name="_padding_dummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="OAuthSignatureMethod"
                 glib:type-name="OAuthSignatureMethod"
                 glib:get-type="oauth_signature_method_get_type"
                 c:type="OAuthSignatureMethod">
      <doc xml:space="preserve">The signature method to use when signing method calls.  @PLAINTEXT is only
recommended for testing, in general @HMAC_SHA1 is well supported and more
secure.</doc>
      <member name="plaintext"
              value="0"
              c:identifier="PLAINTEXT"
              glib:nick="plaintext">
        <doc xml:space="preserve">plain text signatures (not recommended)</doc>
      </member>
      <member name="hmac_sha1"
              value="1"
              c:identifier="HMAC_SHA1"
              glib:nick="hmac-sha1">
        <doc xml:space="preserve">HMAC-SHA1 signatures (recommended)</doc>
      </member>
    </enumeration>
    <record name="Param"
            c:type="RestParam"
            glib:type-name="RestParam"
            glib:get-type="rest_param_get_type"
            c:symbol-prefix="param">
      <constructor name="new_full" c:identifier="rest_param_new_full">
        <doc xml:space="preserve">Create a new #RestParam called @name with @length bytes of @data as the
value.  @content_type is the type of the data as a MIME type, for example
"text/plain" for simple string parameters.

If the parameter is a file upload it can be passed as @filename.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #RestParam.</doc>
          <type name="Param" c:type="RestParam*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">the parameter name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="use" transfer-ownership="none">
            <doc xml:space="preserve">the #RestMemoryUse describing how the memory can be used</doc>
            <type name="MemoryUse" c:type="RestMemoryUse"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to
  the start of the data</doc>
            <array length="3" zero-terminated="0" c:type="gconstpointer">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve">the length of the data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="content_type" transfer-ownership="none">
            <doc xml:space="preserve">the content type of the data</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve">the original filename, or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_string" c:identifier="rest_param_new_string">
        <doc xml:space="preserve">A convience constructor to create a #RestParam from a given UTF-8 string.
The resulting #RestParam will have a content type of "text/plain".</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #RestParam.</doc>
          <type name="Param" c:type="RestParam*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">the parameter name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="use" transfer-ownership="none">
            <doc xml:space="preserve">the #RestMemoryUse describing how the memory can be used</doc>
            <type name="MemoryUse" c:type="RestMemoryUse"/>
          </parameter>
          <parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">the parameter value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_owner"
                   c:identifier="rest_param_new_with_owner">
        <doc xml:space="preserve">Create a new #RestParam called @name with @length bytes of @data as the
value.  @content_type is the type of the data as a MIME type, for example
"text/plain" for simple string parameters.

If the parameter is a file upload it can be passed as @filename.

When the #RestParam is freed, it will call @owner_dnotify, passing @owner to
it. This allows you to do something like this:

|[
GMappedFile *map = g_mapped_file_new (filename, FALSE, &amp;error);
RestParam *param = rest_param_new_with_owner ("media",
                                              g_mapped_file_get_contents (map),
                                              g_mapped_file_get_length (map),
                                              "image/jpeg",
                                              filename,
                                              map,
                                              (GDestroyNotify)g_mapped_file_unref);
]|</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #RestParam.</doc>
          <type name="Param" c:type="RestParam*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">the parameter name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">a pointer to
  the start of the data</doc>
            <array length="2" zero-terminated="0" c:type="gconstpointer">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve">the length of the data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="content_type" transfer-ownership="none">
            <doc xml:space="preserve">the content type of the data</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="filename"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the original filename, or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="owner" transfer-ownership="full">
            <doc xml:space="preserve">pointer to an object that owns @data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="owner_dnotify"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve">a function to free/unref @owner when
  the buffer is freed</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_content" c:identifier="rest_param_get_content">
        <doc xml:space="preserve">Get the content of @param.  The content should be treated as read-only and
not modified in any way.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the content.</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParam</doc>
            <type name="Param" c:type="RestParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_content_length"
              c:identifier="rest_param_get_content_length">
        <doc xml:space="preserve">Get the length of the content of @param.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the length of the content</doc>
          <type name="gsize" c:type="gsize"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParam</doc>
            <type name="Param" c:type="RestParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_content_type"
              c:identifier="rest_param_get_content_type">
        <doc xml:space="preserve">Get the MIME type of the parameter.  For example, basic strings have the MIME
type "text/plain".</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the MIME type</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParam</doc>
            <type name="Param" c:type="RestParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_file_name" c:identifier="rest_param_get_file_name">
        <doc xml:space="preserve">Get the original file name of the parameter, if one is available.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the filename if          set, or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParam</doc>
            <type name="Param" c:type="RestParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="rest_param_get_name">
        <doc xml:space="preserve">Get the name of the parameter.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parameter name.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParam</doc>
            <type name="Param" c:type="RestParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_string" c:identifier="rest_param_is_string">
        <doc xml:space="preserve">Determine if the parameter is a string value, i.e. the content type is "text/plain".</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the parameter is a string, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParam</doc>
            <type name="Param" c:type="RestParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="rest_param_ref">
        <doc xml:space="preserve">Increase the reference count on @param.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the #RestParam</doc>
          <type name="Param" c:type="RestParam*"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParam</doc>
            <type name="Param" c:type="RestParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="rest_param_unref">
        <doc xml:space="preserve">Decrease the reference count on @param, destroying it if the reference count
reaches 0.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParam</doc>
            <type name="Param" c:type="RestParam*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="Params" c:type="RestParams" disguised="1">
      <method name="add" c:identifier="rest_params_add">
        <doc xml:space="preserve">Add @param to @params.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParams</doc>
            <type name="Params" c:type="RestParams*"/>
          </instance-parameter>
          <parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParam</doc>
            <type name="Param" c:type="RestParam*"/>
          </parameter>
        </parameters>
      </method>
      <method name="are_strings" c:identifier="rest_params_are_strings">
        <doc xml:space="preserve">Checks if the parameters are all simple strings (have a content type of
"text/plain").</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if all of the parameters are simple strings, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParams</doc>
            <type name="Params" c:type="RestParams*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="as_string_hash_table"
              c:identifier="rest_params_as_string_hash_table">
        <doc xml:space="preserve">Create a new #GHashTable which contains the name and value of all string
(content type of text/plain) parameters.

The values are owned by the #RestParams, so don't destroy the #RestParams
before the hash table.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">a new #GHashTable.</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="Param"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParams</doc>
            <type name="Params" c:type="RestParams*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="rest_params_free">
        <doc xml:space="preserve">Destroy the #RestParams and the #RestParam objects that it contains.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParams</doc>
            <type name="Params" c:type="RestParams*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get" c:identifier="rest_params_get">
        <doc xml:space="preserve">Return the #RestParam called @name, or %NULL if it doesn't exist.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #RestParam or %NULL if the name doesn't exist</doc>
          <type name="Param" c:type="RestParam*"/>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParams</doc>
            <type name="Params" c:type="RestParams*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">a parameter name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="rest_params_remove">
        <doc xml:space="preserve">Remove the #RestParam called @name.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParams</doc>
            <type name="Params" c:type="RestParams*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">a parameter name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <function name="new" c:identifier="rest_params_new" introspectable="0">
        <doc xml:space="preserve">Create a new #RestParams.</doc>
        <return-value>
          <doc xml:space="preserve">A empty #RestParams.</doc>
          <type name="Params" c:type="RestParams*"/>
        </return-value>
      </function>
    </record>
    <record name="ParamsIter" c:type="RestParamsIter" disguised="1">
      <method name="init" c:identifier="rest_params_iter_init">
        <doc xml:space="preserve">Initialize a parameter iterator over @params. Modifying @params after calling
this function invalidates the returned iterator.
|[
RestParamsIter iter;
const char *name;
RestParam *param;

rest_params_iter_init (&amp;iter, params);
while (rest_params_iter_next (&amp;iter, &amp;name, &amp;param)) {
  /&amp;ast; do something with name and param &amp;ast;/
}
]|</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">an uninitialized #RestParamsIter</doc>
            <type name="ParamsIter" c:type="RestParamsIter*"/>
          </instance-parameter>
          <parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">a valid #RestParams</doc>
            <type name="Params" c:type="RestParams*"/>
          </parameter>
        </parameters>
      </method>
      <method name="next" c:identifier="rest_params_iter_next">
        <doc xml:space="preserve">Advances @iter and retrieves the name and/or parameter that are now pointed
at as a result of this advancement.  If FALSE is returned, @name and @param
are not set and the iterator becomes invalid.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%FALSE if the end of the #RestParams has been reached, %TRUE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">an initialized #RestParamsIter</doc>
            <type name="ParamsIter" c:type="RestParamsIter*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">a location to store the name, or %NULL</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
          <parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a location to store the #RestParam, or %NULL</doc>
            <type name="Param" c:type="RestParam**"/>
          </parameter>
        </parameters>
      </method>
    </record>
    <class name="Proxy"
           c:symbol-prefix="proxy"
           c:type="RestProxy"
           parent="GObject.Object"
           glib:type-name="RestProxy"
           glib:get-type="rest_proxy_get_type"
           glib:type-struct="ProxyClass">
      <doc xml:space="preserve">#RestProxy has no publicly available members.</doc>
      <constructor name="new" c:identifier="rest_proxy_new">
        <doc xml:space="preserve">Create a new #RestProxy for the specified endpoint @url_format, using the
"GET" method.

Set @binding_required to %TRUE if the URL contains string formatting
operations (for example "http://foo.com/%&lt;!-- --&gt;s".  These must be expanded
using rest_proxy_bind() before invoking the proxy.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new #RestProxy.</doc>
          <type name="Proxy" c:type="RestProxy*"/>
        </return-value>
        <parameters>
          <parameter name="url_format" transfer-ownership="none">
            <doc xml:space="preserve">the endpoint URL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="binding_required" transfer-ownership="none">
            <doc xml:space="preserve">whether the URL needs to be bound before calling</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_authentication"
                   c:identifier="rest_proxy_new_with_authentication">
        <doc xml:space="preserve">Create a new #RestProxy for the specified endpoint @url_format, using the
"GET" method.

Set @binding_required to %TRUE if the URL contains string formatting
operations (for example "http://foo.com/%&lt;!-- --&gt;s".  These must be expanded
using rest_proxy_bind() before invoking the proxy.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new #RestProxy.</doc>
          <type name="Proxy" c:type="RestProxy*"/>
        </return-value>
        <parameters>
          <parameter name="url_format" transfer-ownership="none">
            <doc xml:space="preserve">the endpoint URL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="binding_required" transfer-ownership="none">
            <doc xml:space="preserve">whether the URL needs to be bound before calling</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="username" transfer-ownership="none">
            <doc xml:space="preserve">the username provided by the user or client</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="password" transfer-ownership="none">
            <doc xml:space="preserve">the password provided by the user or client</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="authenticate">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="RestProxy*"/>
          </instance-parameter>
          <parameter name="auth" transfer-ownership="none">
            <type name="ProxyAuth" c:type="RestProxyAuth*"/>
          </parameter>
          <parameter name="retrying" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="bind_valist"
                      invoker="bind_valist"
                      introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="RestProxy*"/>
          </instance-parameter>
          <parameter name="params" transfer-ownership="none">
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="new_call" invoker="new_call">
        <doc xml:space="preserve">Create a new #RestProxyCall for making a call to the web service.  This call
is one-shot and should not be re-used for making multiple calls.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #RestProxyCall.</doc>
          <type name="ProxyCall" c:type="RestProxyCall*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">the #RestProxy</doc>
            <type name="Proxy" c:type="RestProxy*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="simple_run_valist"
                      invoker="simple_run_valist"
                      introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="RestProxy*"/>
          </instance-parameter>
          <parameter name="payload" transfer-ownership="none">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <type name="gint64" c:type="goffset*"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="params" transfer-ownership="none">
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_soup_feature"
              c:identifier="rest_proxy_add_soup_feature"
              version="0.7.92">
        <doc xml:space="preserve">This method can be used to add specific features to the #SoupSession objects
that are used by librest for its HTTP connections. For example, if one needs
extensive control over the cookies which are used for the REST HTTP
communication, it's possible to get full access to libsoup cookie API by
using

  &lt;programlisting&gt;
  RestProxy *proxy = g_object_new(REST_TYPE_PROXY,
                                  "url-format", url,
                                  "disable-cookies", TRUE,
                                  NULL);
  SoupSessionFeature *cookie_jar = SOUP_SESSION_FEATURE(soup_cookie_jar_new ());
  rest_proxy_add_soup_feature(proxy, cookie_jar);
  &lt;/programlisting&gt;</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxy</doc>
            <type name="Proxy" c:type="RestProxy*"/>
          </instance-parameter>
          <parameter name="feature" transfer-ownership="none">
            <doc xml:space="preserve">A #SoupSessionFeature</doc>
            <type name="Soup.SessionFeature" c:type="SoupSessionFeature*"/>
          </parameter>
        </parameters>
      </method>
      <method name="bind" c:identifier="rest_proxy_bind" introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="RestProxy*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="bind_valist"
              c:identifier="rest_proxy_bind_valist"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="RestProxy*"/>
          </instance-parameter>
          <parameter name="params" transfer-ownership="none">
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_user_agent" c:identifier="rest_proxy_get_user_agent">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="RestProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="new_call" c:identifier="rest_proxy_new_call">
        <doc xml:space="preserve">Create a new #RestProxyCall for making a call to the web service.  This call
is one-shot and should not be re-used for making multiple calls.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #RestProxyCall.</doc>
          <type name="ProxyCall" c:type="RestProxyCall*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve">the #RestProxy</doc>
            <type name="Proxy" c:type="RestProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_user_agent" c:identifier="rest_proxy_set_user_agent">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="RestProxy*"/>
          </instance-parameter>
          <parameter name="user_agent" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="simple_run"
              c:identifier="rest_proxy_simple_run"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="RestProxy*"/>
          </instance-parameter>
          <parameter name="payload" transfer-ownership="none">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <type name="gint64" c:type="goffset*"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="simple_run_valist"
              c:identifier="rest_proxy_simple_run_valist"
              introspectable="0">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="RestProxy*"/>
          </instance-parameter>
          <parameter name="payload" transfer-ownership="none">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <type name="gint64" c:type="goffset*"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="params" transfer-ownership="none">
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <property name="binding-required" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="disable-cookies"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="password" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="ssl-ca-file" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="ssl-strict" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="url-format" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="user-agent" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="username" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <glib:signal name="authenticate" when="last">
        <doc xml:space="preserve">Emitted when the proxy requires authentication. If
credentials are available, set the 'username' and 'password'
properties on @proxy and return %TRUE from the callback.
This will cause the signal emission to stop, and librest will
try to connect with these credentials
If these credentials fail, the signal will be
emitted again, with @retrying set to %TRUE, which will
continue until %FALSE is returned from the callback.

If you call rest_proxy_auth_pause() on @auth before
returning, then you can the authentication credentials on
the #RestProxy object asynchronously. You have to make sure
that @auth does not get destroyed with g_object_ref().
You can then unpause the authentication with
rest_proxy_auth_unpause() when everything is ready for it
to continue.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="auth" transfer-ownership="none">
            <doc xml:space="preserve">authentication state</doc>
            <type name="ProxyAuth"/>
          </parameter>
          <parameter name="retrying" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if this is the second (or later) attempt</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <class name="ProxyAuth"
           c:symbol-prefix="proxy_auth"
           c:type="RestProxyAuth"
           parent="GObject.Object"
           glib:type-name="RestProxyAuth"
           glib:get-type="rest_proxy_auth_get_type"
           glib:type-struct="ProxyAuthClass">
      <doc xml:space="preserve">#RestProxyAuth has no publicly available members.</doc>
      <method name="pause" c:identifier="rest_proxy_auth_pause">
        <doc xml:space="preserve">Pauses @auth.

If @auth is already paused, this function does not
do anything.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="auth" transfer-ownership="none">
            <doc xml:space="preserve">a #RestProxyAuth</doc>
            <type name="ProxyAuth" c:type="RestProxyAuth*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unpause" c:identifier="rest_proxy_auth_unpause">
        <doc xml:space="preserve">Unpauses a paused #RestProxyAuth instance.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="auth" transfer-ownership="none">
            <doc xml:space="preserve">a paused #RestProxyAuth</doc>
            <type name="ProxyAuth" c:type="RestProxyAuth*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="ProxyAuthPrivate" c:type="RestProxyAuthPrivate*"/>
      </field>
    </class>
    <record name="ProxyAuthClass"
            c:type="RestProxyAuthClass"
            glib:is-gtype-struct-for="ProxyAuth">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_padding_dummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="ProxyAuthPrivate"
            c:type="RestProxyAuthPrivate"
            disguised="1">
    </record>
    <class name="ProxyCall"
           c:symbol-prefix="proxy_call"
           c:type="RestProxyCall"
           parent="GObject.Object"
           glib:type-name="RestProxyCall"
           glib:get-type="rest_proxy_call_get_type"
           glib:type-struct="ProxyCallClass">
      <doc xml:space="preserve">#RestProxyCall has no publicly available members.</doc>
      <virtual-method name="prepare" throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="serialize_params"
                      invoker="serialize_params"
                      throws="1">
        <doc xml:space="preserve">Invoker for a virtual method to serialize the parameters for this
#RestProxyCall.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the serialization was successful, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="content_type"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Content type of the payload</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="content"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">The payload</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="content_len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Length of the payload data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_header" c:identifier="rest_proxy_call_add_header">
        <doc xml:space="preserve">Add a header called @header with the value @value to the call.  If a
header with this name already exists, the new value will replace the old.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">The name of the header to set</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">The value of the header</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_headers"
              c:identifier="rest_proxy_call_add_headers"
              introspectable="0">
        <doc xml:space="preserve">Add the specified header name and value pairs to the call.  If a header
already exists, the new value will replace the old.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">Header name and value pairs, followed by %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="add_headers_from_valist"
              c:identifier="rest_proxy_call_add_headers_from_valist"
              introspectable="0">
        <doc xml:space="preserve">Add the specified header name and value pairs to the call.  If a header
already exists, the new value will replace the old.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">Header name and value pairs, followed by %NULL.</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_param" c:identifier="rest_proxy_call_add_param">
        <doc xml:space="preserve">Add a query parameter called @param with the string value @value to the call.
If a parameter with this name already exists, the new value will replace the
old.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">The name of the parameter to set</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">The value of the parameter</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_param_full"
              c:identifier="rest_proxy_call_add_param_full">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="param" transfer-ownership="none">
            <type name="Param" c:type="RestParam*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_params"
              c:identifier="rest_proxy_call_add_params"
              introspectable="0">
        <doc xml:space="preserve">Add the specified parameter name and value pairs to the call.  If a parameter
already exists, the new value will replace the old.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">Parameter name and value pairs, followed by %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="add_params_from_valist"
              c:identifier="rest_proxy_call_add_params_from_valist"
              introspectable="0">
        <doc xml:space="preserve">Add the specified parameter name and value pairs to the call.  If a parameter
already exists, the new value will replace the old.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">Parameter name and value pairs, followed by %NULL.</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="async"
              c:identifier="rest_proxy_call_async"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve">Asynchronously invoke @call.

When the call has finished, @callback will be called.  If @weak_object is
disposed during the call then this call will be cancelled. If the call is
cancelled then the callback will be invoked with an error state.

You may unref the call after calling this function since there is an
internal reference, or you may unref in the callback.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="callback" transfer-ownership="none" closure="2">
            <doc xml:space="preserve">a #RestProxyCallAsyncCallback to invoke on completion of the call</doc>
            <type name="ProxyCallAsyncCallback"
                  c:type="RestProxyCallAsyncCallback"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none">
            <doc xml:space="preserve">The #GObject to weakly reference and tie the lifecycle too</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
          <parameter name="userdata" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="cancel"
              c:identifier="rest_proxy_call_cancel"
              introspectable="0">
        <doc xml:space="preserve">Cancel this call.  It may be too late to not actually send the message, but
the callback will not be invoked.

N.B. this method should only be used with rest_proxy_call_async() and NOT
rest_proxy_call_invoke_async().</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="continuous"
              c:identifier="rest_proxy_call_continuous"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve">Asynchronously invoke @call but expect a continuous stream of content. This
means that the body data will not be accumulated and thus you cannot use
rest_proxy_call_get_payload()

When there is data @callback will be called and when the connection is
closed or the stream ends @callback will also be called.

If @weak_object is disposed during the call then this call will be
cancelled. If the call is cancelled then the callback will be invoked with
an error state.

You may unref the call after calling this function since there is an
internal reference, or you may unref in the callback.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="callback" transfer-ownership="none" closure="2">
            <doc xml:space="preserve">a #RestProxyCallContinuousCallback to invoke when data is available</doc>
            <type name="ProxyCallContinuousCallback"
                  c:type="RestProxyCallContinuousCallback"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none">
            <doc xml:space="preserve">The #GObject to weakly reference and tie the lifecycle to</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
          <parameter name="userdata" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_function"
              c:identifier="rest_proxy_call_get_function"
              version="0.7.92">
        <doc xml:space="preserve">Get the REST function that is going to be called on the proxy.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The REST "function" for the current call, see also
rest_proxy_call_set_function(). This string is owned by the #RestProxyCall
and should not be freed.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_method" c:identifier="rest_proxy_call_get_method">
        <doc xml:space="preserve">Get the HTTP method to use when making the call, for example GET or POST.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_params" c:identifier="rest_proxy_call_get_params">
        <doc xml:space="preserve">Get the parameters as a #RestParams of parameter names to values.  The
returned value is owned by the RestProxyCall instance and should not
be freed by the caller.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A #RestParams.</doc>
          <type name="Params" c:type="RestParams*"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_payload" c:identifier="rest_proxy_call_get_payload">
        <doc xml:space="preserve">Get the return payload.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A pointer to the payload. This is owned by #RestProxyCall and should
not be freed.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_payload_length"
              c:identifier="rest_proxy_call_get_payload_length">
        <doc xml:space="preserve">Get the length of the return payload.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the length of the payload in bytes.</doc>
          <type name="gint64" c:type="goffset"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_response_headers"
              c:identifier="rest_proxy_call_get_response_headers">
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">pointer to a hash table of
headers. This hash table must not be changed. You should call
g_hash_table_unref() when you have finished with it.</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="gpointer" c:type="gpointer"/>
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_status_code"
              c:identifier="rest_proxy_call_get_status_code">
        <doc xml:space="preserve">Get the HTTP status code for the call.</doc>
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_status_message"
              c:identifier="rest_proxy_call_get_status_message">
        <doc xml:space="preserve">Get the human-readable HTTP status message for the call.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The status message. This string is owned by #RestProxyCall and
should not be freed.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="invoke_async" c:identifier="rest_proxy_call_invoke_async">
        <doc xml:space="preserve">A GIO-style version of rest_proxy_call_async().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">a #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">an optional #GCancellable that can be used to
  cancel the call, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">callback to call when the async call is finished</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="invoke_finish"
              c:identifier="rest_proxy_call_invoke_finish"
              throws="1">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">a #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">the result from the #GAsyncReadyCallback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_header"
              c:identifier="rest_proxy_call_lookup_header">
        <doc xml:space="preserve">Get the value of the header called @header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The header value, or %NULL if it does not exist. This string is
owned by the #RestProxyCall and should not be freed.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">The header name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_param" c:identifier="rest_proxy_call_lookup_param">
        <doc xml:space="preserve">Get the value of the parameter called @name.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The parameter value, or %NULL if it does not exist. This string is
owned by the #RestProxyCall and should not be freed.</doc>
          <type name="Param" c:type="RestParam*"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">The paramter name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_response_header"
              c:identifier="rest_proxy_call_lookup_response_header">
        <doc xml:space="preserve">Get the string value of the header @header or %NULL if that header is not
present or there are no headers.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">The name of the header to lookup.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_header"
              c:identifier="rest_proxy_call_remove_header">
        <doc xml:space="preserve">Remove the header named @header from the call.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">The header name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_param" c:identifier="rest_proxy_call_remove_param">
        <doc xml:space="preserve">Remove the parameter named @name from the call.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">The paramter name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="run" c:identifier="rest_proxy_call_run" throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="loop" transfer-ownership="none">
            <type name="GLib.MainLoop" c:type="GMainLoop**"/>
          </parameter>
        </parameters>
      </method>
      <method name="serialize_params"
              c:identifier="rest_proxy_call_serialize_params"
              throws="1">
        <doc xml:space="preserve">Invoker for a virtual method to serialize the parameters for this
#RestProxyCall.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the serialization was successful, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="content_type"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Content type of the payload</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="content"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">The payload</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="content_len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Length of the payload data</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_function" c:identifier="rest_proxy_call_set_function">
        <doc xml:space="preserve">Set the REST "function" to call on the proxy.  This is appended to the URL,
so that for example a proxy with the URL
&lt;literal&gt;http://www.example.com/&lt;/literal&gt; and the function
&lt;literal&gt;test&lt;/literal&gt; would actually access the URL
&lt;literal&gt;http://www.example.com/test&lt;/literal&gt;</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="function" transfer-ownership="none">
            <doc xml:space="preserve">The function to call</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_method" c:identifier="rest_proxy_call_set_method">
        <doc xml:space="preserve">Set the HTTP method to use when making the call, for example GET or POST.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="method" transfer-ownership="none">
            <doc xml:space="preserve">The HTTP method to use</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="sync" c:identifier="rest_proxy_call_sync" throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="upload" c:identifier="rest_proxy_call_upload" throws="1">
        <doc xml:space="preserve">Asynchronously invoke @call but expect to have the callback invoked every time a
chunk of our request's body is written.

When the callback is invoked with the uploaded byte count equaling the message
byte count, the call has completed.

If @weak_object is disposed during the call then this call will be
cancelled. If the call is cancelled then the callback will be invoked with
an error state.

You may unref the call after calling this function since there is an
internal reference, or you may unref in the callback.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="call" transfer-ownership="none">
            <doc xml:space="preserve">The #RestProxyCall</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">a #RestProxyCallUploadCallback to invoke when a chunk
  of data was uploaded</doc>
            <type name="ProxyCallUploadCallback"
                  c:type="RestProxyCallUploadCallback"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none">
            <doc xml:space="preserve">The #GObject to weakly reference and tie the lifecycle to</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
          <parameter name="userdata" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <property name="proxy"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Proxy"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="ProxyCallPrivate" c:type="RestProxyCallPrivate*"/>
      </field>
    </class>
    <callback name="ProxyCallAsyncCallback"
              c:type="RestProxyCallAsyncCallback">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="call" transfer-ownership="none">
          <type name="ProxyCall" c:type="RestProxyCall*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="const GError*"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="userdata" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="ProxyCallClass"
            c:type="RestProxyCallClass"
            glib:is-gtype-struct-for="ProxyCall">
      <doc xml:space="preserve">Class structure for #RestProxyCall for subclasses to implement specialised
behaviour.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="prepare">
        <callback name="prepare" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="call" transfer-ownership="none">
              <type name="ProxyCall" c:type="RestProxyCall*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="serialize_params">
        <callback name="serialize_params" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">TRUE if the serialization was successful, FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="call" transfer-ownership="none">
              <doc xml:space="preserve">The #RestProxyCall</doc>
              <type name="ProxyCall" c:type="RestProxyCall*"/>
            </parameter>
            <parameter name="content_type"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">Content type of the payload</doc>
              <type name="utf8" c:type="gchar**"/>
            </parameter>
            <parameter name="content"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">The payload</doc>
              <type name="utf8" c:type="gchar**"/>
            </parameter>
            <parameter name="content_len"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">Length of the payload data</doc>
              <type name="gsize" c:type="gsize*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_padding_dummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <callback name="ProxyCallContinuousCallback"
              c:type="RestProxyCallContinuousCallback">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="call" transfer-ownership="none">
          <type name="ProxyCall" c:type="RestProxyCall*"/>
        </parameter>
        <parameter name="buf" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="const GError*"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="userdata" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="ProxyCallError"
                 glib:type-name="RestProxyCallError"
                 glib:get-type="rest_proxy_call_error_get_type"
                 c:type="RestProxyCallError"
                 glib:error-domain="rest-proxy-call-error-quark">
      <doc xml:space="preserve">Error domain used when returning errors from #RestProxyCall.</doc>
      <member name="failed"
              value="0"
              c:identifier="REST_PROXY_CALL_FAILED"
              glib:nick="failed">
        <doc xml:space="preserve">the method call failed</doc>
      </member>
      <function name="quark" c:identifier="rest_proxy_call_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <record name="ProxyCallPrivate"
            c:type="RestProxyCallPrivate"
            disguised="1">
    </record>
    <callback name="ProxyCallUploadCallback"
              c:type="RestProxyCallUploadCallback">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="call" transfer-ownership="none">
          <type name="ProxyCall" c:type="RestProxyCall*"/>
        </parameter>
        <parameter name="total" transfer-ownership="none">
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="uploaded" transfer-ownership="none">
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="const GError*"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="userdata" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="ProxyClass"
            c:type="RestProxyClass"
            glib:is-gtype-struct-for="Proxy">
      <doc xml:space="preserve">Class structure for #RestProxy for subclasses to implement specialised
behaviour.

Typically subclasses will override @new_call to construct a subclass of
#RestProxyCall.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="bind_valist" introspectable="0">
        <callback name="bind_valist" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="proxy" transfer-ownership="none">
              <type name="Proxy" c:type="RestProxy*"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type name="va_list" c:type="va_list"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="new_call">
        <callback name="new_call">
          <return-value transfer-ownership="full">
            <doc xml:space="preserve">a new #RestProxyCall.</doc>
            <type name="ProxyCall" c:type="RestProxyCall*"/>
          </return-value>
          <parameters>
            <parameter name="proxy" transfer-ownership="none">
              <doc xml:space="preserve">the #RestProxy</doc>
              <type name="Proxy" c:type="RestProxy*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="simple_run_valist" introspectable="0">
        <callback name="simple_run_valist" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="proxy" transfer-ownership="none">
              <type name="Proxy" c:type="RestProxy*"/>
            </parameter>
            <parameter name="payload" transfer-ownership="none">
              <type name="utf8" c:type="gchar**"/>
            </parameter>
            <parameter name="len" transfer-ownership="none">
              <type name="gint64" c:type="goffset*"/>
            </parameter>
            <parameter name="error" transfer-ownership="none">
              <type name="GLib.Error" c:type="GError**"/>
            </parameter>
            <parameter name="params" transfer-ownership="none">
              <type name="va_list" c:type="va_list"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="authenticate">
        <callback name="authenticate">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="proxy" transfer-ownership="none">
              <type name="Proxy" c:type="RestProxy*"/>
            </parameter>
            <parameter name="auth" transfer-ownership="none">
              <type name="ProxyAuth" c:type="RestProxyAuth*"/>
            </parameter>
            <parameter name="retrying" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_padding_dummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="ProxyError"
                 glib:type-name="RestProxyError"
                 glib:get-type="rest_proxy_error_get_type"
                 c:type="RestProxyError"
                 glib:error-domain="rest-proxy-error-quark">
      <doc xml:space="preserve">Error domain used when returning errors from a #RestProxy.</doc>
      <member name="cancelled"
              value="1"
              c:identifier="REST_PROXY_ERROR_CANCELLED"
              glib:nick="cancelled">
        <doc xml:space="preserve">Cancelled</doc>
      </member>
      <member name="resolution"
              value="2"
              c:identifier="REST_PROXY_ERROR_RESOLUTION"
              glib:nick="resolution">
        <doc xml:space="preserve">Resolution</doc>
      </member>
      <member name="connection"
              value="3"
              c:identifier="REST_PROXY_ERROR_CONNECTION"
              glib:nick="connection">
        <doc xml:space="preserve">Connection</doc>
      </member>
      <member name="ssl"
              value="4"
              c:identifier="REST_PROXY_ERROR_SSL"
              glib:nick="ssl">
        <doc xml:space="preserve">SSL</doc>
      </member>
      <member name="io"
              value="5"
              c:identifier="REST_PROXY_ERROR_IO"
              glib:nick="io">
        <doc xml:space="preserve">Input/Output</doc>
      </member>
      <member name="failed"
              value="6"
              c:identifier="REST_PROXY_ERROR_FAILED"
              glib:nick="failed">
        <doc xml:space="preserve">Failure</doc>
      </member>
      <member name="http_multiple_choices"
              value="300"
              c:identifier="REST_PROXY_ERROR_HTTP_MULTIPLE_CHOICES"
              glib:nick="http-multiple-choices">
        <doc xml:space="preserve">HTTP/Multiple choices</doc>
      </member>
      <member name="http_moved_permanently"
              value="301"
              c:identifier="REST_PROXY_ERROR_HTTP_MOVED_PERMANENTLY"
              glib:nick="http-moved-permanently">
        <doc xml:space="preserve">HTTP/Moved permanently</doc>
      </member>
      <member name="http_found"
              value="302"
              c:identifier="REST_PROXY_ERROR_HTTP_FOUND"
              glib:nick="http-found">
        <doc xml:space="preserve">HTTP/Found</doc>
      </member>
      <member name="http_see_other"
              value="303"
              c:identifier="REST_PROXY_ERROR_HTTP_SEE_OTHER"
              glib:nick="http-see-other">
        <doc xml:space="preserve">HTTP/See other</doc>
      </member>
      <member name="http_not_modified"
              value="304"
              c:identifier="REST_PROXY_ERROR_HTTP_NOT_MODIFIED"
              glib:nick="http-not-modified">
        <doc xml:space="preserve">HTTP/Not modified</doc>
      </member>
      <member name="http_use_proxy"
              value="305"
              c:identifier="REST_PROXY_ERROR_HTTP_USE_PROXY"
              glib:nick="http-use-proxy">
        <doc xml:space="preserve">HTTP/Use proxy</doc>
      </member>
      <member name="http_threeohsix"
              value="306"
              c:identifier="REST_PROXY_ERROR_HTTP_THREEOHSIX"
              glib:nick="http-threeohsix">
        <doc xml:space="preserve">HTTP/306</doc>
      </member>
      <member name="http_temporary_redirect"
              value="307"
              c:identifier="REST_PROXY_ERROR_HTTP_TEMPORARY_REDIRECT"
              glib:nick="http-temporary-redirect">
        <doc xml:space="preserve">HTTP/Temporary redirect</doc>
      </member>
      <member name="http_bad_request"
              value="400"
              c:identifier="REST_PROXY_ERROR_HTTP_BAD_REQUEST"
              glib:nick="http-bad-request">
        <doc xml:space="preserve">HTTP/Bad request</doc>
      </member>
      <member name="http_unauthorized"
              value="401"
              c:identifier="REST_PROXY_ERROR_HTTP_UNAUTHORIZED"
              glib:nick="http-unauthorized">
        <doc xml:space="preserve">HTTP/Unauthorized</doc>
      </member>
      <member name="http_fourohtwo"
              value="402"
              c:identifier="REST_PROXY_ERROR_HTTP_FOUROHTWO"
              glib:nick="http-fourohtwo">
        <doc xml:space="preserve">HTTP/402</doc>
      </member>
      <member name="http_forbidden"
              value="403"
              c:identifier="REST_PROXY_ERROR_HTTP_FORBIDDEN"
              glib:nick="http-forbidden">
        <doc xml:space="preserve">HTTP/Forbidden</doc>
      </member>
      <member name="http_not_found"
              value="404"
              c:identifier="REST_PROXY_ERROR_HTTP_NOT_FOUND"
              glib:nick="http-not-found">
        <doc xml:space="preserve">HTTP/Not found</doc>
      </member>
      <member name="http_method_not_allowed"
              value="405"
              c:identifier="REST_PROXY_ERROR_HTTP_METHOD_NOT_ALLOWED"
              glib:nick="http-method-not-allowed">
        <doc xml:space="preserve">HTTP/Method not allowed</doc>
      </member>
      <member name="http_not_acceptable"
              value="406"
              c:identifier="REST_PROXY_ERROR_HTTP_NOT_ACCEPTABLE"
              glib:nick="http-not-acceptable">
        <doc xml:space="preserve">HTTP/Not acceptable</doc>
      </member>
      <member name="http_proxy_authentication_required"
              value="407"
              c:identifier="REST_PROXY_ERROR_HTTP_PROXY_AUTHENTICATION_REQUIRED"
              glib:nick="http-proxy-authentication-required">
        <doc xml:space="preserve">HTTP/Proxy authentication required</doc>
      </member>
      <member name="http_request_timeout"
              value="408"
              c:identifier="REST_PROXY_ERROR_HTTP_REQUEST_TIMEOUT"
              glib:nick="http-request-timeout">
        <doc xml:space="preserve">HTTP/Request timeout</doc>
      </member>
      <member name="http_conflict"
              value="409"
              c:identifier="REST_PROXY_ERROR_HTTP_CONFLICT"
              glib:nick="http-conflict">
        <doc xml:space="preserve">HTTP/Conflict</doc>
      </member>
      <member name="http_gone"
              value="410"
              c:identifier="REST_PROXY_ERROR_HTTP_GONE"
              glib:nick="http-gone">
        <doc xml:space="preserve">HTTP/Gone</doc>
      </member>
      <member name="http_length_required"
              value="411"
              c:identifier="REST_PROXY_ERROR_HTTP_LENGTH_REQUIRED"
              glib:nick="http-length-required">
        <doc xml:space="preserve">HTTP/Length required</doc>
      </member>
      <member name="http_precondition_failed"
              value="412"
              c:identifier="REST_PROXY_ERROR_HTTP_PRECONDITION_FAILED"
              glib:nick="http-precondition-failed">
        <doc xml:space="preserve">HTTP/Precondition failed</doc>
      </member>
      <member name="http_request_entity_too_large"
              value="413"
              c:identifier="REST_PROXY_ERROR_HTTP_REQUEST_ENTITY_TOO_LARGE"
              glib:nick="http-request-entity-too-large">
        <doc xml:space="preserve">HTTP/Request entity too large</doc>
      </member>
      <member name="http_request_uri_too_long"
              value="414"
              c:identifier="REST_PROXY_ERROR_HTTP_REQUEST_URI_TOO_LONG"
              glib:nick="http-request-uri-too-long">
        <doc xml:space="preserve">HTTP/Request URI too long</doc>
      </member>
      <member name="http_unsupported_media_type"
              value="415"
              c:identifier="REST_PROXY_ERROR_HTTP_UNSUPPORTED_MEDIA_TYPE"
              glib:nick="http-unsupported-media-type">
        <doc xml:space="preserve">HTTP/Unsupported media type</doc>
      </member>
      <member name="http_requested_range_not_satisfiable"
              value="416"
              c:identifier="REST_PROXY_ERROR_HTTP_REQUESTED_RANGE_NOT_SATISFIABLE"
              glib:nick="http-requested-range-not-satisfiable">
        <doc xml:space="preserve">HTTP/Requested range not satisfiable</doc>
      </member>
      <member name="http_expectation_failed"
              value="417"
              c:identifier="REST_PROXY_ERROR_HTTP_EXPECTATION_FAILED"
              glib:nick="http-expectation-failed">
        <doc xml:space="preserve">HTTP/Expectation failed</doc>
      </member>
      <member name="http_internal_server_error"
              value="500"
              c:identifier="REST_PROXY_ERROR_HTTP_INTERNAL_SERVER_ERROR"
              glib:nick="http-internal-server-error">
        <doc xml:space="preserve">HTTP/Internal server error</doc>
      </member>
      <member name="http_not_implemented"
              value="501"
              c:identifier="REST_PROXY_ERROR_HTTP_NOT_IMPLEMENTED"
              glib:nick="http-not-implemented">
        <doc xml:space="preserve">HTTP/Not implemented</doc>
      </member>
      <member name="http_bad_gateway"
              value="502"
              c:identifier="REST_PROXY_ERROR_HTTP_BAD_GATEWAY"
              glib:nick="http-bad-gateway">
        <doc xml:space="preserve">HTTP/Bad gateway</doc>
      </member>
      <member name="http_service_unavailable"
              value="503"
              c:identifier="REST_PROXY_ERROR_HTTP_SERVICE_UNAVAILABLE"
              glib:nick="http-service-unavailable">
        <doc xml:space="preserve">HTTP/Service unavailable</doc>
      </member>
      <member name="http_gateway_timeout"
              value="504"
              c:identifier="REST_PROXY_ERROR_HTTP_GATEWAY_TIMEOUT"
              glib:nick="http-gateway-timeout">
        <doc xml:space="preserve">HTTP/Gateway timeout</doc>
      </member>
      <member name="http_http_version_not_supported"
              value="505"
              c:identifier="REST_PROXY_ERROR_HTTP_HTTP_VERSION_NOT_SUPPORTED"
              glib:nick="http-http-version-not-supported">
        <doc xml:space="preserve">HTTP/Version not supported</doc>
      </member>
      <function name="quark" c:identifier="rest_proxy_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <record name="XmlNode"
            c:type="RestXmlNode"
            glib:type-name="RestXmlNode"
            glib:get-type="rest_xml_node_get_type"
            c:symbol-prefix="xml_node">
      <field name="ref_count" readable="0" private="1">
        <type name="gint" c:type="volatile int"/>
      </field>
      <field name="name" writable="1">
        <doc xml:space="preserve">the name of the element</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="content" writable="1">
        <doc xml:space="preserve">the textual content of the element</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="children" writable="1">
        <doc xml:space="preserve">a #GHashTable of string name to #RestXmlNode for the children of
the element.</doc>
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="attrs" writable="1">
        <doc xml:space="preserve">a #GHashTable of string name to string values for the attributes of
the element.</doc>
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="next" writable="1">
        <doc xml:space="preserve">the sibling #RestXmlNode with the same name</doc>
        <type name="XmlNode" c:type="RestXmlNode*"/>
      </field>
      <method name="add_attr" c:identifier="rest_xml_node_add_attr">
        <doc xml:space="preserve">Adds attribute to the given node.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="node" transfer-ownership="none">
            <doc xml:space="preserve">#RestXmlNode to add attribute to</doc>
            <type name="XmlNode" c:type="RestXmlNode*"/>
          </instance-parameter>
          <parameter name="attribute" transfer-ownership="none">
            <doc xml:space="preserve">name of the attribute</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">value to set attribute to</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_child" c:identifier="rest_xml_node_add_child">
        <doc xml:space="preserve">Adds a new node to the given parent node; to create the top-level node,
parent should be %NULL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the newly added #RestXmlNode; the node object
is owned by, and valid for the life time of, the #RestXmlCreator.</doc>
          <type name="XmlNode" c:type="RestXmlNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parent" transfer-ownership="none">
            <doc xml:space="preserve">parent #RestXmlNode, or %NULL for the top-level node</doc>
            <type name="XmlNode" c:type="RestXmlNode*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">name of the child node</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find" c:identifier="rest_xml_node_find">
        <doc xml:space="preserve">Searches for the first child node of @start named @tag.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the first child node, or %NULL if it doesn't exist.</doc>
          <type name="XmlNode" c:type="RestXmlNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve">a #RestXmlNode</doc>
            <type name="XmlNode" c:type="RestXmlNode*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">the name of a node</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="rest_xml_node_free">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="node" transfer-ownership="none">
            <type name="XmlNode" c:type="RestXmlNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_attr" c:identifier="rest_xml_node_get_attr">
        <doc xml:space="preserve">Get the value of the attribute named @attr_name, or %NULL if it doesn't
exist.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the attribute value. This string is owned by #RestXmlNode and should
not be freed.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="node" transfer-ownership="none">
            <doc xml:space="preserve">a #RestXmlNode</doc>
            <type name="XmlNode" c:type="RestXmlNode*"/>
          </instance-parameter>
          <parameter name="attr_name" transfer-ownership="none">
            <doc xml:space="preserve">the name of an attribute</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="print" c:identifier="rest_xml_node_print">
        <doc xml:space="preserve">Recursively outputs given node and it's children.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">xml string representing the node.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="node" transfer-ownership="none">
            <doc xml:space="preserve">#RestXmlNode</doc>
            <type name="XmlNode" c:type="RestXmlNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="rest_xml_node_ref" introspectable="0">
        <doc xml:space="preserve">Increases the reference count of @node.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the same @node.</doc>
          <type name="XmlNode" c:type="RestXmlNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="node" transfer-ownership="none">
            <doc xml:space="preserve">a #RestXmlNode</doc>
            <type name="XmlNode" c:type="RestXmlNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_content" c:identifier="rest_xml_node_set_content">
        <doc xml:space="preserve">Sets content for the given node.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="node" transfer-ownership="none">
            <doc xml:space="preserve">#RestXmlNode to set content</doc>
            <type name="XmlNode" c:type="RestXmlNode*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the content</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref"
              c:identifier="rest_xml_node_unref"
              introspectable="0">
        <doc xml:space="preserve">Decreases the reference count of @node. When its reference count drops to 0,
the node is finalized (i.e. its memory is freed).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="node" transfer-ownership="none">
            <doc xml:space="preserve">a #RestXmlNode</doc>
            <type name="XmlNode" c:type="RestXmlNode*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="XmlParser"
           c:symbol-prefix="xml_parser"
           c:type="RestXmlParser"
           parent="GObject.Object"
           glib:type-name="RestXmlParser"
           glib:get-type="rest_xml_parser_get_type"
           glib:type-struct="XmlParserClass">
      <constructor name="new" c:identifier="rest_xml_parser_new">
        <doc xml:space="preserve">Create a new #RestXmlParser, for parsing XML documents.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #RestXmlParser.</doc>
          <type name="XmlParser" c:type="RestXmlParser*"/>
        </return-value>
      </constructor>
      <method name="parse_from_data"
              c:identifier="rest_xml_parser_parse_from_data">
        <doc xml:space="preserve">Parse the XML in @data, and return a new #RestXmlNode.  If @data is invalid
XML, %NULL is returned.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #RestXmlNode, or %NULL if the XML was invalid.</doc>
          <type name="XmlNode" c:type="RestXmlNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #RestXmlParser</doc>
            <type name="XmlParser" c:type="RestXmlParser*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">the XML content to parse</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve">the length of @data, or -1 if @data is a nul-terminated string</doc>
            <type name="gint64" c:type="goffset"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="XmlParserClass"
            c:type="RestXmlParserClass"
            glib:is-gtype-struct-for="XmlParser">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <function name="hmac_sha1" c:identifier="hmac_sha1">
      <return-value transfer-ownership="full">
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="key" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="message" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="proxy_call_error_quark"
              c:identifier="rest_proxy_call_error_quark"
              moved-to="ProxyCallError.quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="proxy_error_quark"
              c:identifier="rest_proxy_error_quark"
              moved-to="ProxyError.quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
  </namespace>
</repository>
