{- |
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(..)                    ,
    URISchemeRequestK                       ,
    toURISchemeRequest                      ,
    noURISchemeRequest                      ,


 -- * Methods
-- ** uRISchemeRequestFinish
    uRISchemeRequestFinish                  ,


-- ** uRISchemeRequestFinishError
    uRISchemeRequestFinishError             ,


-- ** uRISchemeRequestGetPath
    uRISchemeRequestGetPath                 ,


-- ** uRISchemeRequestGetScheme
    uRISchemeRequestGetScheme               ,


-- ** uRISchemeRequestGetUri
    uRISchemeRequestGetUri                  ,


-- ** uRISchemeRequestGetWebView
    uRISchemeRequestGetWebView              ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.WebKit2.Types
import GI.WebKit2.Callbacks
import qualified GI.GObject as GObject
import qualified GI.Gio as Gio

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

type instance ParentTypes URISchemeRequest = URISchemeRequestParentTypes
type URISchemeRequestParentTypes = '[GObject.Object]

instance GObject URISchemeRequest where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_webkit_uri_scheme_request_get_type
    

class GObject o => URISchemeRequestK o
instance (GObject o, IsDescendantOf URISchemeRequest o) => URISchemeRequestK o

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

noURISchemeRequest :: Maybe URISchemeRequest
noURISchemeRequest = Nothing

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

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

-- method URISchemeRequest::finish
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2" "URISchemeRequest", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stream", argType = TInterface "Gio" "InputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stream_length", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mime_type", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2" "URISchemeRequest", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stream", argType = TInterface "Gio" "InputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stream_length", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mime_type", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "webkit_uri_scheme_request_finish" webkit_uri_scheme_request_finish :: 
    Ptr URISchemeRequest ->                 -- _obj : TInterface "WebKit2" "URISchemeRequest"
    Ptr Gio.InputStream ->                  -- stream : TInterface "Gio" "InputStream"
    Int64 ->                                -- stream_length : TBasicType TInt64
    CString ->                              -- mime_type : TBasicType TUTF8
    IO ()


uRISchemeRequestFinish ::
    (MonadIO m, URISchemeRequestK a, Gio.InputStreamK b) =>
    a ->                                    -- _obj
    b ->                                    -- stream
    Int64 ->                                -- stream_length
    Maybe (T.Text) ->                       -- mime_type
    m ()
uRISchemeRequestFinish _obj stream stream_length mime_type = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let stream' = unsafeManagedPtrCastPtr stream
    maybeMime_type <- case mime_type of
        Nothing -> return nullPtr
        Just jMime_type -> do
            jMime_type' <- textToCString jMime_type
            return jMime_type'
    webkit_uri_scheme_request_finish _obj' stream' stream_length maybeMime_type
    touchManagedPtr _obj
    touchManagedPtr stream
    freeMem maybeMime_type
    return ()

-- method URISchemeRequest::finish_error
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2" "URISchemeRequest", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "error", argType = TError, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2" "URISchemeRequest", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "error", argType = TError, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "webkit_uri_scheme_request_finish_error" webkit_uri_scheme_request_finish_error :: 
    Ptr URISchemeRequest ->                 -- _obj : TInterface "WebKit2" "URISchemeRequest"
    Ptr GError ->                           -- error : TError
    IO ()


uRISchemeRequestFinishError ::
    (MonadIO m, URISchemeRequestK a) =>
    a ->                                    -- _obj
    GError ->                               -- error
    m ()
uRISchemeRequestFinishError _obj error_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let error_' = unsafeManagedPtrGetPtr error_
    webkit_uri_scheme_request_finish_error _obj' error_'
    touchManagedPtr _obj
    touchManagedPtr error_
    return ()

-- method URISchemeRequest::get_path
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2" "URISchemeRequest", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2" "URISchemeRequest", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "webkit_uri_scheme_request_get_path" webkit_uri_scheme_request_get_path :: 
    Ptr URISchemeRequest ->                 -- _obj : TInterface "WebKit2" "URISchemeRequest"
    IO CString


uRISchemeRequestGetPath ::
    (MonadIO m, URISchemeRequestK a) =>
    a ->                                    -- _obj
    m T.Text
uRISchemeRequestGetPath _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_uri_scheme_request_get_path _obj'
    checkUnexpectedReturnNULL "webkit_uri_scheme_request_get_path" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method URISchemeRequest::get_scheme
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2" "URISchemeRequest", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2" "URISchemeRequest", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "webkit_uri_scheme_request_get_scheme" webkit_uri_scheme_request_get_scheme :: 
    Ptr URISchemeRequest ->                 -- _obj : TInterface "WebKit2" "URISchemeRequest"
    IO CString


uRISchemeRequestGetScheme ::
    (MonadIO m, URISchemeRequestK a) =>
    a ->                                    -- _obj
    m T.Text
uRISchemeRequestGetScheme _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_uri_scheme_request_get_scheme _obj'
    checkUnexpectedReturnNULL "webkit_uri_scheme_request_get_scheme" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method URISchemeRequest::get_uri
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2" "URISchemeRequest", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2" "URISchemeRequest", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "webkit_uri_scheme_request_get_uri" webkit_uri_scheme_request_get_uri :: 
    Ptr URISchemeRequest ->                 -- _obj : TInterface "WebKit2" "URISchemeRequest"
    IO CString


uRISchemeRequestGetUri ::
    (MonadIO m, URISchemeRequestK a) =>
    a ->                                    -- _obj
    m T.Text
uRISchemeRequestGetUri _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_uri_scheme_request_get_uri _obj'
    checkUnexpectedReturnNULL "webkit_uri_scheme_request_get_uri" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method URISchemeRequest::get_web_view
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2" "URISchemeRequest", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2" "URISchemeRequest", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "WebKit2" "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 ->                 -- _obj : TInterface "WebKit2" "URISchemeRequest"
    IO (Ptr WebView)


uRISchemeRequestGetWebView ::
    (MonadIO m, URISchemeRequestK a) =>
    a ->                                    -- _obj
    m WebView
uRISchemeRequestGetWebView _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_uri_scheme_request_get_web_view _obj'
    checkUnexpectedReturnNULL "webkit_uri_scheme_request_get_web_view" result
    result' <- (newObject WebView) result
    touchManagedPtr _obj
    return result'