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

module GI.Soup.Objects.SessionAsync
    ( 

-- * Exported types
    SessionAsync(..)                        ,
    SessionAsyncK                           ,
    toSessionAsync                          ,
    noSessionAsync                          ,


 -- * Methods
-- ** sessionAsyncNew
    sessionAsyncNew                         ,




    ) 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.GObject as GObject

newtype SessionAsync = SessionAsync (ForeignPtr SessionAsync)
foreign import ccall "soup_session_async_get_type"
    c_soup_session_async_get_type :: IO GType

type instance ParentTypes SessionAsync = SessionAsyncParentTypes
type SessionAsyncParentTypes = '[Session, GObject.Object]

instance GObject SessionAsync where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_soup_session_async_get_type
    

class GObject o => SessionAsyncK o
instance (GObject o, IsDescendantOf SessionAsync o) => SessionAsyncK o

toSessionAsync :: SessionAsyncK o => o -> IO SessionAsync
toSessionAsync = unsafeCastTo SessionAsync

noSessionAsync :: Maybe SessionAsync
noSessionAsync = Nothing

type instance AttributeList SessionAsync = SessionAsyncAttributeList
type SessionAsyncAttributeList = ('[ '("accept-language", SessionAcceptLanguagePropertyInfo), '("accept-language-auto", SessionAcceptLanguageAutoPropertyInfo), '("async-context", SessionAsyncContextPropertyInfo), '("http-aliases", SessionHttpAliasesPropertyInfo), '("https-aliases", SessionHttpsAliasesPropertyInfo), '("idle-timeout", SessionIdleTimeoutPropertyInfo), '("local-address", SessionLocalAddressPropertyInfo), '("max-conns", SessionMaxConnsPropertyInfo), '("max-conns-per-host", SessionMaxConnsPerHostPropertyInfo), '("proxy-resolver", SessionProxyResolverPropertyInfo), '("proxy-uri", SessionProxyUriPropertyInfo), '("ssl-ca-file", SessionSslCaFilePropertyInfo), '("ssl-strict", SessionSslStrictPropertyInfo), '("ssl-use-system-ca-file", SessionSslUseSystemCaFilePropertyInfo), '("timeout", SessionTimeoutPropertyInfo), '("tls-database", SessionTlsDatabasePropertyInfo), '("tls-interaction", SessionTlsInteractionPropertyInfo), '("use-ntlm", SessionUseNtlmPropertyInfo), '("use-thread-context", SessionUseThreadContextPropertyInfo), '("user-agent", SessionUserAgentPropertyInfo)] :: [(Symbol, *)])

type instance SignalList SessionAsync = SessionAsyncSignalList
type SessionAsyncSignalList = ('[ '("authenticate", SessionAuthenticateSignalInfo), '("connection-created", SessionConnectionCreatedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("request-queued", SessionRequestQueuedSignalInfo), '("request-started", SessionRequestStartedSignalInfo), '("request-unqueued", SessionRequestUnqueuedSignalInfo), '("tunneling", SessionTunnelingSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method SessionAsync::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Soup" "SessionAsync"
-- throws : False
-- Skip return : False

foreign import ccall "soup_session_async_new" soup_session_async_new :: 
    IO (Ptr SessionAsync)

{-# DEPRECATED sessionAsyncNew ["#SoupSessionAsync is deprecated; use a plain","#SoupSession, created with soup_session_new(). See the <link","linkend=\"libsoup-session-porting\">porting guide</link>."]#-}
sessionAsyncNew ::
    (MonadIO m) =>
    m SessionAsync
sessionAsyncNew  = liftIO $ do
    result <- soup_session_async_new
    checkUnexpectedReturnNULL "soup_session_async_new" result
    result' <- (wrapObject SessionAsync) result
    return result'