packages feed

gi-soup-0.2.52.13: GI/Soup/Structs/ClientContext.hs


{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

A #SoupClientContext provides additional information about the
client making a particular request. In particular, you can use
soup_client_context_get_auth_domain() and
soup_client_context_get_auth_user() to determine if HTTP
authentication was used successfully.

soup_client_context_get_remote_address() and/or
soup_client_context_get_host() can be used to get information for
logging or debugging purposes. soup_client_context_get_gsocket() may
also be of use in some situations (eg, tracking when multiple
requests are made on the same connection).
-}

module GI.Soup.Structs.ClientContext
    ( 

-- * Exported types
    ClientContext(..)                       ,
    noClientContext                         ,


 -- * Methods
-- ** clientContextGetAddress
    ClientContextGetAddressMethodInfo       ,
    clientContextGetAddress                 ,


-- ** clientContextGetAuthDomain
    ClientContextGetAuthDomainMethodInfo    ,
    clientContextGetAuthDomain              ,


-- ** clientContextGetAuthUser
    ClientContextGetAuthUserMethodInfo      ,
    clientContextGetAuthUser                ,


-- ** clientContextGetGsocket
    ClientContextGetGsocketMethodInfo       ,
    clientContextGetGsocket                 ,


-- ** clientContextGetHost
    ClientContextGetHostMethodInfo          ,
    clientContextGetHost                    ,


-- ** clientContextGetLocalAddress
    ClientContextGetLocalAddressMethodInfo  ,
    clientContextGetLocalAddress            ,


-- ** clientContextGetRemoteAddress
    ClientContextGetRemoteAddressMethodInfo ,
    clientContextGetRemoteAddress           ,


-- ** clientContextGetSocket
    ClientContextGetSocketMethodInfo        ,
    clientContextGetSocket                  ,


-- ** clientContextStealConnection
    ClientContextStealConnectionMethodInfo  ,
    clientContextStealConnection            ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Soup.Types
import GI.Soup.Callbacks
import qualified GI.Gio as Gio

newtype ClientContext = ClientContext (ForeignPtr ClientContext)
foreign import ccall "soup_client_context_get_type" c_soup_client_context_get_type :: 
    IO GType

instance BoxedObject ClientContext where
    boxedType _ = c_soup_client_context_get_type

noClientContext :: Maybe ClientContext
noClientContext = Nothing

-- method ClientContext::get_address
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "ClientContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Soup" "Address"
-- throws : False
-- Skip return : False

foreign import ccall "soup_client_context_get_address" soup_client_context_get_address :: 
    Ptr ClientContext ->                    -- _obj : TInterface "Soup" "ClientContext"
    IO (Ptr Address)

{-# DEPRECATED clientContextGetAddress ["Use soup_client_context_get_remote_address(), which returns","a #GSocketAddress."]#-}
clientContextGetAddress ::
    (MonadIO m) =>
    ClientContext                           -- _obj
    -> m Address                            -- result
clientContextGetAddress _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- soup_client_context_get_address _obj'
    checkUnexpectedReturnNULL "soup_client_context_get_address" result
    result' <- (newObject Address) result
    touchManagedPtr _obj
    return result'

data ClientContextGetAddressMethodInfo
instance (signature ~ (m Address), MonadIO m) => MethodInfo ClientContextGetAddressMethodInfo ClientContext signature where
    overloadedMethod _ = clientContextGetAddress

-- method ClientContext::get_auth_domain
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "ClientContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Soup" "AuthDomain"
-- throws : False
-- Skip return : False

foreign import ccall "soup_client_context_get_auth_domain" soup_client_context_get_auth_domain :: 
    Ptr ClientContext ->                    -- _obj : TInterface "Soup" "ClientContext"
    IO (Ptr AuthDomain)


clientContextGetAuthDomain ::
    (MonadIO m) =>
    ClientContext                           -- _obj
    -> m AuthDomain                         -- result
clientContextGetAuthDomain _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- soup_client_context_get_auth_domain _obj'
    checkUnexpectedReturnNULL "soup_client_context_get_auth_domain" result
    result' <- (newObject AuthDomain) result
    touchManagedPtr _obj
    return result'

data ClientContextGetAuthDomainMethodInfo
instance (signature ~ (m AuthDomain), MonadIO m) => MethodInfo ClientContextGetAuthDomainMethodInfo ClientContext signature where
    overloadedMethod _ = clientContextGetAuthDomain

-- method ClientContext::get_auth_user
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "ClientContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "soup_client_context_get_auth_user" soup_client_context_get_auth_user :: 
    Ptr ClientContext ->                    -- _obj : TInterface "Soup" "ClientContext"
    IO CString


clientContextGetAuthUser ::
    (MonadIO m) =>
    ClientContext                           -- _obj
    -> m T.Text                             -- result
clientContextGetAuthUser _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- soup_client_context_get_auth_user _obj'
    checkUnexpectedReturnNULL "soup_client_context_get_auth_user" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

data ClientContextGetAuthUserMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => MethodInfo ClientContextGetAuthUserMethodInfo ClientContext signature where
    overloadedMethod _ = clientContextGetAuthUser

-- method ClientContext::get_gsocket
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "ClientContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gio" "Socket"
-- throws : False
-- Skip return : False

foreign import ccall "soup_client_context_get_gsocket" soup_client_context_get_gsocket :: 
    Ptr ClientContext ->                    -- _obj : TInterface "Soup" "ClientContext"
    IO (Ptr Gio.Socket)


clientContextGetGsocket ::
    (MonadIO m) =>
    ClientContext                           -- _obj
    -> m Gio.Socket                         -- result
clientContextGetGsocket _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- soup_client_context_get_gsocket _obj'
    checkUnexpectedReturnNULL "soup_client_context_get_gsocket" result
    result' <- (newObject Gio.Socket) result
    touchManagedPtr _obj
    return result'

data ClientContextGetGsocketMethodInfo
instance (signature ~ (m Gio.Socket), MonadIO m) => MethodInfo ClientContextGetGsocketMethodInfo ClientContext signature where
    overloadedMethod _ = clientContextGetGsocket

-- method ClientContext::get_host
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "ClientContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "soup_client_context_get_host" soup_client_context_get_host :: 
    Ptr ClientContext ->                    -- _obj : TInterface "Soup" "ClientContext"
    IO CString


clientContextGetHost ::
    (MonadIO m) =>
    ClientContext                           -- _obj
    -> m T.Text                             -- result
clientContextGetHost _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- soup_client_context_get_host _obj'
    checkUnexpectedReturnNULL "soup_client_context_get_host" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

data ClientContextGetHostMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => MethodInfo ClientContextGetHostMethodInfo ClientContext signature where
    overloadedMethod _ = clientContextGetHost

-- method ClientContext::get_local_address
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "ClientContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gio" "SocketAddress"
-- throws : False
-- Skip return : False

foreign import ccall "soup_client_context_get_local_address" soup_client_context_get_local_address :: 
    Ptr ClientContext ->                    -- _obj : TInterface "Soup" "ClientContext"
    IO (Ptr Gio.SocketAddress)


clientContextGetLocalAddress ::
    (MonadIO m) =>
    ClientContext                           -- _obj
    -> m Gio.SocketAddress                  -- result
clientContextGetLocalAddress _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- soup_client_context_get_local_address _obj'
    checkUnexpectedReturnNULL "soup_client_context_get_local_address" result
    result' <- (newObject Gio.SocketAddress) result
    touchManagedPtr _obj
    return result'

data ClientContextGetLocalAddressMethodInfo
instance (signature ~ (m Gio.SocketAddress), MonadIO m) => MethodInfo ClientContextGetLocalAddressMethodInfo ClientContext signature where
    overloadedMethod _ = clientContextGetLocalAddress

-- method ClientContext::get_remote_address
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "ClientContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gio" "SocketAddress"
-- throws : False
-- Skip return : False

foreign import ccall "soup_client_context_get_remote_address" soup_client_context_get_remote_address :: 
    Ptr ClientContext ->                    -- _obj : TInterface "Soup" "ClientContext"
    IO (Ptr Gio.SocketAddress)


clientContextGetRemoteAddress ::
    (MonadIO m) =>
    ClientContext                           -- _obj
    -> m Gio.SocketAddress                  -- result
clientContextGetRemoteAddress _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- soup_client_context_get_remote_address _obj'
    checkUnexpectedReturnNULL "soup_client_context_get_remote_address" result
    result' <- (newObject Gio.SocketAddress) result
    touchManagedPtr _obj
    return result'

data ClientContextGetRemoteAddressMethodInfo
instance (signature ~ (m Gio.SocketAddress), MonadIO m) => MethodInfo ClientContextGetRemoteAddressMethodInfo ClientContext signature where
    overloadedMethod _ = clientContextGetRemoteAddress

-- method ClientContext::get_socket
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "ClientContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Soup" "Socket"
-- throws : False
-- Skip return : False

foreign import ccall "soup_client_context_get_socket" soup_client_context_get_socket :: 
    Ptr ClientContext ->                    -- _obj : TInterface "Soup" "ClientContext"
    IO (Ptr Socket)

{-# DEPRECATED clientContextGetSocket ["use soup_client_context_get_gsocket(), which returns","a #GSocket."]#-}
clientContextGetSocket ::
    (MonadIO m) =>
    ClientContext                           -- _obj
    -> m Socket                             -- result
clientContextGetSocket _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- soup_client_context_get_socket _obj'
    checkUnexpectedReturnNULL "soup_client_context_get_socket" result
    result' <- (newObject Socket) result
    touchManagedPtr _obj
    return result'

data ClientContextGetSocketMethodInfo
instance (signature ~ (m Socket), MonadIO m) => MethodInfo ClientContextGetSocketMethodInfo ClientContext signature where
    overloadedMethod _ = clientContextGetSocket

-- method ClientContext::steal_connection
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "ClientContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gio" "IOStream"
-- throws : False
-- Skip return : False

foreign import ccall "soup_client_context_steal_connection" soup_client_context_steal_connection :: 
    Ptr ClientContext ->                    -- _obj : TInterface "Soup" "ClientContext"
    IO (Ptr Gio.IOStream)


clientContextStealConnection ::
    (MonadIO m) =>
    ClientContext                           -- _obj
    -> m Gio.IOStream                       -- result
clientContextStealConnection _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- soup_client_context_steal_connection _obj'
    checkUnexpectedReturnNULL "soup_client_context_steal_connection" result
    result' <- (wrapObject Gio.IOStream) result
    touchManagedPtr _obj
    return result'

data ClientContextStealConnectionMethodInfo
instance (signature ~ (m Gio.IOStream), MonadIO m) => MethodInfo ClientContextStealConnectionMethodInfo ClientContext signature where
    overloadedMethod _ = clientContextStealConnection

type family ResolveClientContextMethod (t :: Symbol) (o :: *) :: * where
    ResolveClientContextMethod "stealConnection" o = ClientContextStealConnectionMethodInfo
    ResolveClientContextMethod "getAddress" o = ClientContextGetAddressMethodInfo
    ResolveClientContextMethod "getAuthDomain" o = ClientContextGetAuthDomainMethodInfo
    ResolveClientContextMethod "getAuthUser" o = ClientContextGetAuthUserMethodInfo
    ResolveClientContextMethod "getGsocket" o = ClientContextGetGsocketMethodInfo
    ResolveClientContextMethod "getHost" o = ClientContextGetHostMethodInfo
    ResolveClientContextMethod "getLocalAddress" o = ClientContextGetLocalAddressMethodInfo
    ResolveClientContextMethod "getRemoteAddress" o = ClientContextGetRemoteAddressMethodInfo
    ResolveClientContextMethod "getSocket" o = ClientContextGetSocketMethodInfo
    ResolveClientContextMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveClientContextMethod t ClientContext, MethodInfo info ClientContext p) => IsLabelProxy t (ClientContext -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveClientContextMethod t ClientContext, MethodInfo info ClientContext p) => IsLabel t (ClientContext -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif