gi-soup-0.2.52.15: 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

BoxedObject URI 
(~) AttrOpTag tag AttrSet => Constructible URI tag 
((~) * signature (m Bool), MonadIO m) => MethodInfo * URIUsesDefaultPortMethodInfo URI signature 
((~) * signature (Bool -> m Text), MonadIO m) => MethodInfo * URIToStringMethodInfo URI signature 
((~) * signature (Maybe Text -> m ()), MonadIO m) => MethodInfo * URISetUserMethodInfo URI signature 
((~) * signature (Text -> m ()), MonadIO m) => MethodInfo * URISetSchemeMethodInfo URI signature 
((~) * signature (Map Text Text -> m ()), MonadIO m) => MethodInfo * URISetQueryFromFormMethodInfo URI signature 
((~) * signature (Maybe Text -> m ()), MonadIO m) => MethodInfo * URISetQueryMethodInfo URI signature 
((~) * signature (Word32 -> m ()), MonadIO m) => MethodInfo * URISetPortMethodInfo URI signature 
((~) * signature (Text -> m ()), MonadIO m) => MethodInfo * URISetPathMethodInfo URI signature 
((~) * signature (Maybe Text -> m ()), MonadIO m) => MethodInfo * URISetPasswordMethodInfo URI signature 
((~) * signature (Maybe Text -> m ()), MonadIO m) => MethodInfo * URISetHostMethodInfo URI signature 
((~) * signature (Maybe Text -> m ()), MonadIO m) => MethodInfo * URISetFragmentMethodInfo URI signature 
((~) * signature (Text -> m URI), MonadIO m) => MethodInfo * URINewWithBaseMethodInfo URI signature 
((~) * signature (m Word32), MonadIO m) => MethodInfo * URIHostHashMethodInfo URI signature 
((~) * signature (URI -> m Bool), MonadIO m) => MethodInfo * URIHostEqualMethodInfo URI signature 
((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetUserMethodInfo URI signature 
((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetSchemeMethodInfo URI signature 
((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetQueryMethodInfo URI signature 
((~) * signature (m Word32), MonadIO m) => MethodInfo * URIGetPortMethodInfo URI signature 
((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetPathMethodInfo URI signature 
((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetPasswordMethodInfo URI signature 
((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetHostMethodInfo URI signature 
((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetFragmentMethodInfo URI signature 
((~) * signature (m ()), MonadIO m) => MethodInfo * URIFreeMethodInfo URI signature 
((~) * signature (URI -> m Bool), MonadIO m) => MethodInfo * URIEqualMethodInfo URI signature 
((~) * signature (m URI), MonadIO m) => MethodInfo * URICopyHostMethodInfo URI signature 
((~) * signature (m URI), MonadIO m) => MethodInfo * URICopyMethodInfo URI signature 
((~) * info (ResolveURIMethod t URI), MethodInfo * info URI p) => IsLabelProxy t (URI -> p) 
type AttributeList URI 

newZeroURI :: MonadIO m => m URI Source

Construct a URI struct initialized to zero.

Methods

uRICopy

data URICopyMethodInfo Source

Instances

((~) * signature (m URI), MonadIO m) => MethodInfo * URICopyMethodInfo URI signature 

uRICopyHost

data URICopyHostMethodInfo Source

Instances

((~) * signature (m URI), MonadIO m) => MethodInfo * URICopyHostMethodInfo URI signature 

uRIDecode

uRIEncode

uRIEqual

data URIEqualMethodInfo Source

Instances

((~) * signature (URI -> m Bool), MonadIO m) => MethodInfo * URIEqualMethodInfo URI signature 

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

uRIFree

data URIFreeMethodInfo Source

Instances

((~) * signature (m ()), MonadIO m) => MethodInfo * URIFreeMethodInfo URI signature 

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

uRIGetFragment

data URIGetFragmentMethodInfo Source

Instances

((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetFragmentMethodInfo URI signature 

uRIGetHost

data URIGetHostMethodInfo Source

Instances

((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetHostMethodInfo URI signature 

uRIGetPassword

data URIGetPasswordMethodInfo Source

Instances

((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetPasswordMethodInfo URI signature 

uRIGetPath

data URIGetPathMethodInfo Source

Instances

((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetPathMethodInfo URI signature 

uRIGetPort

data URIGetPortMethodInfo Source

Instances

((~) * signature (m Word32), MonadIO m) => MethodInfo * URIGetPortMethodInfo URI signature 

uRIGetQuery

data URIGetQueryMethodInfo Source

Instances

((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetQueryMethodInfo URI signature 

uRIGetScheme

data URIGetSchemeMethodInfo Source

Instances

((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetSchemeMethodInfo URI signature 

uRIGetUser

data URIGetUserMethodInfo Source

Instances

((~) * signature (m Text), MonadIO m) => MethodInfo * URIGetUserMethodInfo URI signature 

uRIHostEqual

data URIHostEqualMethodInfo Source

Instances

((~) * signature (URI -> m Bool), MonadIO m) => MethodInfo * URIHostEqualMethodInfo URI signature 

uRIHostHash

data URIHostHashMethodInfo Source

Instances

((~) * signature (m Word32), MonadIO m) => MethodInfo * URIHostHashMethodInfo URI signature 

uRINew

uRINewWithBase

data URINewWithBaseMethodInfo Source

Instances

((~) * signature (Text -> m URI), MonadIO m) => MethodInfo * URINewWithBaseMethodInfo URI signature 

uRINormalize

uRISetFragment

data URISetFragmentMethodInfo Source

Instances

((~) * signature (Maybe Text -> m ()), MonadIO m) => MethodInfo * URISetFragmentMethodInfo URI signature 

uRISetHost

data URISetHostMethodInfo Source

Instances

((~) * signature (Maybe Text -> m ()), MonadIO m) => MethodInfo * URISetHostMethodInfo URI signature 

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

uRISetPassword

data URISetPasswordMethodInfo Source

Instances

((~) * signature (Maybe Text -> m ()), MonadIO m) => MethodInfo * URISetPasswordMethodInfo URI signature 

uRISetPath

data URISetPathMethodInfo Source

Instances

((~) * signature (Text -> m ()), MonadIO m) => MethodInfo * URISetPathMethodInfo URI signature 

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

uRISetPort

data URISetPortMethodInfo Source

Instances

((~) * signature (Word32 -> m ()), MonadIO m) => MethodInfo * URISetPortMethodInfo URI signature 

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

uRISetQuery

data URISetQueryMethodInfo Source

Instances

((~) * signature (Maybe Text -> m ()), MonadIO m) => MethodInfo * URISetQueryMethodInfo URI signature 

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

uRISetQueryFromForm

data URISetQueryFromFormMethodInfo Source

Instances

((~) * signature (Map Text Text -> m ()), MonadIO m) => MethodInfo * URISetQueryFromFormMethodInfo URI signature 

uRISetScheme

data URISetSchemeMethodInfo Source

Instances

((~) * signature (Text -> m ()), MonadIO m) => MethodInfo * URISetSchemeMethodInfo URI signature 

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

uRISetUser

data URISetUserMethodInfo Source

Instances

((~) * signature (Maybe Text -> m ()), MonadIO m) => MethodInfo * URISetUserMethodInfo URI signature 

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

uRIToString

data URIToStringMethodInfo Source

Instances

((~) * signature (Bool -> m Text), MonadIO m) => MethodInfo * URIToStringMethodInfo URI signature 

uRIUsesDefaultPort

data URIUsesDefaultPortMethodInfo Source

Instances

((~) * signature (m Bool), MonadIO m) => MethodInfo * URIUsesDefaultPortMethodInfo URI signature 

Properties

Fragment

Host

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

Password

Path

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

Port

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

Query

Scheme

User

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