gi-soup-0.2.52.12: Soup bindings

CopyrightWill Thompson, Iñaki García Etxebarria and Jonas Platte
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria (garetxe@gmail.com)
Safe HaskellNone
LanguageHaskell2010

GI.Soup.Structs.URI

Contents

Description

A SoupURI supports RFC 3986 (URI Generic Syntax), and can parse any valid URI. However, libsoup only uses "http" and "https" URIs internally; You can use SOUP_URI_VALID_FOR_HTTP() to test if a #SoupURI is a valid HTTP URI.

scheme will always be set in any URI. It is an interned string and is always all lowercase. (If you parse a URI with a non-lowercase scheme, it will be converted to lowercase.) The macros %SOUP_URI_SCHEME_HTTP and %SOUP_URI_SCHEME_HTTPS provide the interned values for "http" and "https" and can be compared against URI scheme values.

user and password are parsed as defined in the older URI specs (ie, separated by a colon; RFC 3986 only talks about a single "userinfo" field). Note that @password is not included in the output of soup_uri_to_string(). libsoup does not normally use these fields; authentication is handled via #SoupSession signals.

host contains the hostname, and port the port specified in the URI. If the URI doesn't contain a hostname, host will be %NULL, and if it doesn't specify a port, port may be 0. However, for "http" and "https" URIs, host is guaranteed to be non-%NULL (trying to parse an http URI with no host will return %NULL), and @port will always be non-0 (because libsoup knows the default value to use when it is not specified in the URI).

path is always non-%NULL. For http/https URIs, path will never be an empty string either; if the input URI has no path, the parsed #SoupURI will have a @path of "/".

query and fragment are optional for all URI types. soup_form_decode() may be useful for parsing @query.

Note that path, query, and fragment may contain %---encoded characters. soup_uri_new() calls soup_uri_normalize() on them, but not soup_uri_decode(). This is necessary to ensure that soup_uri_to_string() will generate a URI that has exactly the same meaning as the original. (In theory, #SoupURI should leave user, password, and host partially-encoded as well, but this would be more annoying than useful.)

Synopsis

Exported types

newtype URI Source

Constructors

URI (ForeignPtr URI) 

Instances

Methods

uRICopy

uRICopyHost

uRIEqual

uRIEqual :: MonadIO m => URI -> URI -> m Bool Source

uRIFree

uRIFree :: MonadIO m => URI -> m () Source

uRIGetFragment

uRIGetHost

uRIGetPassword

uRIGetPath

uRIGetPort

uRIGetQuery

uRIGetScheme

uRIGetUser

uRIHostEqual

uRIHostHash

uRINew

uRINewWithBase

uRISetFragment

uRISetHost

uRISetHost :: MonadIO m => URI -> Maybe Text -> m () Source

uRISetPassword

uRISetPath

uRISetPath :: MonadIO m => URI -> Text -> m () Source

uRISetPort

uRISetPort :: MonadIO m => URI -> Word32 -> m () Source

uRISetQuery

uRISetQuery :: MonadIO m => URI -> Maybe Text -> m () Source

uRISetQueryFromForm

uRISetScheme

uRISetScheme :: MonadIO m => URI -> Text -> m () Source

uRISetUser

uRISetUser :: MonadIO m => URI -> Maybe Text -> m () Source

uRIToString

uRIUsesDefaultPort

Properties

Fragment

Host

Password

Path

Port

Query

Scheme

User