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
- uRIDecode
- uRIEncode
- uRIEqual
- uRIFree
- uRIGetFragment
- uRIGetHost
- uRIGetPassword
- uRIGetPath
- uRIGetPort
- uRIGetQuery
- uRIGetScheme
- uRIGetUser
- uRIHostEqual
- uRIHostHash
- uRINew
- uRINewWithBase
- uRINormalize
- 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)
- newZeroURI :: MonadIO m => m URI
- noURI :: Maybe URI
- data URICopyMethodInfo
- uRICopy :: MonadIO m => URI -> m URI
- data URICopyHostMethodInfo
- uRICopyHost :: MonadIO m => URI -> m URI
- uRIDecode :: MonadIO m => Text -> m Text
- uRIEncode :: MonadIO m => Text -> Maybe Text -> m Text
- data URIEqualMethodInfo
- uRIEqual :: MonadIO m => URI -> URI -> m Bool
- data URIFreeMethodInfo
- uRIFree :: MonadIO m => URI -> m ()
- data URIGetFragmentMethodInfo
- uRIGetFragment :: MonadIO m => URI -> m Text
- data URIGetHostMethodInfo
- uRIGetHost :: MonadIO m => URI -> m Text
- data URIGetPasswordMethodInfo
- uRIGetPassword :: MonadIO m => URI -> m Text
- data URIGetPathMethodInfo
- uRIGetPath :: MonadIO m => URI -> m Text
- data URIGetPortMethodInfo
- uRIGetPort :: MonadIO m => URI -> m Word32
- data URIGetQueryMethodInfo
- uRIGetQuery :: MonadIO m => URI -> m Text
- data URIGetSchemeMethodInfo
- uRIGetScheme :: MonadIO m => URI -> m Text
- data URIGetUserMethodInfo
- uRIGetUser :: MonadIO m => URI -> m Text
- data URIHostEqualMethodInfo
- uRIHostEqual :: MonadIO m => URI -> URI -> m Bool
- data URIHostHashMethodInfo
- uRIHostHash :: MonadIO m => URI -> m Word32
- uRINew :: MonadIO m => Maybe Text -> m URI
- data URINewWithBaseMethodInfo
- uRINewWithBase :: MonadIO m => URI -> Text -> m URI
- uRINormalize :: MonadIO m => Text -> Maybe Text -> m Text
- data URISetFragmentMethodInfo
- uRISetFragment :: MonadIO m => URI -> Maybe Text -> m ()
- data URISetHostMethodInfo
- uRISetHost :: MonadIO m => URI -> Maybe Text -> m ()
- data URISetPasswordMethodInfo
- uRISetPassword :: MonadIO m => URI -> Maybe Text -> m ()
- data URISetPathMethodInfo
- uRISetPath :: MonadIO m => URI -> Text -> m ()
- data URISetPortMethodInfo
- uRISetPort :: MonadIO m => URI -> Word32 -> m ()
- data URISetQueryMethodInfo
- uRISetQuery :: MonadIO m => URI -> Maybe Text -> m ()
- data URISetQueryFromFormMethodInfo
- uRISetQueryFromForm :: MonadIO m => URI -> Map Text Text -> m ()
- data URISetSchemeMethodInfo
- uRISetScheme :: MonadIO m => URI -> Text -> m ()
- data URISetUserMethodInfo
- uRISetUser :: MonadIO m => URI -> Maybe Text -> m ()
- data URIToStringMethodInfo
- uRIToString :: MonadIO m => URI -> Bool -> m Text
- data URIUsesDefaultPortMethodInfo
- 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
URI (ForeignPtr URI) |
newZeroURI :: MonadIO m => m URI Source
Construct a URI
struct initialized to zero.
Methods
uRICopy
data URICopyMethodInfo Source
((~) (TYPE Lifted) signature (m URI), MonadIO m) => MethodInfo (TYPE Lifted) URICopyMethodInfo URI signature Source | |
uRICopyHost
data URICopyHostMethodInfo Source
((~) (TYPE Lifted) signature (m URI), MonadIO m) => MethodInfo (TYPE Lifted) URICopyHostMethodInfo URI signature Source | |
uRICopyHost :: MonadIO m => URI -> m URI Source
uRIDecode
uRIEncode
uRIEqual
data URIEqualMethodInfo Source
uRIFree
data URIFreeMethodInfo Source
((~) (TYPE Lifted) signature (m ()), MonadIO m) => MethodInfo (TYPE Lifted) URIFreeMethodInfo URI signature Source | |
uRIGetFragment
data URIGetFragmentMethodInfo Source
((~) (TYPE Lifted) signature (m Text), MonadIO m) => MethodInfo (TYPE Lifted) URIGetFragmentMethodInfo URI signature Source | |
uRIGetFragment :: MonadIO m => URI -> m Text Source
uRIGetHost
data URIGetHostMethodInfo Source
((~) (TYPE Lifted) signature (m Text), MonadIO m) => MethodInfo (TYPE Lifted) URIGetHostMethodInfo URI signature Source | |
uRIGetHost :: MonadIO m => URI -> m Text Source
uRIGetPassword
data URIGetPasswordMethodInfo Source
((~) (TYPE Lifted) signature (m Text), MonadIO m) => MethodInfo (TYPE Lifted) URIGetPasswordMethodInfo URI signature Source | |
uRIGetPassword :: MonadIO m => URI -> m Text Source
uRIGetPath
data URIGetPathMethodInfo Source
((~) (TYPE Lifted) signature (m Text), MonadIO m) => MethodInfo (TYPE Lifted) URIGetPathMethodInfo URI signature Source | |
uRIGetPath :: MonadIO m => URI -> m Text Source
uRIGetPort
data URIGetPortMethodInfo Source
((~) (TYPE Lifted) signature (m Word32), MonadIO m) => MethodInfo (TYPE Lifted) URIGetPortMethodInfo URI signature Source | |
uRIGetPort :: MonadIO m => URI -> m Word32 Source
uRIGetQuery
data URIGetQueryMethodInfo Source
((~) (TYPE Lifted) signature (m Text), MonadIO m) => MethodInfo (TYPE Lifted) URIGetQueryMethodInfo URI signature Source | |
uRIGetQuery :: MonadIO m => URI -> m Text Source
uRIGetScheme
data URIGetSchemeMethodInfo Source
((~) (TYPE Lifted) signature (m Text), MonadIO m) => MethodInfo (TYPE Lifted) URIGetSchemeMethodInfo URI signature Source | |
uRIGetScheme :: MonadIO m => URI -> m Text Source
uRIGetUser
data URIGetUserMethodInfo Source
((~) (TYPE Lifted) signature (m Text), MonadIO m) => MethodInfo (TYPE Lifted) URIGetUserMethodInfo URI signature Source | |
uRIGetUser :: MonadIO m => URI -> m Text Source
uRIHostEqual
uRIHostHash
data URIHostHashMethodInfo Source
((~) (TYPE Lifted) signature (m Word32), MonadIO m) => MethodInfo (TYPE Lifted) URIHostHashMethodInfo URI signature Source | |
uRIHostHash :: MonadIO m => URI -> m Word32 Source
uRINew
uRINewWithBase
uRINormalize
uRISetFragment
uRISetHost
uRISetPassword
uRISetPath
data URISetPathMethodInfo Source
((~) (TYPE Lifted) signature (Text -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) URISetPathMethodInfo URI signature Source | |
uRISetPath :: MonadIO m => URI -> Text -> m () Source
uRISetPort
data URISetPortMethodInfo Source
((~) (TYPE Lifted) signature (Word32 -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) URISetPortMethodInfo URI signature Source | |
uRISetPort :: MonadIO m => URI -> Word32 -> m () Source
uRISetQuery
uRISetQueryFromForm
uRISetScheme
data URISetSchemeMethodInfo Source
((~) (TYPE Lifted) signature (Text -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) URISetSchemeMethodInfo URI signature Source | |
uRISetScheme :: MonadIO m => URI -> Text -> m () Source
uRISetUser
uRIToString
uRIUsesDefaultPort
data URIUsesDefaultPortMethodInfo Source
((~) (TYPE Lifted) signature (m Bool), MonadIO m) => MethodInfo (TYPE Lifted) URIUsesDefaultPortMethodInfo URI signature Source | |
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