soup-uri 3 LIBSOUP Library
soup-uri

## Synopsis

    typedef     SoupProtocol;
    #define     SOUP_PROTOCOL_HTTP
    #define     SOUP_PROTOCOL_HTTPS
    SoupUri*    soup_uri_new_with_base          (const SoupUri *base,
                                                 const char *uri_string);
    SoupUri*    soup_uri_new                    (const char *uri_string);
    char*       soup_uri_to_string              (const SoupUri *uri,
                                                 gboolean just_path);
    SoupUri*    soup_uri_copy                   (const SoupUri *uri);
    SoupUri*    soup_uri_copy_root              (const SoupUri *uri);
    gboolean    soup_uri_equal                  (const SoupUri *uri1,
                                                 const SoupUri *uri2);
    void        soup_uri_free                   (SoupUri *uri);
    char*       soup_uri_encode                 (const char *part,
                                                 const char *escape_extra);
    void        soup_uri_decode                 (char *part);
    gboolean    soup_uri_uses_default_port      (const SoupUri *uri);

## Description

## Details

### SoupProtocol

    typedef GQuark SoupProtocol;

GQuark is used for SoupProtocol so that the protocol of a SoupUri can be tested quickly.

SoupProtocol

### SOUP_PROTOCOL_HTTP

    #define SOUP_PROTOCOL_HTTP (g_quark_from_static_string ("http"))

This returns the SoupProtocol value for "http".

SOUP_PROTOCOL_HTTP

### SOUP_PROTOCOL_HTTPS

    #define SOUP_PROTOCOL_HTTPS (g_quark_from_static_string ("https"))

This returns the SoupProtocol value for "https".

SOUP_PROTOCOL_HTTPS

### soup_uri_new_with_base ()

    SoupUri*    soup_uri_new_with_base          (const SoupUri *base,
                                                 const char *uri_string);

Parses uri_string relative to base.

base :

  a base URI

uri_string :

  the URI

Returns :

  a parsed SoupUri.

soup_uri_new_with_base

### soup_uri_new ()

    SoupUri*    soup_uri_new                    (const char *uri_string);

Parses an absolute URI.

uri_string :

  a URI

Returns :

  a SoupUri, or `NULL`.

soup_uri_new

### soup_uri_to_string ()

    char*       soup_uri_to_string              (const SoupUri *uri,
                                                 gboolean just_path);

Returns a string representing uri.

uri :

  a SoupUri

just_path :

  if `TRUE`, output just the path and query portions

Returns :

  a string representing uri, which the caller must free.

soup_uri_to_string

### soup_uri_copy ()

    SoupUri*    soup_uri_copy                   (const SoupUri *uri);

Copies uri

uri :

  a SoupUri

Returns :

  a copy of uri, which must be freed with `soup_uri_free()`

soup_uri_copy

### soup_uri_copy_root ()

    SoupUri*    soup_uri_copy_root              (const SoupUri *uri);

Copies the protocol, host, and port of uri into a new SoupUri (all other fields in the new URI will be empty.)

uri :

  a SoupUri

Returns :

  a partial copy of uri, which must be freed with `soup_uri_free()`

soup_uri_copy_root

### soup_uri_equal ()

    gboolean    soup_uri_equal                  (const SoupUri *uri1,
                                                 const SoupUri *uri2);

Tests whether or not u1 and u2 are equal in all parts

uri1 :

uri2 :

Returns :

  `TRUE` or `FALSE`

soup_uri_equal

### soup_uri_free ()

    void        soup_uri_free                   (SoupUri *uri);

Frees uri.

uri :

  a SoupUri

soup_uri_free

### soup_uri_encode ()

    char*       soup_uri_encode                 (const char *part,
                                                 const char *escape_extra);

This `-encodes` the given URI part and returns the escaped version in allocated memory, which the caller must free when it is done.

part :

  a URI part

escape_extra :

  additional characters beyond " \"%#<>{}|\^[]`" to escape (or `NULL`)

Returns :

  the encoded URI part

soup_uri_encode

### soup_uri_decode ()

    void        soup_uri_decode                 (char *part);

`-decodes` the passed-in URI *in place*. The decoded version is never longer than the encoded version, so there does not need to be any additional space at the end of the string.

part :

  a URI part

soup_uri_decode

### soup_uri_uses_default_port ()

    gboolean    soup_uri_uses_default_port      (const SoupUri *uri);

Tests if uri uses the default port for its protocol. (Eg, 80 for http.)

uri :

  a SoupUri

Returns :

  `TRUE` or `FALSE`

soup_uri_uses_default_port