{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- /No description available in the introspection data./

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

module GI.WebKit2WebExtension.Objects.URIRequest
    ( 

-- * Exported types
    URIRequest(..)                          ,
    IsURIRequest                            ,
    toURIRequest                            ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [ref]("GI.GObject.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [unref]("GI.GObject.Objects.Object#g:method:unref"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getData]("GI.GObject.Objects.Object#g:method:getData"), [getHttpHeaders]("GI.WebKit2WebExtension.Objects.URIRequest#g:method:getHttpHeaders"), [getHttpMethod]("GI.WebKit2WebExtension.Objects.URIRequest#g:method:getHttpMethod"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getUri]("GI.WebKit2WebExtension.Objects.URIRequest#g:method:getUri").
-- 
-- ==== Setters
-- [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty"), [setUri]("GI.WebKit2WebExtension.Objects.URIRequest#g:method:setUri").

#if defined(ENABLE_OVERLOADING)
    ResolveURIRequestMethod                 ,
#endif

-- ** getHttpHeaders #method:getHttpHeaders#

#if defined(ENABLE_OVERLOADING)
    URIRequestGetHttpHeadersMethodInfo      ,
#endif
    uRIRequestGetHttpHeaders                ,


-- ** getHttpMethod #method:getHttpMethod#

#if defined(ENABLE_OVERLOADING)
    URIRequestGetHttpMethodMethodInfo       ,
#endif
    uRIRequestGetHttpMethod                 ,


-- ** getUri #method:getUri#

#if defined(ENABLE_OVERLOADING)
    URIRequestGetUriMethodInfo              ,
#endif
    uRIRequestGetUri                        ,


-- ** new #method:new#

    uRIRequestNew                           ,


-- ** setUri #method:setUri#

#if defined(ENABLE_OVERLOADING)
    URIRequestSetUriMethodInfo              ,
#endif
    uRIRequestSetUri                        ,




 -- * Properties


-- ** uri #attr:uri#
-- | The URI to which the request will be made.

#if defined(ENABLE_OVERLOADING)
    URIRequestUriPropertyInfo               ,
#endif
    constructURIRequestUri                  ,
    getURIRequestUri                        ,
    setURIRequestUri                        ,
#if defined(ENABLE_OVERLOADING)
    uRIRequestUri                           ,
#endif




    ) 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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
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.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
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 GHC.Records as R

import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Soup.Structs.MessageHeaders as Soup.MessageHeaders

-- | Memory-managed wrapper type.
newtype URIRequest = URIRequest (SP.ManagedPtr URIRequest)
    deriving (URIRequest -> URIRequest -> Bool
(URIRequest -> URIRequest -> Bool)
-> (URIRequest -> URIRequest -> Bool) -> Eq URIRequest
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: URIRequest -> URIRequest -> Bool
$c/= :: URIRequest -> URIRequest -> Bool
== :: URIRequest -> URIRequest -> Bool
$c== :: URIRequest -> URIRequest -> Bool
Eq)

instance SP.ManagedPtrNewtype URIRequest where
    toManagedPtr :: URIRequest -> ManagedPtr URIRequest
toManagedPtr (URIRequest ManagedPtr URIRequest
p) = ManagedPtr URIRequest
p

foreign import ccall "webkit_uri_request_get_type"
    c_webkit_uri_request_get_type :: IO B.Types.GType

instance B.Types.TypedObject URIRequest where
    glibType :: IO GType
glibType = IO GType
c_webkit_uri_request_get_type

instance B.Types.GObject URIRequest

-- | Type class for types which can be safely cast to `URIRequest`, for instance with `toURIRequest`.
class (SP.GObject o, O.IsDescendantOf URIRequest o) => IsURIRequest o
instance (SP.GObject o, O.IsDescendantOf URIRequest o) => IsURIRequest o

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

-- | Cast to `URIRequest`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toURIRequest :: (MIO.MonadIO m, IsURIRequest o) => o -> m URIRequest
toURIRequest :: forall (m :: * -> *) o.
(MonadIO m, IsURIRequest o) =>
o -> m URIRequest
toURIRequest = IO URIRequest -> m URIRequest
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO URIRequest -> m URIRequest)
-> (o -> IO URIRequest) -> o -> m URIRequest
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr URIRequest -> URIRequest) -> o -> IO URIRequest
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr URIRequest -> URIRequest
URIRequest

-- | Convert 'URIRequest' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe URIRequest) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_webkit_uri_request_get_type
    gvalueSet_ :: Ptr GValue -> Maybe URIRequest -> IO ()
gvalueSet_ Ptr GValue
gv Maybe URIRequest
P.Nothing = Ptr GValue -> Ptr URIRequest -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr URIRequest
forall a. Ptr a
FP.nullPtr :: FP.Ptr URIRequest)
    gvalueSet_ Ptr GValue
gv (P.Just URIRequest
obj) = URIRequest -> (Ptr URIRequest -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr URIRequest
obj (Ptr GValue -> Ptr URIRequest -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe URIRequest)
gvalueGet_ Ptr GValue
gv = do
        Ptr URIRequest
ptr <- Ptr GValue -> IO (Ptr URIRequest)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr URIRequest)
        if Ptr URIRequest
ptr Ptr URIRequest -> Ptr URIRequest -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr URIRequest
forall a. Ptr a
FP.nullPtr
        then URIRequest -> Maybe URIRequest
forall a. a -> Maybe a
P.Just (URIRequest -> Maybe URIRequest)
-> IO URIRequest -> IO (Maybe URIRequest)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr URIRequest -> URIRequest)
-> Ptr URIRequest -> IO URIRequest
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr URIRequest -> URIRequest
URIRequest Ptr URIRequest
ptr
        else Maybe URIRequest -> IO (Maybe URIRequest)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe URIRequest
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveURIRequestMethod (t :: Symbol) (o :: *) :: * where
    ResolveURIRequestMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveURIRequestMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveURIRequestMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveURIRequestMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveURIRequestMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveURIRequestMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveURIRequestMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveURIRequestMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveURIRequestMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveURIRequestMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveURIRequestMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveURIRequestMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveURIRequestMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveURIRequestMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveURIRequestMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveURIRequestMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveURIRequestMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveURIRequestMethod "getHttpHeaders" o = URIRequestGetHttpHeadersMethodInfo
    ResolveURIRequestMethod "getHttpMethod" o = URIRequestGetHttpMethodMethodInfo
    ResolveURIRequestMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveURIRequestMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveURIRequestMethod "getUri" o = URIRequestGetUriMethodInfo
    ResolveURIRequestMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveURIRequestMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveURIRequestMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveURIRequestMethod "setUri" o = URIRequestSetUriMethodInfo
    ResolveURIRequestMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveURIRequestMethod t URIRequest, O.OverloadedMethod info URIRequest p) => OL.IsLabel t (URIRequest -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveURIRequestMethod t URIRequest, O.OverloadedMethod info URIRequest p, R.HasField t URIRequest p) => R.HasField t URIRequest p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveURIRequestMethod t URIRequest, O.OverloadedMethodInfo info URIRequest) => OL.IsLabel t (O.MethodProxy info URIRequest) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif

-- VVV Prop "uri"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Just False,Just False)

-- | Get the value of the “@uri@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' uRIRequest #uri
-- @
getURIRequestUri :: (MonadIO m, IsURIRequest o) => o -> m T.Text
getURIRequestUri :: forall (m :: * -> *) o. (MonadIO m, IsURIRequest o) => o -> m Text
getURIRequestUri o
obj = IO Text -> m Text
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ Text -> IO (Maybe Text) -> IO Text
forall a. HasCallStack => Text -> IO (Maybe a) -> IO a
checkUnexpectedNothing Text
"getURIRequestUri" (IO (Maybe Text) -> IO Text) -> IO (Maybe Text) -> IO Text
forall a b. (a -> b) -> a -> b
$ o -> String -> IO (Maybe Text)
forall a. GObject a => a -> String -> IO (Maybe Text)
B.Properties.getObjectPropertyString o
obj String
"uri"

-- | Set the value of the “@uri@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' uRIRequest [ #uri 'Data.GI.Base.Attributes.:=' value ]
-- @
setURIRequestUri :: (MonadIO m, IsURIRequest o) => o -> T.Text -> m ()
setURIRequestUri :: forall (m :: * -> *) o.
(MonadIO m, IsURIRequest o) =>
o -> Text -> m ()
setURIRequestUri o
obj Text
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> Maybe Text -> IO ()
forall a. GObject a => a -> String -> Maybe Text -> IO ()
B.Properties.setObjectPropertyString o
obj String
"uri" (Text -> Maybe Text
forall a. a -> Maybe a
Just Text
val)

-- | Construct a `GValueConstruct` with valid value for the “@uri@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructURIRequestUri :: (IsURIRequest o, MIO.MonadIO m) => T.Text -> m (GValueConstruct o)
constructURIRequestUri :: forall o (m :: * -> *).
(IsURIRequest o, MonadIO m) =>
Text -> m (GValueConstruct o)
constructURIRequestUri Text
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Maybe Text -> IO (GValueConstruct o)
forall o. String -> Maybe Text -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyString String
"uri" (Text -> Maybe Text
forall a. a -> Maybe a
P.Just Text
val)

#if defined(ENABLE_OVERLOADING)
data URIRequestUriPropertyInfo
instance AttrInfo URIRequestUriPropertyInfo where
    type AttrAllowedOps URIRequestUriPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint URIRequestUriPropertyInfo = IsURIRequest
    type AttrSetTypeConstraint URIRequestUriPropertyInfo = (~) T.Text
    type AttrTransferTypeConstraint URIRequestUriPropertyInfo = (~) T.Text
    type AttrTransferType URIRequestUriPropertyInfo = T.Text
    type AttrGetType URIRequestUriPropertyInfo = T.Text
    type AttrLabel URIRequestUriPropertyInfo = "uri"
    type AttrOrigin URIRequestUriPropertyInfo = URIRequest
    attrGet = getURIRequestUri
    attrSet = setURIRequestUri
    attrTransfer _ v = do
        return v
    attrConstruct = constructURIRequestUri
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.WebKit2WebExtension.Objects.URIRequest.uri"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-webkit2webextension-4.0.27/docs/GI-WebKit2WebExtension-Objects-URIRequest.html#g:attr:uri"
        })
#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList URIRequest
type instance O.AttributeList URIRequest = URIRequestAttributeList
type URIRequestAttributeList = ('[ '("uri", URIRequestUriPropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
uRIRequestUri :: AttrLabelProxy "uri"
uRIRequestUri = AttrLabelProxy

#endif

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

#endif

-- method URIRequest::new
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "uri"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "an URI" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface
--                  Name { namespace = "WebKit2WebExtension" , name = "URIRequest" })
-- throws : False
-- Skip return : False

foreign import ccall "webkit_uri_request_new" webkit_uri_request_new :: 
    CString ->                              -- uri : TBasicType TUTF8
    IO (Ptr URIRequest)

-- | Creates a new t'GI.WebKit2WebExtension.Objects.URIRequest.URIRequest' for the given URI.
uRIRequestNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    T.Text
    -- ^ /@uri@/: an URI
    -> m URIRequest
    -- ^ __Returns:__ a new t'GI.WebKit2WebExtension.Objects.URIRequest.URIRequest'
uRIRequestNew :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Text -> m URIRequest
uRIRequestNew Text
uri = IO URIRequest -> m URIRequest
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO URIRequest -> m URIRequest) -> IO URIRequest -> m URIRequest
forall a b. (a -> b) -> a -> b
$ do
    CString
uri' <- Text -> IO CString
textToCString Text
uri
    Ptr URIRequest
result <- CString -> IO (Ptr URIRequest)
webkit_uri_request_new CString
uri'
    Text -> Ptr URIRequest -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"uRIRequestNew" Ptr URIRequest
result
    URIRequest
result' <- ((ManagedPtr URIRequest -> URIRequest)
-> Ptr URIRequest -> IO URIRequest
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
wrapObject ManagedPtr URIRequest -> URIRequest
URIRequest) Ptr URIRequest
result
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
uri'
    URIRequest -> IO URIRequest
forall (m :: * -> *) a. Monad m => a -> m a
return URIRequest
result'

#if defined(ENABLE_OVERLOADING)
#endif

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

foreign import ccall "webkit_uri_request_get_http_headers" webkit_uri_request_get_http_headers :: 
    Ptr URIRequest ->                       -- request : TInterface (Name {namespace = "WebKit2WebExtension", name = "URIRequest"})
    IO (Ptr Soup.MessageHeaders.MessageHeaders)

-- | Get the HTTP headers of a t'GI.WebKit2WebExtension.Objects.URIRequest.URIRequest' as a t'GI.Soup.Structs.MessageHeaders.MessageHeaders'.
uRIRequestGetHttpHeaders ::
    (B.CallStack.HasCallStack, MonadIO m, IsURIRequest a) =>
    a
    -- ^ /@request@/: a t'GI.WebKit2WebExtension.Objects.URIRequest.URIRequest'
    -> m Soup.MessageHeaders.MessageHeaders
    -- ^ __Returns:__ a t'GI.Soup.Structs.MessageHeaders.MessageHeaders' with the HTTP headers of /@request@/
    --    or 'P.Nothing' if /@request@/ is not an HTTP request.
uRIRequestGetHttpHeaders :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsURIRequest a) =>
a -> m MessageHeaders
uRIRequestGetHttpHeaders a
request = IO MessageHeaders -> m MessageHeaders
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO MessageHeaders -> m MessageHeaders)
-> IO MessageHeaders -> m MessageHeaders
forall a b. (a -> b) -> a -> b
$ do
    Ptr URIRequest
request' <- a -> IO (Ptr URIRequest)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
request
    Ptr MessageHeaders
result <- Ptr URIRequest -> IO (Ptr MessageHeaders)
webkit_uri_request_get_http_headers Ptr URIRequest
request'
    Text -> Ptr MessageHeaders -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"uRIRequestGetHttpHeaders" Ptr MessageHeaders
result
    MessageHeaders
result' <- ((ManagedPtr MessageHeaders -> MessageHeaders)
-> Ptr MessageHeaders -> IO MessageHeaders
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr MessageHeaders -> MessageHeaders
Soup.MessageHeaders.MessageHeaders) Ptr MessageHeaders
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
request
    MessageHeaders -> IO MessageHeaders
forall (m :: * -> *) a. Monad m => a -> m a
return MessageHeaders
result'

#if defined(ENABLE_OVERLOADING)
data URIRequestGetHttpHeadersMethodInfo
instance (signature ~ (m Soup.MessageHeaders.MessageHeaders), MonadIO m, IsURIRequest a) => O.OverloadedMethod URIRequestGetHttpHeadersMethodInfo a signature where
    overloadedMethod = uRIRequestGetHttpHeaders

instance O.OverloadedMethodInfo URIRequestGetHttpHeadersMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.WebKit2WebExtension.Objects.URIRequest.uRIRequestGetHttpHeaders",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-webkit2webextension-4.0.27/docs/GI-WebKit2WebExtension-Objects-URIRequest.html#v:uRIRequestGetHttpHeaders"
        })


#endif

-- method URIRequest::get_http_method
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "request"
--           , argType =
--               TInterface
--                 Name { namespace = "WebKit2WebExtension" , name = "URIRequest" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #WebKitURIRequest"
--                 , 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 "webkit_uri_request_get_http_method" webkit_uri_request_get_http_method :: 
    Ptr URIRequest ->                       -- request : TInterface (Name {namespace = "WebKit2WebExtension", name = "URIRequest"})
    IO CString

-- | Get the HTTP method of the t'GI.WebKit2WebExtension.Objects.URIRequest.URIRequest'.
-- 
-- /Since: 2.12/
uRIRequestGetHttpMethod ::
    (B.CallStack.HasCallStack, MonadIO m, IsURIRequest a) =>
    a
    -- ^ /@request@/: a t'GI.WebKit2WebExtension.Objects.URIRequest.URIRequest'
    -> m T.Text
    -- ^ __Returns:__ the HTTP method of the t'GI.WebKit2WebExtension.Objects.URIRequest.URIRequest' or 'P.Nothing' if /@request@/ is not
    --    an HTTP request.
uRIRequestGetHttpMethod :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsURIRequest a) =>
a -> m Text
uRIRequestGetHttpMethod a
request = IO Text -> m Text
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
    Ptr URIRequest
request' <- a -> IO (Ptr URIRequest)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
request
    CString
result <- Ptr URIRequest -> IO CString
webkit_uri_request_get_http_method Ptr URIRequest
request'
    Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"uRIRequestGetHttpMethod" CString
result
    Text
result' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
request
    Text -> IO Text
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'

#if defined(ENABLE_OVERLOADING)
data URIRequestGetHttpMethodMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsURIRequest a) => O.OverloadedMethod URIRequestGetHttpMethodMethodInfo a signature where
    overloadedMethod = uRIRequestGetHttpMethod

instance O.OverloadedMethodInfo URIRequestGetHttpMethodMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.WebKit2WebExtension.Objects.URIRequest.uRIRequestGetHttpMethod",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-webkit2webextension-4.0.27/docs/GI-WebKit2WebExtension-Objects-URIRequest.html#v:uRIRequestGetHttpMethod"
        })


#endif

-- method URIRequest::get_uri
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "request"
--           , argType =
--               TInterface
--                 Name { namespace = "WebKit2WebExtension" , name = "URIRequest" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #WebKitURIRequest"
--                 , 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 "webkit_uri_request_get_uri" webkit_uri_request_get_uri :: 
    Ptr URIRequest ->                       -- request : TInterface (Name {namespace = "WebKit2WebExtension", name = "URIRequest"})
    IO CString

-- | /No description available in the introspection data./
uRIRequestGetUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsURIRequest a) =>
    a
    -- ^ /@request@/: a t'GI.WebKit2WebExtension.Objects.URIRequest.URIRequest'
    -> m T.Text
    -- ^ __Returns:__ the uri of the t'GI.WebKit2WebExtension.Objects.URIRequest.URIRequest'
uRIRequestGetUri :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsURIRequest a) =>
a -> m Text
uRIRequestGetUri a
request = IO Text -> m Text
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
    Ptr URIRequest
request' <- a -> IO (Ptr URIRequest)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
request
    CString
result <- Ptr URIRequest -> IO CString
webkit_uri_request_get_uri Ptr URIRequest
request'
    Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"uRIRequestGetUri" CString
result
    Text
result' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
request
    Text -> IO Text
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'

#if defined(ENABLE_OVERLOADING)
data URIRequestGetUriMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsURIRequest a) => O.OverloadedMethod URIRequestGetUriMethodInfo a signature where
    overloadedMethod = uRIRequestGetUri

instance O.OverloadedMethodInfo URIRequestGetUriMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.WebKit2WebExtension.Objects.URIRequest.uRIRequestGetUri",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-webkit2webextension-4.0.27/docs/GI-WebKit2WebExtension-Objects-URIRequest.html#v:uRIRequestGetUri"
        })


#endif

-- method URIRequest::set_uri
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "request"
--           , argType =
--               TInterface
--                 Name { namespace = "WebKit2WebExtension" , name = "URIRequest" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #WebKitURIRequest"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "uri"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "an URI" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_uri_request_set_uri" webkit_uri_request_set_uri :: 
    Ptr URIRequest ->                       -- request : TInterface (Name {namespace = "WebKit2WebExtension", name = "URIRequest"})
    CString ->                              -- uri : TBasicType TUTF8
    IO ()

-- | Set the URI of /@request@/
uRIRequestSetUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsURIRequest a) =>
    a
    -- ^ /@request@/: a t'GI.WebKit2WebExtension.Objects.URIRequest.URIRequest'
    -> T.Text
    -- ^ /@uri@/: an URI
    -> m ()
uRIRequestSetUri :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsURIRequest a) =>
a -> Text -> m ()
uRIRequestSetUri a
request Text
uri = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr URIRequest
request' <- a -> IO (Ptr URIRequest)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
request
    CString
uri' <- Text -> IO CString
textToCString Text
uri
    Ptr URIRequest -> CString -> IO ()
webkit_uri_request_set_uri Ptr URIRequest
request' CString
uri'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
request
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
uri'
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data URIRequestSetUriMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsURIRequest a) => O.OverloadedMethod URIRequestSetUriMethodInfo a signature where
    overloadedMethod = uRIRequestSetUri

instance O.OverloadedMethodInfo URIRequestSetUriMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.WebKit2WebExtension.Objects.URIRequest.uRIRequestSetUri",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-webkit2webextension-4.0.27/docs/GI-WebKit2WebExtension-Objects-URIRequest.html#v:uRIRequestSetUri"
        })


#endif