{- |
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.WebKit2.Objects.URISchemeRequest
    ( 

-- * Exported types
    URISchemeRequest(..)                    ,
    IsURISchemeRequest                      ,
    toURISchemeRequest                      ,
    noURISchemeRequest                      ,


 -- * Methods
-- ** finish #method:finish#
    URISchemeRequestFinishMethodInfo        ,
    uRISchemeRequestFinish                  ,


-- ** finishError #method:finishError#
    URISchemeRequestFinishErrorMethodInfo   ,
    uRISchemeRequestFinishError             ,


-- ** getPath #method:getPath#
    URISchemeRequestGetPathMethodInfo       ,
    uRISchemeRequestGetPath                 ,


-- ** getScheme #method:getScheme#
    URISchemeRequestGetSchemeMethodInfo     ,
    uRISchemeRequestGetScheme               ,


-- ** getUri #method:getUri#
    URISchemeRequestGetUriMethodInfo        ,
    uRISchemeRequestGetUri                  ,


-- ** getWebView #method:getWebView#
    URISchemeRequestGetWebViewMethodInfo    ,
    uRISchemeRequestGetWebView              ,




    ) 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.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
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 GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gio.Objects.InputStream as Gio.InputStream
import {-# SOURCE #-} qualified GI.WebKit2.Objects.WebView as WebKit2.WebView

newtype URISchemeRequest = URISchemeRequest (ManagedPtr URISchemeRequest)
foreign import ccall "webkit_uri_scheme_request_get_type"
    c_webkit_uri_scheme_request_get_type :: IO GType

instance GObject URISchemeRequest where
    gobjectType _ = c_webkit_uri_scheme_request_get_type
    

class GObject o => IsURISchemeRequest o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError URISchemeRequest a) =>
    IsURISchemeRequest a
#endif
instance IsURISchemeRequest URISchemeRequest
instance GObject.Object.IsObject URISchemeRequest

toURISchemeRequest :: IsURISchemeRequest o => o -> IO URISchemeRequest
toURISchemeRequest = unsafeCastTo URISchemeRequest

noURISchemeRequest :: Maybe URISchemeRequest
noURISchemeRequest = Nothing

type family ResolveURISchemeRequestMethod (t :: Symbol) (o :: *) :: * where
    ResolveURISchemeRequestMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveURISchemeRequestMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveURISchemeRequestMethod "finish" o = URISchemeRequestFinishMethodInfo
    ResolveURISchemeRequestMethod "finishError" o = URISchemeRequestFinishErrorMethodInfo
    ResolveURISchemeRequestMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveURISchemeRequestMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveURISchemeRequestMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveURISchemeRequestMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveURISchemeRequestMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveURISchemeRequestMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveURISchemeRequestMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveURISchemeRequestMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveURISchemeRequestMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveURISchemeRequestMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveURISchemeRequestMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveURISchemeRequestMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveURISchemeRequestMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveURISchemeRequestMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveURISchemeRequestMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveURISchemeRequestMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveURISchemeRequestMethod "getPath" o = URISchemeRequestGetPathMethodInfo
    ResolveURISchemeRequestMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveURISchemeRequestMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveURISchemeRequestMethod "getScheme" o = URISchemeRequestGetSchemeMethodInfo
    ResolveURISchemeRequestMethod "getUri" o = URISchemeRequestGetUriMethodInfo
    ResolveURISchemeRequestMethod "getWebView" o = URISchemeRequestGetWebViewMethodInfo
    ResolveURISchemeRequestMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveURISchemeRequestMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveURISchemeRequestMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveURISchemeRequestMethod t URISchemeRequest, O.MethodInfo info URISchemeRequest p) => O.IsLabelProxy t (URISchemeRequest -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

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

instance O.HasAttributeList URISchemeRequest
type instance O.AttributeList URISchemeRequest = URISchemeRequestAttributeList
type URISchemeRequestAttributeList = ('[ ] :: [(Symbol, *)])

type instance O.SignalList URISchemeRequest = URISchemeRequestSignalList
type URISchemeRequestSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method URISchemeRequest::finish
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "request", argType = TInterface (Name {namespace = "WebKit2", name = "URISchemeRequest"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitURISchemeRequest", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "stream", argType = TInterface (Name {namespace = "Gio", name = "InputStream"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GInputStream to read the contents of the request", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "stream_length", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the length of the stream or -1 if not known", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mime_type", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the content type of the stream or %NULL if not known", 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_scheme_request_finish" webkit_uri_scheme_request_finish :: 
    Ptr URISchemeRequest ->                 -- request : TInterface (Name {namespace = "WebKit2", name = "URISchemeRequest"})
    Ptr Gio.InputStream.InputStream ->      -- stream : TInterface (Name {namespace = "Gio", name = "InputStream"})
    Int64 ->                                -- stream_length : TBasicType TInt64
    CString ->                              -- mime_type : TBasicType TUTF8
    IO ()

{- |
Finish a 'GI.WebKit2.Objects.URISchemeRequest.URISchemeRequest' by setting the contents of the request and its mime type.
-}
uRISchemeRequestFinish ::
    (B.CallStack.HasCallStack, MonadIO m, IsURISchemeRequest a, Gio.InputStream.IsInputStream b) =>
    a
    {- ^ /@request@/: a 'GI.WebKit2.Objects.URISchemeRequest.URISchemeRequest' -}
    -> b
    {- ^ /@stream@/: a 'GI.Gio.Objects.InputStream.InputStream' to read the contents of the request -}
    -> Int64
    {- ^ /@streamLength@/: the length of the stream or -1 if not known -}
    -> Maybe (T.Text)
    {- ^ /@mimeType@/: the content type of the stream or 'Nothing' if not known -}
    -> m ()
uRISchemeRequestFinish request stream streamLength mimeType = liftIO $ do
    request' <- unsafeManagedPtrCastPtr request
    stream' <- unsafeManagedPtrCastPtr stream
    maybeMimeType <- case mimeType of
        Nothing -> return nullPtr
        Just jMimeType -> do
            jMimeType' <- textToCString jMimeType
            return jMimeType'
    webkit_uri_scheme_request_finish request' stream' streamLength maybeMimeType
    touchManagedPtr request
    touchManagedPtr stream
    freeMem maybeMimeType
    return ()

data URISchemeRequestFinishMethodInfo
instance (signature ~ (b -> Int64 -> Maybe (T.Text) -> m ()), MonadIO m, IsURISchemeRequest a, Gio.InputStream.IsInputStream b) => O.MethodInfo URISchemeRequestFinishMethodInfo a signature where
    overloadedMethod _ = uRISchemeRequestFinish

-- method URISchemeRequest::finish_error
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "request", argType = TInterface (Name {namespace = "WebKit2", name = "URISchemeRequest"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitURISchemeRequest", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "error", argType = TError, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GError that will be passed to the #WebKitWebView", 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_scheme_request_finish_error" webkit_uri_scheme_request_finish_error :: 
    Ptr URISchemeRequest ->                 -- request : TInterface (Name {namespace = "WebKit2", name = "URISchemeRequest"})
    Ptr GError ->                           -- error : TError
    IO ()

{- |
Finish a 'GI.WebKit2.Objects.URISchemeRequest.URISchemeRequest' with a 'GError'.

@since 2.2
-}
uRISchemeRequestFinishError ::
    (B.CallStack.HasCallStack, MonadIO m, IsURISchemeRequest a) =>
    a
    {- ^ /@request@/: a 'GI.WebKit2.Objects.URISchemeRequest.URISchemeRequest' -}
    -> GError
    {- ^ /@error@/: a 'GError' that will be passed to the 'GI.WebKit2.Objects.WebView.WebView' -}
    -> m ()
uRISchemeRequestFinishError request error_ = liftIO $ do
    request' <- unsafeManagedPtrCastPtr request
    error_' <- unsafeManagedPtrGetPtr error_
    webkit_uri_scheme_request_finish_error request' error_'
    touchManagedPtr request
    touchManagedPtr error_
    return ()

data URISchemeRequestFinishErrorMethodInfo
instance (signature ~ (GError -> m ()), MonadIO m, IsURISchemeRequest a) => O.MethodInfo URISchemeRequestFinishErrorMethodInfo a signature where
    overloadedMethod _ = uRISchemeRequestFinishError

-- method URISchemeRequest::get_path
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "request", argType = TInterface (Name {namespace = "WebKit2", name = "URISchemeRequest"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitURISchemeRequest", 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_scheme_request_get_path" webkit_uri_scheme_request_get_path :: 
    Ptr URISchemeRequest ->                 -- request : TInterface (Name {namespace = "WebKit2", name = "URISchemeRequest"})
    IO CString

{- |
Get the URI path of /@request@/
-}
uRISchemeRequestGetPath ::
    (B.CallStack.HasCallStack, MonadIO m, IsURISchemeRequest a) =>
    a
    {- ^ /@request@/: a 'GI.WebKit2.Objects.URISchemeRequest.URISchemeRequest' -}
    -> m T.Text
    {- ^ __Returns:__ the URI path of /@request@/ -}
uRISchemeRequestGetPath request = liftIO $ do
    request' <- unsafeManagedPtrCastPtr request
    result <- webkit_uri_scheme_request_get_path request'
    checkUnexpectedReturnNULL "uRISchemeRequestGetPath" result
    result' <- cstringToText result
    touchManagedPtr request
    return result'

data URISchemeRequestGetPathMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsURISchemeRequest a) => O.MethodInfo URISchemeRequestGetPathMethodInfo a signature where
    overloadedMethod _ = uRISchemeRequestGetPath

-- method URISchemeRequest::get_scheme
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "request", argType = TInterface (Name {namespace = "WebKit2", name = "URISchemeRequest"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitURISchemeRequest", 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_scheme_request_get_scheme" webkit_uri_scheme_request_get_scheme :: 
    Ptr URISchemeRequest ->                 -- request : TInterface (Name {namespace = "WebKit2", name = "URISchemeRequest"})
    IO CString

{- |
Get the URI scheme of /@request@/
-}
uRISchemeRequestGetScheme ::
    (B.CallStack.HasCallStack, MonadIO m, IsURISchemeRequest a) =>
    a
    {- ^ /@request@/: a 'GI.WebKit2.Objects.URISchemeRequest.URISchemeRequest' -}
    -> m T.Text
    {- ^ __Returns:__ the URI scheme of /@request@/ -}
uRISchemeRequestGetScheme request = liftIO $ do
    request' <- unsafeManagedPtrCastPtr request
    result <- webkit_uri_scheme_request_get_scheme request'
    checkUnexpectedReturnNULL "uRISchemeRequestGetScheme" result
    result' <- cstringToText result
    touchManagedPtr request
    return result'

data URISchemeRequestGetSchemeMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsURISchemeRequest a) => O.MethodInfo URISchemeRequestGetSchemeMethodInfo a signature where
    overloadedMethod _ = uRISchemeRequestGetScheme

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

{- |
Get the URI of /@request@/
-}
uRISchemeRequestGetUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsURISchemeRequest a) =>
    a
    {- ^ /@request@/: a 'GI.WebKit2.Objects.URISchemeRequest.URISchemeRequest' -}
    -> m T.Text
    {- ^ __Returns:__ the full URI of /@request@/ -}
uRISchemeRequestGetUri request = liftIO $ do
    request' <- unsafeManagedPtrCastPtr request
    result <- webkit_uri_scheme_request_get_uri request'
    checkUnexpectedReturnNULL "uRISchemeRequestGetUri" result
    result' <- cstringToText result
    touchManagedPtr request
    return result'

data URISchemeRequestGetUriMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsURISchemeRequest a) => O.MethodInfo URISchemeRequestGetUriMethodInfo a signature where
    overloadedMethod _ = uRISchemeRequestGetUri

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

foreign import ccall "webkit_uri_scheme_request_get_web_view" webkit_uri_scheme_request_get_web_view :: 
    Ptr URISchemeRequest ->                 -- request : TInterface (Name {namespace = "WebKit2", name = "URISchemeRequest"})
    IO (Ptr WebKit2.WebView.WebView)

{- |
Get the 'GI.WebKit2.Objects.WebView.WebView' that initiated the request.
-}
uRISchemeRequestGetWebView ::
    (B.CallStack.HasCallStack, MonadIO m, IsURISchemeRequest a) =>
    a
    {- ^ /@request@/: a 'GI.WebKit2.Objects.URISchemeRequest.URISchemeRequest' -}
    -> m WebKit2.WebView.WebView
    {- ^ __Returns:__ the 'GI.WebKit2.Objects.WebView.WebView' that initiated /@request@/. -}
uRISchemeRequestGetWebView request = liftIO $ do
    request' <- unsafeManagedPtrCastPtr request
    result <- webkit_uri_scheme_request_get_web_view request'
    checkUnexpectedReturnNULL "uRISchemeRequestGetWebView" result
    result' <- (newObject WebKit2.WebView.WebView) result
    touchManagedPtr request
    return result'

data URISchemeRequestGetWebViewMethodInfo
instance (signature ~ (m WebKit2.WebView.WebView), MonadIO m, IsURISchemeRequest a) => O.MethodInfo URISchemeRequestGetWebViewMethodInfo a signature where
    overloadedMethod _ = uRISchemeRequestGetWebView