Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
Safe Haskell | None |
Language | Haskell2010 |
- Exported types
- Methods
- uRICopy
- uRICopyHost
- uRIEqual
- uRIFree
- uRIGetFragment
- uRIGetHost
- uRIGetPassword
- uRIGetPath
- uRIGetPort
- uRIGetQuery
- uRIGetScheme
- uRIGetUser
- uRIHostEqual
- uRIHostHash
- uRINew
- uRINewWithBase
- uRISetFragment
- uRISetHost
- uRISetPassword
- uRISetPath
- uRISetPort
- uRISetQuery
- uRISetQueryFromForm
- uRISetScheme
- uRISetUser
- uRIToString
- uRIUsesDefaultPort
- Properties
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.)
- newtype URI = URI (ForeignPtr URI)
- noURI :: Maybe URI
- uRICopy :: MonadIO m => URI -> m URI
- uRICopyHost :: MonadIO m => URI -> m URI
- uRIEqual :: MonadIO m => URI -> URI -> m Bool
- uRIFree :: MonadIO m => URI -> m ()
- uRIGetFragment :: MonadIO m => URI -> m Text
- uRIGetHost :: MonadIO m => URI -> m Text
- uRIGetPassword :: MonadIO m => URI -> m Text
- uRIGetPath :: MonadIO m => URI -> m Text
- uRIGetPort :: MonadIO m => URI -> m Word32
- uRIGetQuery :: MonadIO m => URI -> m Text
- uRIGetScheme :: MonadIO m => URI -> m Text
- uRIGetUser :: MonadIO m => URI -> m Text
- uRIHostEqual :: MonadIO m => URI -> URI -> m Bool
- uRIHostHash :: MonadIO m => URI -> m Word32
- uRINew :: MonadIO m => Maybe Text -> m URI
- uRINewWithBase :: MonadIO m => URI -> Text -> m URI
- uRISetFragment :: MonadIO m => URI -> Maybe Text -> m ()
- uRISetHost :: MonadIO m => URI -> Maybe Text -> m ()
- uRISetPassword :: MonadIO m => URI -> Maybe Text -> m ()
- uRISetPath :: MonadIO m => URI -> Text -> m ()
- uRISetPort :: MonadIO m => URI -> Word32 -> m ()
- uRISetQuery :: MonadIO m => URI -> Maybe Text -> m ()
- uRISetQueryFromForm :: MonadIO m => URI -> Map Text Text -> m ()
- uRISetScheme :: MonadIO m => URI -> Text -> m ()
- uRISetUser :: MonadIO m => URI -> Maybe Text -> m ()
- uRIToString :: MonadIO m => URI -> Bool -> m Text
- uRIUsesDefaultPort :: MonadIO m => URI -> m Bool
- uRIReadFragment :: URI -> IO Text
- uRIReadHost :: URI -> IO Text
- uRIReadPassword :: URI -> IO Text
- uRIReadPath :: URI -> IO Text
- uRIReadPort :: URI -> IO Word32
- uRIReadQuery :: URI -> IO Text
- uRIReadScheme :: URI -> IO Text
- uRIReadUser :: URI -> IO Text
Exported types
Methods
uRICopy
uRICopyHost
uRICopyHost :: MonadIO m => URI -> m URI Source
uRIEqual
uRIFree
uRIGetFragment
uRIGetFragment :: MonadIO m => URI -> m Text Source
uRIGetHost
uRIGetHost :: MonadIO m => URI -> m Text Source
uRIGetPassword
uRIGetPassword :: MonadIO m => URI -> m Text Source
uRIGetPath
uRIGetPath :: MonadIO m => URI -> m Text Source
uRIGetPort
uRIGetPort :: MonadIO m => URI -> m Word32 Source
uRIGetQuery
uRIGetQuery :: MonadIO m => URI -> m Text Source
uRIGetScheme
uRIGetScheme :: MonadIO m => URI -> m Text Source
uRIGetUser
uRIGetUser :: MonadIO m => URI -> m Text Source
uRIHostEqual
uRIHostHash
uRIHostHash :: MonadIO m => URI -> m Word32 Source
uRINew
uRINewWithBase
uRISetFragment
uRISetHost
uRISetPassword
uRISetPath
uRISetPath :: MonadIO m => URI -> Text -> m () Source
uRISetPort
uRISetPort :: MonadIO m => URI -> Word32 -> m () Source
uRISetQuery
uRISetQueryFromForm
uRISetScheme
uRISetScheme :: MonadIO m => URI -> Text -> m () Source
uRISetUser
uRIToString
uRIUsesDefaultPort
uRIUsesDefaultPort :: MonadIO m => URI -> m Bool Source
Properties
Fragment
uRIReadFragment :: URI -> IO Text Source
Host
uRIReadHost :: URI -> IO Text Source
Password
uRIReadPassword :: URI -> IO Text Source
Path
uRIReadPath :: URI -> IO Text Source
Port
uRIReadPort :: URI -> IO Word32 Source
Query
uRIReadQuery :: URI -> IO Text Source
Scheme
uRIReadScheme :: URI -> IO Text Source
User
uRIReadUser :: URI -> IO Text Source