packages feed

gi-soup-0.2.52.13: GI/Soup/Objects/Logger.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)
-}

module GI.Soup.Objects.Logger
    ( 

-- * Exported types
    Logger(..)                              ,
    LoggerK                                 ,
    toLogger                                ,
    noLogger                                ,


 -- * Methods
-- ** loggerAttach
    LoggerAttachMethodInfo                  ,
    loggerAttach                            ,


-- ** loggerDetach
    LoggerDetachMethodInfo                  ,
    loggerDetach                            ,


-- ** loggerNew
    loggerNew                               ,


-- ** loggerSetPrinter
    LoggerSetPrinterMethodInfo              ,
    loggerSetPrinter                        ,


-- ** loggerSetRequestFilter
    LoggerSetRequestFilterMethodInfo        ,
    loggerSetRequestFilter                  ,


-- ** loggerSetResponseFilter
    LoggerSetResponseFilterMethodInfo       ,
    loggerSetResponseFilter                 ,




    ) 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.GLib as GLib
import qualified GI.GObject as GObject

newtype Logger = Logger (ForeignPtr Logger)
foreign import ccall "soup_logger_get_type"
    c_soup_logger_get_type :: IO GType

type instance ParentTypes Logger = LoggerParentTypes
type LoggerParentTypes = '[GObject.Object, SessionFeature]

instance GObject Logger where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_soup_logger_get_type
    

class GObject o => LoggerK o
instance (GObject o, IsDescendantOf Logger o) => LoggerK o

toLogger :: LoggerK o => o -> IO Logger
toLogger = unsafeCastTo Logger

noLogger :: Maybe Logger
noLogger = Nothing

type family ResolveLoggerMethod (t :: Symbol) (o :: *) :: * where
    ResolveLoggerMethod "addFeature" o = SessionFeatureAddFeatureMethodInfo
    ResolveLoggerMethod "bindProperty" o = GObject.ObjectBindPropertyMethodInfo
    ResolveLoggerMethod "bindPropertyFull" o = GObject.ObjectBindPropertyFullMethodInfo
    ResolveLoggerMethod "forceFloating" o = GObject.ObjectForceFloatingMethodInfo
    ResolveLoggerMethod "freezeNotify" o = GObject.ObjectFreezeNotifyMethodInfo
    ResolveLoggerMethod "hasFeature" o = SessionFeatureHasFeatureMethodInfo
    ResolveLoggerMethod "isFloating" o = GObject.ObjectIsFloatingMethodInfo
    ResolveLoggerMethod "notify" o = GObject.ObjectNotifyMethodInfo
    ResolveLoggerMethod "notifyByPspec" o = GObject.ObjectNotifyByPspecMethodInfo
    ResolveLoggerMethod "ref" o = GObject.ObjectRefMethodInfo
    ResolveLoggerMethod "refSink" o = GObject.ObjectRefSinkMethodInfo
    ResolveLoggerMethod "removeFeature" o = SessionFeatureRemoveFeatureMethodInfo
    ResolveLoggerMethod "replaceData" o = GObject.ObjectReplaceDataMethodInfo
    ResolveLoggerMethod "replaceQdata" o = GObject.ObjectReplaceQdataMethodInfo
    ResolveLoggerMethod "runDispose" o = GObject.ObjectRunDisposeMethodInfo
    ResolveLoggerMethod "stealData" o = GObject.ObjectStealDataMethodInfo
    ResolveLoggerMethod "stealQdata" o = GObject.ObjectStealQdataMethodInfo
    ResolveLoggerMethod "thawNotify" o = GObject.ObjectThawNotifyMethodInfo
    ResolveLoggerMethod "unref" o = GObject.ObjectUnrefMethodInfo
    ResolveLoggerMethod "watchClosure" o = GObject.ObjectWatchClosureMethodInfo
    ResolveLoggerMethod "getData" o = GObject.ObjectGetDataMethodInfo
    ResolveLoggerMethod "getProperty" o = GObject.ObjectGetPropertyMethodInfo
    ResolveLoggerMethod "getQdata" o = GObject.ObjectGetQdataMethodInfo
    ResolveLoggerMethod "setData" o = GObject.ObjectSetDataMethodInfo
    ResolveLoggerMethod "setPrinter" o = LoggerSetPrinterMethodInfo
    ResolveLoggerMethod "setProperty" o = GObject.ObjectSetPropertyMethodInfo
    ResolveLoggerMethod "setRequestFilter" o = LoggerSetRequestFilterMethodInfo
    ResolveLoggerMethod "setResponseFilter" o = LoggerSetResponseFilterMethodInfo
    ResolveLoggerMethod l o = MethodResolutionFailed l o

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

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

type instance AttributeList Logger = LoggerAttributeList
type LoggerAttributeList = ('[ ] :: [(Symbol, *)])

type instance SignalList Logger = LoggerSignalList
type LoggerSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method Logger::new
-- method type : Constructor
-- Args : [Arg {argCName = "level", argType = TInterface "Soup" "LoggerLogLevel", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "max_body_size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Soup" "Logger"
-- throws : False
-- Skip return : False

foreign import ccall "soup_logger_new" soup_logger_new :: 
    CUInt ->                                -- level : TInterface "Soup" "LoggerLogLevel"
    Int32 ->                                -- max_body_size : TBasicType TInt32
    IO (Ptr Logger)


loggerNew ::
    (MonadIO m) =>
    LoggerLogLevel                          -- level
    -> Int32                                -- maxBodySize
    -> m Logger                             -- result
loggerNew level maxBodySize = liftIO $ do
    let level' = (fromIntegral . fromEnum) level
    result <- soup_logger_new level' maxBodySize
    checkUnexpectedReturnNULL "soup_logger_new" result
    result' <- (wrapObject Logger) result
    return result'

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

foreign import ccall "soup_logger_attach" soup_logger_attach :: 
    Ptr Logger ->                           -- _obj : TInterface "Soup" "Logger"
    Ptr Session ->                          -- session : TInterface "Soup" "Session"
    IO ()

{-# DEPRECATED loggerAttach ["Use soup_session_add_feature() instead."]#-}
loggerAttach ::
    (MonadIO m, LoggerK a, SessionK b) =>
    a                                       -- _obj
    -> b                                    -- session
    -> m ()                                 -- result
loggerAttach _obj session = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let session' = unsafeManagedPtrCastPtr session
    soup_logger_attach _obj' session'
    touchManagedPtr _obj
    touchManagedPtr session
    return ()

data LoggerAttachMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, LoggerK a, SessionK b) => MethodInfo LoggerAttachMethodInfo a signature where
    overloadedMethod _ = loggerAttach

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

foreign import ccall "soup_logger_detach" soup_logger_detach :: 
    Ptr Logger ->                           -- _obj : TInterface "Soup" "Logger"
    Ptr Session ->                          -- session : TInterface "Soup" "Session"
    IO ()

{-# DEPRECATED loggerDetach ["Use soup_session_remove_feature() instead."]#-}
loggerDetach ::
    (MonadIO m, LoggerK a, SessionK b) =>
    a                                       -- _obj
    -> b                                    -- session
    -> m ()                                 -- result
loggerDetach _obj session = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let session' = unsafeManagedPtrCastPtr session
    soup_logger_detach _obj' session'
    touchManagedPtr _obj
    touchManagedPtr session
    return ()

data LoggerDetachMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, LoggerK a, SessionK b) => MethodInfo LoggerDetachMethodInfo a signature where
    overloadedMethod _ = loggerDetach

-- method Logger::set_printer
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Logger", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "printer", argType = TInterface "Soup" "LoggerPrinter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "printer_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "destroy", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "soup_logger_set_printer" soup_logger_set_printer :: 
    Ptr Logger ->                           -- _obj : TInterface "Soup" "Logger"
    FunPtr LoggerPrinterC ->                -- printer : TInterface "Soup" "LoggerPrinter"
    Ptr () ->                               -- printer_data : TBasicType TVoid
    FunPtr GLib.DestroyNotifyC ->           -- destroy : TInterface "GLib" "DestroyNotify"
    IO ()


loggerSetPrinter ::
    (MonadIO m, LoggerK a) =>
    a                                       -- _obj
    -> LoggerPrinter                        -- printer
    -> m ()                                 -- result
loggerSetPrinter _obj printer = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    printer' <- mkLoggerPrinter (loggerPrinterWrapper Nothing printer)
    let printerData = castFunPtrToPtr printer'
    let destroy = safeFreeFunPtrPtr
    soup_logger_set_printer _obj' printer' printerData destroy
    touchManagedPtr _obj
    return ()

data LoggerSetPrinterMethodInfo
instance (signature ~ (LoggerPrinter -> m ()), MonadIO m, LoggerK a) => MethodInfo LoggerSetPrinterMethodInfo a signature where
    overloadedMethod _ = loggerSetPrinter

-- method Logger::set_request_filter
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Logger", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "request_filter", argType = TInterface "Soup" "LoggerFilter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "filter_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "destroy", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "soup_logger_set_request_filter" soup_logger_set_request_filter :: 
    Ptr Logger ->                           -- _obj : TInterface "Soup" "Logger"
    FunPtr LoggerFilterC ->                 -- request_filter : TInterface "Soup" "LoggerFilter"
    Ptr () ->                               -- filter_data : TBasicType TVoid
    FunPtr GLib.DestroyNotifyC ->           -- destroy : TInterface "GLib" "DestroyNotify"
    IO ()


loggerSetRequestFilter ::
    (MonadIO m, LoggerK a) =>
    a                                       -- _obj
    -> LoggerFilter                         -- requestFilter
    -> m ()                                 -- result
loggerSetRequestFilter _obj requestFilter = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    requestFilter' <- mkLoggerFilter (loggerFilterWrapper Nothing requestFilter)
    let filterData = castFunPtrToPtr requestFilter'
    let destroy = safeFreeFunPtrPtr
    soup_logger_set_request_filter _obj' requestFilter' filterData destroy
    touchManagedPtr _obj
    return ()

data LoggerSetRequestFilterMethodInfo
instance (signature ~ (LoggerFilter -> m ()), MonadIO m, LoggerK a) => MethodInfo LoggerSetRequestFilterMethodInfo a signature where
    overloadedMethod _ = loggerSetRequestFilter

-- method Logger::set_response_filter
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Soup" "Logger", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "response_filter", argType = TInterface "Soup" "LoggerFilter", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "filter_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "destroy", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "soup_logger_set_response_filter" soup_logger_set_response_filter :: 
    Ptr Logger ->                           -- _obj : TInterface "Soup" "Logger"
    FunPtr LoggerFilterC ->                 -- response_filter : TInterface "Soup" "LoggerFilter"
    Ptr () ->                               -- filter_data : TBasicType TVoid
    FunPtr GLib.DestroyNotifyC ->           -- destroy : TInterface "GLib" "DestroyNotify"
    IO ()


loggerSetResponseFilter ::
    (MonadIO m, LoggerK a) =>
    a                                       -- _obj
    -> LoggerFilter                         -- responseFilter
    -> m ()                                 -- result
loggerSetResponseFilter _obj responseFilter = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    responseFilter' <- mkLoggerFilter (loggerFilterWrapper Nothing responseFilter)
    let filterData = castFunPtrToPtr responseFilter'
    let destroy = safeFreeFunPtrPtr
    soup_logger_set_response_filter _obj' responseFilter' filterData destroy
    touchManagedPtr _obj
    return ()

data LoggerSetResponseFilterMethodInfo
instance (signature ~ (LoggerFilter -> m ()), MonadIO m, LoggerK a) => MethodInfo LoggerSetResponseFilterMethodInfo a signature where
    overloadedMethod _ = loggerSetResponseFilter