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

/No description available in the introspection data./
-}

#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
       && !defined(__HADDOCK_VERSION__))

module GI.Soup.Objects.AuthDomain
    (

-- * Exported types
    AuthDomain(..)                          ,
    IsAuthDomain                            ,
    toAuthDomain                            ,
    noAuthDomain                            ,


 -- * Methods
-- ** accepts #method:accepts#

#if ENABLE_OVERLOADING
    AuthDomainAcceptsMethodInfo             ,
#endif
    authDomainAccepts                       ,


-- ** addPath #method:addPath#

#if ENABLE_OVERLOADING
    AuthDomainAddPathMethodInfo             ,
#endif
    authDomainAddPath                       ,


-- ** challenge #method:challenge#

#if ENABLE_OVERLOADING
    AuthDomainChallengeMethodInfo           ,
#endif
    authDomainChallenge                     ,


-- ** checkPassword #method:checkPassword#

#if ENABLE_OVERLOADING
    AuthDomainCheckPasswordMethodInfo       ,
#endif
    authDomainCheckPassword                 ,


-- ** covers #method:covers#

#if ENABLE_OVERLOADING
    AuthDomainCoversMethodInfo              ,
#endif
    authDomainCovers                        ,


-- ** getRealm #method:getRealm#

#if ENABLE_OVERLOADING
    AuthDomainGetRealmMethodInfo            ,
#endif
    authDomainGetRealm                      ,


-- ** removePath #method:removePath#

#if ENABLE_OVERLOADING
    AuthDomainRemovePathMethodInfo          ,
#endif
    authDomainRemovePath                    ,


-- ** setFilter #method:setFilter#

#if ENABLE_OVERLOADING
    AuthDomainSetFilterMethodInfo           ,
#endif
    authDomainSetFilter                     ,


-- ** setGenericAuthCallback #method:setGenericAuthCallback#

#if ENABLE_OVERLOADING
    AuthDomainSetGenericAuthCallbackMethodInfo,
#endif
    authDomainSetGenericAuthCallback        ,


-- ** tryGenericAuthCallback #method:tryGenericAuthCallback#

#if ENABLE_OVERLOADING
    AuthDomainTryGenericAuthCallbackMethodInfo,
#endif
    authDomainTryGenericAuthCallback        ,




 -- * Properties
-- ** addPath #attr:addPath#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    AuthDomainAddPathPropertyInfo           ,
#endif
    clearAuthDomainAddPath                  ,
    constructAuthDomainAddPath              ,
    setAuthDomainAddPath                    ,


-- ** filter #attr:filter#
{- | The 'GI.Soup.Callbacks.AuthDomainFilter' for the domain
-}
#if ENABLE_OVERLOADING
    AuthDomainFilterPropertyInfo            ,
#endif
#if ENABLE_OVERLOADING
    authDomainFilter                        ,
#endif
    clearAuthDomainFilter                   ,
    constructAuthDomainFilter               ,
    getAuthDomainFilter                     ,
    setAuthDomainFilter                     ,


-- ** filterData #attr:filterData#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    AuthDomainFilterDataPropertyInfo        ,
#endif
#if ENABLE_OVERLOADING
    authDomainFilterData                    ,
#endif
    constructAuthDomainFilterData           ,
    getAuthDomainFilterData                 ,
    setAuthDomainFilterData                 ,


-- ** genericAuthCallback #attr:genericAuthCallback#
{- | The 'GI.Soup.Callbacks.AuthDomainGenericAuthCallback' for the domain
-}
#if ENABLE_OVERLOADING
    AuthDomainGenericAuthCallbackPropertyInfo,
#endif
#if ENABLE_OVERLOADING
    authDomainGenericAuthCallback           ,
#endif
    clearAuthDomainGenericAuthCallback      ,
    constructAuthDomainGenericAuthCallback  ,
    getAuthDomainGenericAuthCallback        ,
    setAuthDomainGenericAuthCallback        ,


-- ** genericAuthData #attr:genericAuthData#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    AuthDomainGenericAuthDataPropertyInfo   ,
#endif
#if ENABLE_OVERLOADING
    authDomainGenericAuthData               ,
#endif
    constructAuthDomainGenericAuthData      ,
    getAuthDomainGenericAuthData            ,
    setAuthDomainGenericAuthData            ,


-- ** proxy #attr:proxy#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    AuthDomainProxyPropertyInfo             ,
#endif
#if ENABLE_OVERLOADING
    authDomainProxy                         ,
#endif
    constructAuthDomainProxy                ,
    getAuthDomainProxy                      ,


-- ** realm #attr:realm#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    AuthDomainRealmPropertyInfo             ,
#endif
#if ENABLE_OVERLOADING
    authDomainRealm                         ,
#endif
    constructAuthDomainRealm                ,
    getAuthDomainRealm                      ,


-- ** removePath #attr:removePath#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    AuthDomainRemovePathPropertyInfo        ,
#endif
    clearAuthDomainRemovePath               ,
    constructAuthDomainRemovePath           ,
    setAuthDomainRemovePath                 ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL

import qualified GI.GLib.Callbacks as GLib.Callbacks
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Soup.Callbacks as Soup.Callbacks
import {-# SOURCE #-} qualified GI.Soup.Objects.Message as Soup.Message

-- | Memory-managed wrapper type.
newtype AuthDomain = AuthDomain (ManagedPtr AuthDomain)
foreign import ccall "soup_auth_domain_get_type"
    c_soup_auth_domain_get_type :: IO GType

instance GObject AuthDomain where
    gobjectType = c_soup_auth_domain_get_type


-- | Type class for types which can be safely cast to `AuthDomain`, for instance with `toAuthDomain`.
class (GObject o, O.IsDescendantOf AuthDomain o) => IsAuthDomain o
instance (GObject o, O.IsDescendantOf AuthDomain o) => IsAuthDomain o

instance O.HasParentTypes AuthDomain
type instance O.ParentTypes AuthDomain = '[GObject.Object.Object]

-- | Cast to `AuthDomain`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toAuthDomain :: (MonadIO m, IsAuthDomain o) => o -> m AuthDomain
toAuthDomain = liftIO . unsafeCastTo AuthDomain

-- | A convenience alias for `Nothing` :: `Maybe` `AuthDomain`.
noAuthDomain :: Maybe AuthDomain
noAuthDomain = Nothing

#if ENABLE_OVERLOADING
type family ResolveAuthDomainMethod (t :: Symbol) (o :: *) :: * where
    ResolveAuthDomainMethod "accepts" o = AuthDomainAcceptsMethodInfo
    ResolveAuthDomainMethod "addPath" o = AuthDomainAddPathMethodInfo
    ResolveAuthDomainMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveAuthDomainMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveAuthDomainMethod "challenge" o = AuthDomainChallengeMethodInfo
    ResolveAuthDomainMethod "checkPassword" o = AuthDomainCheckPasswordMethodInfo
    ResolveAuthDomainMethod "covers" o = AuthDomainCoversMethodInfo
    ResolveAuthDomainMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveAuthDomainMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveAuthDomainMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveAuthDomainMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveAuthDomainMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveAuthDomainMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveAuthDomainMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveAuthDomainMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveAuthDomainMethod "removePath" o = AuthDomainRemovePathMethodInfo
    ResolveAuthDomainMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveAuthDomainMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveAuthDomainMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveAuthDomainMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveAuthDomainMethod "tryGenericAuthCallback" o = AuthDomainTryGenericAuthCallbackMethodInfo
    ResolveAuthDomainMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveAuthDomainMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveAuthDomainMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveAuthDomainMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveAuthDomainMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveAuthDomainMethod "getRealm" o = AuthDomainGetRealmMethodInfo
    ResolveAuthDomainMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveAuthDomainMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveAuthDomainMethod "setFilter" o = AuthDomainSetFilterMethodInfo
    ResolveAuthDomainMethod "setGenericAuthCallback" o = AuthDomainSetGenericAuthCallbackMethodInfo
    ResolveAuthDomainMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveAuthDomainMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveAuthDomainMethod t AuthDomain, O.MethodInfo info AuthDomain p) => OL.IsLabel t (AuthDomain -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

#endif

-- VVV Prop "add-path"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyWritable]
   -- Nullable: (Nothing,Nothing)

{- |
Set the value of the “@add-path@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' authDomain [ #addPath 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAuthDomainAddPath :: (MonadIO m, IsAuthDomain o) => o -> T.Text -> m ()
setAuthDomainAddPath obj val = liftIO $ B.Properties.setObjectPropertyString obj "add-path" (Just val)

{- |
Construct a `GValueConstruct` with valid value for the “@add-path@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructAuthDomainAddPath :: (IsAuthDomain o) => T.Text -> IO (GValueConstruct o)
constructAuthDomainAddPath val = B.Properties.constructObjectPropertyString "add-path" (Just val)

{- |
Set the value of the “@add-path@” property to `Nothing`.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.clear' #addPath
@
-}
clearAuthDomainAddPath :: (MonadIO m, IsAuthDomain o) => o -> m ()
clearAuthDomainAddPath obj = liftIO $ B.Properties.setObjectPropertyString obj "add-path" (Nothing :: Maybe T.Text)

#if ENABLE_OVERLOADING
data AuthDomainAddPathPropertyInfo
instance AttrInfo AuthDomainAddPathPropertyInfo where
    type AttrAllowedOps AuthDomainAddPathPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrClear]
    type AttrSetTypeConstraint AuthDomainAddPathPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint AuthDomainAddPathPropertyInfo = IsAuthDomain
    type AttrGetType AuthDomainAddPathPropertyInfo = ()
    type AttrLabel AuthDomainAddPathPropertyInfo = "add-path"
    type AttrOrigin AuthDomainAddPathPropertyInfo = AuthDomain
    attrGet _ = undefined
    attrSet _ = setAuthDomainAddPath
    attrConstruct _ = constructAuthDomainAddPath
    attrClear _ = clearAuthDomainAddPath
#endif

-- VVV Prop "filter"
   -- Type: TInterface (Name {namespace = "Soup", name = "AuthDomainFilter"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

{- |
Get the value of the “@filter@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' authDomain #filter
@
-}
getAuthDomainFilter :: (MonadIO m, IsAuthDomain o) => o -> m (Maybe Soup.Callbacks.AuthDomainFilter_WithClosures)
getAuthDomainFilter obj = liftIO $ B.Properties.getObjectPropertyCallback obj "filter" Soup.Callbacks.dynamic_AuthDomainFilter

{- |
Set the value of the “@filter@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' authDomain [ #filter 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAuthDomainFilter :: (MonadIO m, IsAuthDomain o) => o -> FunPtr Soup.Callbacks.C_AuthDomainFilter -> m ()
setAuthDomainFilter obj val = liftIO $ B.Properties.setObjectPropertyCallback obj "filter" val

{- |
Construct a `GValueConstruct` with valid value for the “@filter@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructAuthDomainFilter :: (IsAuthDomain o) => FunPtr Soup.Callbacks.C_AuthDomainFilter -> IO (GValueConstruct o)
constructAuthDomainFilter val = B.Properties.constructObjectPropertyCallback "filter" val

{- |
Set the value of the “@filter@” property to `Nothing`.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.clear' #filter
@
-}
clearAuthDomainFilter :: (MonadIO m, IsAuthDomain o) => o -> m ()
clearAuthDomainFilter obj = liftIO $ B.Properties.setObjectPropertyCallback obj "filter" FP.nullFunPtr

#if ENABLE_OVERLOADING
data AuthDomainFilterPropertyInfo
instance AttrInfo AuthDomainFilterPropertyInfo where
    type AttrAllowedOps AuthDomainFilterPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AuthDomainFilterPropertyInfo = (~) (FunPtr Soup.Callbacks.C_AuthDomainFilter)
    type AttrBaseTypeConstraint AuthDomainFilterPropertyInfo = IsAuthDomain
    type AttrGetType AuthDomainFilterPropertyInfo = (Maybe Soup.Callbacks.AuthDomainFilter_WithClosures)
    type AttrLabel AuthDomainFilterPropertyInfo = "filter"
    type AttrOrigin AuthDomainFilterPropertyInfo = AuthDomain
    attrGet _ = getAuthDomainFilter
    attrSet _ = setAuthDomainFilter
    attrConstruct _ = constructAuthDomainFilter
    attrClear _ = clearAuthDomainFilter
#endif

-- VVV Prop "filter-data"
   -- Type: TBasicType TPtr
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

{- |
Get the value of the “@filter-data@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' authDomain #filterData
@
-}
getAuthDomainFilterData :: (MonadIO m, IsAuthDomain o) => o -> m (Ptr ())
getAuthDomainFilterData obj = liftIO $ B.Properties.getObjectPropertyPtr obj "filter-data"

{- |
Set the value of the “@filter-data@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' authDomain [ #filterData 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAuthDomainFilterData :: (MonadIO m, IsAuthDomain o) => o -> Ptr () -> m ()
setAuthDomainFilterData obj val = liftIO $ B.Properties.setObjectPropertyPtr obj "filter-data" val

{- |
Construct a `GValueConstruct` with valid value for the “@filter-data@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructAuthDomainFilterData :: (IsAuthDomain o) => Ptr () -> IO (GValueConstruct o)
constructAuthDomainFilterData val = B.Properties.constructObjectPropertyPtr "filter-data" val

#if ENABLE_OVERLOADING
data AuthDomainFilterDataPropertyInfo
instance AttrInfo AuthDomainFilterDataPropertyInfo where
    type AttrAllowedOps AuthDomainFilterDataPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint AuthDomainFilterDataPropertyInfo = (~) (Ptr ())
    type AttrBaseTypeConstraint AuthDomainFilterDataPropertyInfo = IsAuthDomain
    type AttrGetType AuthDomainFilterDataPropertyInfo = (Ptr ())
    type AttrLabel AuthDomainFilterDataPropertyInfo = "filter-data"
    type AttrOrigin AuthDomainFilterDataPropertyInfo = AuthDomain
    attrGet _ = getAuthDomainFilterData
    attrSet _ = setAuthDomainFilterData
    attrConstruct _ = constructAuthDomainFilterData
    attrClear _ = undefined
#endif

-- VVV Prop "generic-auth-callback"
   -- Type: TInterface (Name {namespace = "Soup", name = "AuthDomainGenericAuthCallback"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

{- |
Get the value of the “@generic-auth-callback@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' authDomain #genericAuthCallback
@
-}
getAuthDomainGenericAuthCallback :: (MonadIO m, IsAuthDomain o) => o -> m (Maybe Soup.Callbacks.AuthDomainGenericAuthCallback_WithClosures)
getAuthDomainGenericAuthCallback obj = liftIO $ B.Properties.getObjectPropertyCallback obj "generic-auth-callback" Soup.Callbacks.dynamic_AuthDomainGenericAuthCallback

{- |
Set the value of the “@generic-auth-callback@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' authDomain [ #genericAuthCallback 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAuthDomainGenericAuthCallback :: (MonadIO m, IsAuthDomain o) => o -> FunPtr Soup.Callbacks.C_AuthDomainGenericAuthCallback -> m ()
setAuthDomainGenericAuthCallback obj val = liftIO $ B.Properties.setObjectPropertyCallback obj "generic-auth-callback" val

{- |
Construct a `GValueConstruct` with valid value for the “@generic-auth-callback@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructAuthDomainGenericAuthCallback :: (IsAuthDomain o) => FunPtr Soup.Callbacks.C_AuthDomainGenericAuthCallback -> IO (GValueConstruct o)
constructAuthDomainGenericAuthCallback val = B.Properties.constructObjectPropertyCallback "generic-auth-callback" val

{- |
Set the value of the “@generic-auth-callback@” property to `Nothing`.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.clear' #genericAuthCallback
@
-}
clearAuthDomainGenericAuthCallback :: (MonadIO m, IsAuthDomain o) => o -> m ()
clearAuthDomainGenericAuthCallback obj = liftIO $ B.Properties.setObjectPropertyCallback obj "generic-auth-callback" FP.nullFunPtr

#if ENABLE_OVERLOADING
data AuthDomainGenericAuthCallbackPropertyInfo
instance AttrInfo AuthDomainGenericAuthCallbackPropertyInfo where
    type AttrAllowedOps AuthDomainGenericAuthCallbackPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AuthDomainGenericAuthCallbackPropertyInfo = (~) (FunPtr Soup.Callbacks.C_AuthDomainGenericAuthCallback)
    type AttrBaseTypeConstraint AuthDomainGenericAuthCallbackPropertyInfo = IsAuthDomain
    type AttrGetType AuthDomainGenericAuthCallbackPropertyInfo = (Maybe Soup.Callbacks.AuthDomainGenericAuthCallback_WithClosures)
    type AttrLabel AuthDomainGenericAuthCallbackPropertyInfo = "generic-auth-callback"
    type AttrOrigin AuthDomainGenericAuthCallbackPropertyInfo = AuthDomain
    attrGet _ = getAuthDomainGenericAuthCallback
    attrSet _ = setAuthDomainGenericAuthCallback
    attrConstruct _ = constructAuthDomainGenericAuthCallback
    attrClear _ = clearAuthDomainGenericAuthCallback
#endif

-- VVV Prop "generic-auth-data"
   -- Type: TBasicType TPtr
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

{- |
Get the value of the “@generic-auth-data@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' authDomain #genericAuthData
@
-}
getAuthDomainGenericAuthData :: (MonadIO m, IsAuthDomain o) => o -> m (Ptr ())
getAuthDomainGenericAuthData obj = liftIO $ B.Properties.getObjectPropertyPtr obj "generic-auth-data"

{- |
Set the value of the “@generic-auth-data@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' authDomain [ #genericAuthData 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAuthDomainGenericAuthData :: (MonadIO m, IsAuthDomain o) => o -> Ptr () -> m ()
setAuthDomainGenericAuthData obj val = liftIO $ B.Properties.setObjectPropertyPtr obj "generic-auth-data" val

{- |
Construct a `GValueConstruct` with valid value for the “@generic-auth-data@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructAuthDomainGenericAuthData :: (IsAuthDomain o) => Ptr () -> IO (GValueConstruct o)
constructAuthDomainGenericAuthData val = B.Properties.constructObjectPropertyPtr "generic-auth-data" val

#if ENABLE_OVERLOADING
data AuthDomainGenericAuthDataPropertyInfo
instance AttrInfo AuthDomainGenericAuthDataPropertyInfo where
    type AttrAllowedOps AuthDomainGenericAuthDataPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint AuthDomainGenericAuthDataPropertyInfo = (~) (Ptr ())
    type AttrBaseTypeConstraint AuthDomainGenericAuthDataPropertyInfo = IsAuthDomain
    type AttrGetType AuthDomainGenericAuthDataPropertyInfo = (Ptr ())
    type AttrLabel AuthDomainGenericAuthDataPropertyInfo = "generic-auth-data"
    type AttrOrigin AuthDomainGenericAuthDataPropertyInfo = AuthDomain
    attrGet _ = getAuthDomainGenericAuthData
    attrSet _ = setAuthDomainGenericAuthData
    attrConstruct _ = constructAuthDomainGenericAuthData
    attrClear _ = undefined
#endif

-- VVV Prop "proxy"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Nothing,Nothing)

{- |
Get the value of the “@proxy@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' authDomain #proxy
@
-}
getAuthDomainProxy :: (MonadIO m, IsAuthDomain o) => o -> m Bool
getAuthDomainProxy obj = liftIO $ B.Properties.getObjectPropertyBool obj "proxy"

{- |
Construct a `GValueConstruct` with valid value for the “@proxy@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructAuthDomainProxy :: (IsAuthDomain o) => Bool -> IO (GValueConstruct o)
constructAuthDomainProxy val = B.Properties.constructObjectPropertyBool "proxy" val

#if ENABLE_OVERLOADING
data AuthDomainProxyPropertyInfo
instance AttrInfo AuthDomainProxyPropertyInfo where
    type AttrAllowedOps AuthDomainProxyPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint AuthDomainProxyPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint AuthDomainProxyPropertyInfo = IsAuthDomain
    type AttrGetType AuthDomainProxyPropertyInfo = Bool
    type AttrLabel AuthDomainProxyPropertyInfo = "proxy"
    type AttrOrigin AuthDomainProxyPropertyInfo = AuthDomain
    attrGet _ = getAuthDomainProxy
    attrSet _ = undefined
    attrConstruct _ = constructAuthDomainProxy
    attrClear _ = undefined
#endif

-- VVV Prop "realm"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Just False,Nothing)

{- |
Get the value of the “@realm@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' authDomain #realm
@
-}
getAuthDomainRealm :: (MonadIO m, IsAuthDomain o) => o -> m T.Text
getAuthDomainRealm obj = liftIO $ checkUnexpectedNothing "getAuthDomainRealm" $ B.Properties.getObjectPropertyString obj "realm"

{- |
Construct a `GValueConstruct` with valid value for the “@realm@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructAuthDomainRealm :: (IsAuthDomain o) => T.Text -> IO (GValueConstruct o)
constructAuthDomainRealm val = B.Properties.constructObjectPropertyString "realm" (Just val)

#if ENABLE_OVERLOADING
data AuthDomainRealmPropertyInfo
instance AttrInfo AuthDomainRealmPropertyInfo where
    type AttrAllowedOps AuthDomainRealmPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AuthDomainRealmPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint AuthDomainRealmPropertyInfo = IsAuthDomain
    type AttrGetType AuthDomainRealmPropertyInfo = T.Text
    type AttrLabel AuthDomainRealmPropertyInfo = "realm"
    type AttrOrigin AuthDomainRealmPropertyInfo = AuthDomain
    attrGet _ = getAuthDomainRealm
    attrSet _ = undefined
    attrConstruct _ = constructAuthDomainRealm
    attrClear _ = undefined
#endif

-- VVV Prop "remove-path"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyWritable]
   -- Nullable: (Nothing,Nothing)

{- |
Set the value of the “@remove-path@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' authDomain [ #removePath 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAuthDomainRemovePath :: (MonadIO m, IsAuthDomain o) => o -> T.Text -> m ()
setAuthDomainRemovePath obj val = liftIO $ B.Properties.setObjectPropertyString obj "remove-path" (Just val)

{- |
Construct a `GValueConstruct` with valid value for the “@remove-path@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructAuthDomainRemovePath :: (IsAuthDomain o) => T.Text -> IO (GValueConstruct o)
constructAuthDomainRemovePath val = B.Properties.constructObjectPropertyString "remove-path" (Just val)

{- |
Set the value of the “@remove-path@” property to `Nothing`.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.clear' #removePath
@
-}
clearAuthDomainRemovePath :: (MonadIO m, IsAuthDomain o) => o -> m ()
clearAuthDomainRemovePath obj = liftIO $ B.Properties.setObjectPropertyString obj "remove-path" (Nothing :: Maybe T.Text)

#if ENABLE_OVERLOADING
data AuthDomainRemovePathPropertyInfo
instance AttrInfo AuthDomainRemovePathPropertyInfo where
    type AttrAllowedOps AuthDomainRemovePathPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrClear]
    type AttrSetTypeConstraint AuthDomainRemovePathPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint AuthDomainRemovePathPropertyInfo = IsAuthDomain
    type AttrGetType AuthDomainRemovePathPropertyInfo = ()
    type AttrLabel AuthDomainRemovePathPropertyInfo = "remove-path"
    type AttrOrigin AuthDomainRemovePathPropertyInfo = AuthDomain
    attrGet _ = undefined
    attrSet _ = setAuthDomainRemovePath
    attrConstruct _ = constructAuthDomainRemovePath
    attrClear _ = clearAuthDomainRemovePath
#endif

#if ENABLE_OVERLOADING
instance O.HasAttributeList AuthDomain
type instance O.AttributeList AuthDomain = AuthDomainAttributeList
type AuthDomainAttributeList = ('[ '("addPath", AuthDomainAddPathPropertyInfo), '("filter", AuthDomainFilterPropertyInfo), '("filterData", AuthDomainFilterDataPropertyInfo), '("genericAuthCallback", AuthDomainGenericAuthCallbackPropertyInfo), '("genericAuthData", AuthDomainGenericAuthDataPropertyInfo), '("proxy", AuthDomainProxyPropertyInfo), '("realm", AuthDomainRealmPropertyInfo), '("removePath", AuthDomainRemovePathPropertyInfo)] :: [(Symbol, *)])
#endif

#if ENABLE_OVERLOADING
authDomainFilter :: AttrLabelProxy "filter"
authDomainFilter = AttrLabelProxy

authDomainFilterData :: AttrLabelProxy "filterData"
authDomainFilterData = AttrLabelProxy

authDomainGenericAuthCallback :: AttrLabelProxy "genericAuthCallback"
authDomainGenericAuthCallback = AttrLabelProxy

authDomainGenericAuthData :: AttrLabelProxy "genericAuthData"
authDomainGenericAuthData = AttrLabelProxy

authDomainProxy :: AttrLabelProxy "proxy"
authDomainProxy = AttrLabelProxy

authDomainRealm :: AttrLabelProxy "realm"
authDomainRealm = AttrLabelProxy

#endif

#if ENABLE_OVERLOADING
type instance O.SignalList AuthDomain = AuthDomainSignalList
type AuthDomainSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

#endif

-- method AuthDomain::accepts
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "domain", argType = TInterface (Name {namespace = "Soup", name = "AuthDomain"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupAuthDomain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "msg", argType = TInterface (Name {namespace = "Soup", name = "Message"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupMessage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "soup_auth_domain_accepts" soup_auth_domain_accepts ::
    Ptr AuthDomain ->                       -- domain : TInterface (Name {namespace = "Soup", name = "AuthDomain"})
    Ptr Soup.Message.Message ->             -- msg : TInterface (Name {namespace = "Soup", name = "Message"})
    IO CString

{- |
Checks if /@msg@/ contains appropriate authorization for /@domain@/ to
accept it. Mirroring 'GI.Soup.Objects.AuthDomain.authDomainCovers', this does not check
whether or not /@domain@/ \<emphasis>cares\<\/emphasis> if /@msg@/ is
authorized.

This is used by 'GI.Soup.Objects.Server.Server' internally and is probably of no use to
anyone else.
-}
authDomainAccepts ::
    (B.CallStack.HasCallStack, MonadIO m, IsAuthDomain a, Soup.Message.IsMessage b) =>
    a
    {- ^ /@domain@/: a 'GI.Soup.Objects.AuthDomain.AuthDomain' -}
    -> b
    {- ^ /@msg@/: a 'GI.Soup.Objects.Message.Message' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the username that /@msg@/ has authenticated
as, if in fact it has authenticated. 'Nothing' otherwise. -}
authDomainAccepts domain msg = liftIO $ do
    domain' <- unsafeManagedPtrCastPtr domain
    msg' <- unsafeManagedPtrCastPtr msg
    result <- soup_auth_domain_accepts domain' msg'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        freeMem result'
        return result''
    touchManagedPtr domain
    touchManagedPtr msg
    return maybeResult

#if ENABLE_OVERLOADING
data AuthDomainAcceptsMethodInfo
instance (signature ~ (b -> m (Maybe T.Text)), MonadIO m, IsAuthDomain a, Soup.Message.IsMessage b) => O.MethodInfo AuthDomainAcceptsMethodInfo a signature where
    overloadedMethod _ = authDomainAccepts

#endif

-- method AuthDomain::add_path
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "domain", argType = TInterface (Name {namespace = "Soup", name = "AuthDomain"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupAuthDomain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the path to add to @domain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "soup_auth_domain_add_path" soup_auth_domain_add_path ::
    Ptr AuthDomain ->                       -- domain : TInterface (Name {namespace = "Soup", name = "AuthDomain"})
    CString ->                              -- path : TBasicType TUTF8
    IO ()

{- |
Adds /@path@/ to /@domain@/, such that requests under /@path@/ on /@domain@/\'s
server will require authentication (unless overridden by
'GI.Soup.Objects.AuthDomain.authDomainRemovePath' or 'GI.Soup.Objects.AuthDomain.authDomainSetFilter').

You can also add paths by setting the 'GI.Soup.Constants.AUTH_DOMAIN_ADD_PATH'
property, which can also be used to add one or more paths at
construct time.
-}
authDomainAddPath ::
    (B.CallStack.HasCallStack, MonadIO m, IsAuthDomain a) =>
    a
    {- ^ /@domain@/: a 'GI.Soup.Objects.AuthDomain.AuthDomain' -}
    -> T.Text
    {- ^ /@path@/: the path to add to /@domain@/ -}
    -> m ()
authDomainAddPath domain path = liftIO $ do
    domain' <- unsafeManagedPtrCastPtr domain
    path' <- textToCString path
    soup_auth_domain_add_path domain' path'
    touchManagedPtr domain
    freeMem path'
    return ()

#if ENABLE_OVERLOADING
data AuthDomainAddPathMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsAuthDomain a) => O.MethodInfo AuthDomainAddPathMethodInfo a signature where
    overloadedMethod _ = authDomainAddPath

#endif

-- method AuthDomain::challenge
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "domain", argType = TInterface (Name {namespace = "Soup", name = "AuthDomain"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupAuthDomain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "msg", argType = TInterface (Name {namespace = "Soup", name = "Message"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupMessage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "soup_auth_domain_challenge" soup_auth_domain_challenge ::
    Ptr AuthDomain ->                       -- domain : TInterface (Name {namespace = "Soup", name = "AuthDomain"})
    Ptr Soup.Message.Message ->             -- msg : TInterface (Name {namespace = "Soup", name = "Message"})
    IO ()

{- |
Adds a \"WWW-Authenticate\" or \"Proxy-Authenticate\" header to /@msg@/,
requesting that the client authenticate, and sets /@msg@/\'s status
accordingly.

This is used by 'GI.Soup.Objects.Server.Server' internally and is probably of no use to
anyone else.
-}
authDomainChallenge ::
    (B.CallStack.HasCallStack, MonadIO m, IsAuthDomain a, Soup.Message.IsMessage b) =>
    a
    {- ^ /@domain@/: a 'GI.Soup.Objects.AuthDomain.AuthDomain' -}
    -> b
    {- ^ /@msg@/: a 'GI.Soup.Objects.Message.Message' -}
    -> m ()
authDomainChallenge domain msg = liftIO $ do
    domain' <- unsafeManagedPtrCastPtr domain
    msg' <- unsafeManagedPtrCastPtr msg
    soup_auth_domain_challenge domain' msg'
    touchManagedPtr domain
    touchManagedPtr msg
    return ()

#if ENABLE_OVERLOADING
data AuthDomainChallengeMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsAuthDomain a, Soup.Message.IsMessage b) => O.MethodInfo AuthDomainChallengeMethodInfo a signature where
    overloadedMethod _ = authDomainChallenge

#endif

-- method AuthDomain::check_password
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "domain", argType = TInterface (Name {namespace = "Soup", name = "AuthDomain"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupAuthDomain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "msg", argType = TInterface (Name {namespace = "Soup", name = "Message"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupMessage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "username", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a username", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "password", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a password", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "soup_auth_domain_check_password" soup_auth_domain_check_password ::
    Ptr AuthDomain ->                       -- domain : TInterface (Name {namespace = "Soup", name = "AuthDomain"})
    Ptr Soup.Message.Message ->             -- msg : TInterface (Name {namespace = "Soup", name = "Message"})
    CString ->                              -- username : TBasicType TUTF8
    CString ->                              -- password : TBasicType TUTF8
    IO CInt

{- |
Checks if /@msg@/ authenticates to /@domain@/ via /@username@/ and
/@password@/. This would normally be called from a
'GI.Soup.Callbacks.AuthDomainGenericAuthCallback'.
-}
authDomainCheckPassword ::
    (B.CallStack.HasCallStack, MonadIO m, IsAuthDomain a, Soup.Message.IsMessage b) =>
    a
    {- ^ /@domain@/: a 'GI.Soup.Objects.AuthDomain.AuthDomain' -}
    -> b
    {- ^ /@msg@/: a 'GI.Soup.Objects.Message.Message' -}
    -> T.Text
    {- ^ /@username@/: a username -}
    -> T.Text
    {- ^ /@password@/: a password -}
    -> m Bool
    {- ^ __Returns:__ whether or not the message is authenticated -}
authDomainCheckPassword domain msg username password = liftIO $ do
    domain' <- unsafeManagedPtrCastPtr domain
    msg' <- unsafeManagedPtrCastPtr msg
    username' <- textToCString username
    password' <- textToCString password
    result <- soup_auth_domain_check_password domain' msg' username' password'
    let result' = (/= 0) result
    touchManagedPtr domain
    touchManagedPtr msg
    freeMem username'
    freeMem password'
    return result'

#if ENABLE_OVERLOADING
data AuthDomainCheckPasswordMethodInfo
instance (signature ~ (b -> T.Text -> T.Text -> m Bool), MonadIO m, IsAuthDomain a, Soup.Message.IsMessage b) => O.MethodInfo AuthDomainCheckPasswordMethodInfo a signature where
    overloadedMethod _ = authDomainCheckPassword

#endif

-- method AuthDomain::covers
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "domain", argType = TInterface (Name {namespace = "Soup", name = "AuthDomain"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupAuthDomain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "msg", argType = TInterface (Name {namespace = "Soup", name = "Message"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupMessage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "soup_auth_domain_covers" soup_auth_domain_covers ::
    Ptr AuthDomain ->                       -- domain : TInterface (Name {namespace = "Soup", name = "AuthDomain"})
    Ptr Soup.Message.Message ->             -- msg : TInterface (Name {namespace = "Soup", name = "Message"})
    IO CInt

{- |
Checks if /@domain@/ requires /@msg@/ to be authenticated (according to
its paths and filter function). This does not actually look at
whether /@msg@/ \<emphasis>is\<\/emphasis> authenticated, merely whether
or not it needs to be.

This is used by 'GI.Soup.Objects.Server.Server' internally and is probably of no use to
anyone else.
-}
authDomainCovers ::
    (B.CallStack.HasCallStack, MonadIO m, IsAuthDomain a, Soup.Message.IsMessage b) =>
    a
    {- ^ /@domain@/: a 'GI.Soup.Objects.AuthDomain.AuthDomain' -}
    -> b
    {- ^ /@msg@/: a 'GI.Soup.Objects.Message.Message' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if /@domain@/ requires /@msg@/ to be authenticated -}
authDomainCovers domain msg = liftIO $ do
    domain' <- unsafeManagedPtrCastPtr domain
    msg' <- unsafeManagedPtrCastPtr msg
    result <- soup_auth_domain_covers domain' msg'
    let result' = (/= 0) result
    touchManagedPtr domain
    touchManagedPtr msg
    return result'

#if ENABLE_OVERLOADING
data AuthDomainCoversMethodInfo
instance (signature ~ (b -> m Bool), MonadIO m, IsAuthDomain a, Soup.Message.IsMessage b) => O.MethodInfo AuthDomainCoversMethodInfo a signature where
    overloadedMethod _ = authDomainCovers

#endif

-- method AuthDomain::get_realm
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "domain", argType = TInterface (Name {namespace = "Soup", name = "AuthDomain"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupAuthDomain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "soup_auth_domain_get_realm" soup_auth_domain_get_realm ::
    Ptr AuthDomain ->                       -- domain : TInterface (Name {namespace = "Soup", name = "AuthDomain"})
    IO CString

{- |
Gets the realm name associated with /@domain@/
-}
authDomainGetRealm ::
    (B.CallStack.HasCallStack, MonadIO m, IsAuthDomain a) =>
    a
    {- ^ /@domain@/: a 'GI.Soup.Objects.AuthDomain.AuthDomain' -}
    -> m T.Text
    {- ^ __Returns:__ /@domain@/\'s realm -}
authDomainGetRealm domain = liftIO $ do
    domain' <- unsafeManagedPtrCastPtr domain
    result <- soup_auth_domain_get_realm domain'
    checkUnexpectedReturnNULL "authDomainGetRealm" result
    result' <- cstringToText result
    touchManagedPtr domain
    return result'

#if ENABLE_OVERLOADING
data AuthDomainGetRealmMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsAuthDomain a) => O.MethodInfo AuthDomainGetRealmMethodInfo a signature where
    overloadedMethod _ = authDomainGetRealm

#endif

-- method AuthDomain::remove_path
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "domain", argType = TInterface (Name {namespace = "Soup", name = "AuthDomain"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupAuthDomain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the path to remove from @domain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "soup_auth_domain_remove_path" soup_auth_domain_remove_path ::
    Ptr AuthDomain ->                       -- domain : TInterface (Name {namespace = "Soup", name = "AuthDomain"})
    CString ->                              -- path : TBasicType TUTF8
    IO ()

{- |
Removes /@path@/ from /@domain@/, such that requests under /@path@/ on
/@domain@/\'s server will NOT require authentication.

This is not simply an undo-er for 'GI.Soup.Objects.AuthDomain.authDomainAddPath'; it
can be used to \"carve out\" a subtree that does not require
authentication inside a hierarchy that does. Note also that unlike
with 'GI.Soup.Objects.AuthDomain.authDomainAddPath', this cannot be overridden by
adding a filter, as filters can only bypass authentication that
would otherwise be required, not require it where it would
otherwise be unnecessary.

You can also remove paths by setting the
'GI.Soup.Constants.AUTH_DOMAIN_REMOVE_PATH' property, which can also be used to
remove one or more paths at construct time.
-}
authDomainRemovePath ::
    (B.CallStack.HasCallStack, MonadIO m, IsAuthDomain a) =>
    a
    {- ^ /@domain@/: a 'GI.Soup.Objects.AuthDomain.AuthDomain' -}
    -> T.Text
    {- ^ /@path@/: the path to remove from /@domain@/ -}
    -> m ()
authDomainRemovePath domain path = liftIO $ do
    domain' <- unsafeManagedPtrCastPtr domain
    path' <- textToCString path
    soup_auth_domain_remove_path domain' path'
    touchManagedPtr domain
    freeMem path'
    return ()

#if ENABLE_OVERLOADING
data AuthDomainRemovePathMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsAuthDomain a) => O.MethodInfo AuthDomainRemovePathMethodInfo a signature where
    overloadedMethod _ = authDomainRemovePath

#endif

-- method AuthDomain::set_filter
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "domain", argType = TInterface (Name {namespace = "Soup", name = "AuthDomain"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupAuthDomain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "filter", argType = TInterface (Name {namespace = "Soup", name = "AuthDomainFilter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the auth filter for @domain", sinceVersion = Nothing}, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "filter_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "data to pass to @filter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dnotify", argType = TInterface (Name {namespace = "GLib", name = "DestroyNotify"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "destroy notifier to free @filter_data when @domain\nis destroyed", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "soup_auth_domain_set_filter" soup_auth_domain_set_filter ::
    Ptr AuthDomain ->                       -- domain : TInterface (Name {namespace = "Soup", name = "AuthDomain"})
    FunPtr Soup.Callbacks.C_AuthDomainFilter -> -- filter : TInterface (Name {namespace = "Soup", name = "AuthDomainFilter"})
    Ptr () ->                               -- filter_data : TBasicType TPtr
    FunPtr GLib.Callbacks.C_DestroyNotify -> -- dnotify : TInterface (Name {namespace = "GLib", name = "DestroyNotify"})
    IO ()

{- |
Adds /@filter@/ as an authentication filter to /@domain@/. The filter
gets a chance to bypass authentication for certain requests that
would otherwise require it. Eg, it might check the message\'s path
in some way that is too complicated to do via the other methods, or
it might check the message\'s method, and allow GETs but not PUTs.

The filter function returns 'True' if the request should still
require authentication, or 'False' if authentication is unnecessary
for this request.

To help prevent security holes, your filter should return 'True' by
default, and only return 'False' under specifically-tested
circumstances, rather than the other way around. Eg, in the example
above, where you want to authenticate PUTs but not GETs, you should
check if the method is GET and return 'False' in that case, and then
return 'True' for all other methods (rather than returning 'True' for
PUT and 'False' for all other methods). This way if it turned out
(now or later) that some paths supported additional methods besides
GET and PUT, those methods would default to being NOT allowed for
unauthenticated users.

You can also set the filter by setting the 'GI.Soup.Constants.AUTH_DOMAIN_FILTER'
and 'GI.Soup.Constants.AUTH_DOMAIN_FILTER_DATA' properties, which can also be
used to set the filter at construct time.
-}
authDomainSetFilter ::
    (B.CallStack.HasCallStack, MonadIO m, IsAuthDomain a) =>
    a
    {- ^ /@domain@/: a 'GI.Soup.Objects.AuthDomain.AuthDomain' -}
    -> Soup.Callbacks.AuthDomainFilter
    {- ^ /@filter@/: the auth filter for /@domain@/ -}
    -> m ()
authDomainSetFilter domain filter = liftIO $ do
    domain' <- unsafeManagedPtrCastPtr domain
    filter' <- Soup.Callbacks.mk_AuthDomainFilter (Soup.Callbacks.wrap_AuthDomainFilter Nothing (Soup.Callbacks.drop_closures_AuthDomainFilter filter))
    let filterData = castFunPtrToPtr filter'
    let dnotify = safeFreeFunPtrPtr
    soup_auth_domain_set_filter domain' filter' filterData dnotify
    touchManagedPtr domain
    return ()

#if ENABLE_OVERLOADING
data AuthDomainSetFilterMethodInfo
instance (signature ~ (Soup.Callbacks.AuthDomainFilter -> m ()), MonadIO m, IsAuthDomain a) => O.MethodInfo AuthDomainSetFilterMethodInfo a signature where
    overloadedMethod _ = authDomainSetFilter

#endif

-- method AuthDomain::set_generic_auth_callback
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "domain", argType = TInterface (Name {namespace = "Soup", name = "AuthDomain"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #SoupAuthDomain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "auth_callback", argType = TInterface (Name {namespace = "Soup", name = "AuthDomainGenericAuthCallback"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the auth callback", sinceVersion = Nothing}, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "auth_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "data to pass to @auth_callback", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dnotify", argType = TInterface (Name {namespace = "GLib", name = "DestroyNotify"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "destroy notifier to free @auth_data when @domain\nis destroyed", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "soup_auth_domain_set_generic_auth_callback" soup_auth_domain_set_generic_auth_callback ::
    Ptr AuthDomain ->                       -- domain : TInterface (Name {namespace = "Soup", name = "AuthDomain"})
    FunPtr Soup.Callbacks.C_AuthDomainGenericAuthCallback -> -- auth_callback : TInterface (Name {namespace = "Soup", name = "AuthDomainGenericAuthCallback"})
    Ptr () ->                               -- auth_data : TBasicType TPtr
    FunPtr GLib.Callbacks.C_DestroyNotify -> -- dnotify : TInterface (Name {namespace = "GLib", name = "DestroyNotify"})
    IO ()

{- |
Sets /@authCallback@/ as an authentication-handling callback for
/@domain@/. Whenever a request comes in to /@domain@/ which cannot be
authenticated via a domain-specific auth callback (eg,
'GI.Soup.Callbacks.AuthDomainDigestAuthCallback'), the generic auth callback
will be invoked. See 'GI.Soup.Callbacks.AuthDomainGenericAuthCallback' for information
on what the callback should do.
-}
authDomainSetGenericAuthCallback ::
    (B.CallStack.HasCallStack, MonadIO m, IsAuthDomain a) =>
    a
    {- ^ /@domain@/: a 'GI.Soup.Objects.AuthDomain.AuthDomain' -}
    -> Soup.Callbacks.AuthDomainGenericAuthCallback
    {- ^ /@authCallback@/: the auth callback -}
    -> m ()
authDomainSetGenericAuthCallback domain authCallback = liftIO $ do
    domain' <- unsafeManagedPtrCastPtr domain
    authCallback' <- Soup.Callbacks.mk_AuthDomainGenericAuthCallback (Soup.Callbacks.wrap_AuthDomainGenericAuthCallback Nothing (Soup.Callbacks.drop_closures_AuthDomainGenericAuthCallback authCallback))
    let authData = castFunPtrToPtr authCallback'
    let dnotify = safeFreeFunPtrPtr
    soup_auth_domain_set_generic_auth_callback domain' authCallback' authData dnotify
    touchManagedPtr domain
    return ()

#if ENABLE_OVERLOADING
data AuthDomainSetGenericAuthCallbackMethodInfo
instance (signature ~ (Soup.Callbacks.AuthDomainGenericAuthCallback -> m ()), MonadIO m, IsAuthDomain a) => O.MethodInfo AuthDomainSetGenericAuthCallbackMethodInfo a signature where
    overloadedMethod _ = authDomainSetGenericAuthCallback

#endif

-- method AuthDomain::try_generic_auth_callback
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "domain", argType = TInterface (Name {namespace = "Soup", name = "AuthDomain"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "msg", argType = TInterface (Name {namespace = "Soup", name = "Message"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "username", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "soup_auth_domain_try_generic_auth_callback" soup_auth_domain_try_generic_auth_callback ::
    Ptr AuthDomain ->                       -- domain : TInterface (Name {namespace = "Soup", name = "AuthDomain"})
    Ptr Soup.Message.Message ->             -- msg : TInterface (Name {namespace = "Soup", name = "Message"})
    CString ->                              -- username : TBasicType TUTF8
    IO CInt

{- |
/No description available in the introspection data./
-}
authDomainTryGenericAuthCallback ::
    (B.CallStack.HasCallStack, MonadIO m, IsAuthDomain a, Soup.Message.IsMessage b) =>
    a
    -> b
    -> T.Text
    -> m Bool
authDomainTryGenericAuthCallback domain msg username = liftIO $ do
    domain' <- unsafeManagedPtrCastPtr domain
    msg' <- unsafeManagedPtrCastPtr msg
    username' <- textToCString username
    result <- soup_auth_domain_try_generic_auth_callback domain' msg' username'
    let result' = (/= 0) result
    touchManagedPtr domain
    touchManagedPtr msg
    freeMem username'
    return result'

#if ENABLE_OVERLOADING
data AuthDomainTryGenericAuthCallbackMethodInfo
instance (signature ~ (b -> T.Text -> m Bool), MonadIO m, IsAuthDomain a, Soup.Message.IsMessage b) => O.MethodInfo AuthDomainTryGenericAuthCallbackMethodInfo a signature where
    overloadedMethod _ = authDomainTryGenericAuthCallback

#endif