{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (garetxe@gmail.com) -} module GI.Soup.Objects.MultipartInputStream ( -- * Exported types MultipartInputStream(..) , MultipartInputStreamK , toMultipartInputStream , noMultipartInputStream , -- * Methods -- ** multipartInputStreamGetHeaders multipartInputStreamGetHeaders , -- ** multipartInputStreamNew multipartInputStreamNew , -- ** multipartInputStreamNextPart multipartInputStreamNextPart , -- ** multipartInputStreamNextPartAsync multipartInputStreamNextPartAsync , -- ** multipartInputStreamNextPartFinish multipartInputStreamNextPartFinish , -- * Properties -- ** Message MultipartInputStreamMessagePropertyInfo , constructMultipartInputStreamMessage , getMultipartInputStreamMessage , ) where import Prelude () import Data.GI.Base.ShortPrelude import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import GI.Soup.Types import GI.Soup.Callbacks import qualified GI.GObject as GObject import qualified GI.Gio as Gio newtype MultipartInputStream = MultipartInputStream (ForeignPtr MultipartInputStream) foreign import ccall "soup_multipart_input_stream_get_type" c_soup_multipart_input_stream_get_type :: IO GType type instance ParentTypes MultipartInputStream = MultipartInputStreamParentTypes type MultipartInputStreamParentTypes = '[Gio.FilterInputStream, Gio.InputStream, GObject.Object, Gio.PollableInputStream] instance GObject MultipartInputStream where gobjectIsInitiallyUnowned _ = False gobjectType _ = c_soup_multipart_input_stream_get_type class GObject o => MultipartInputStreamK o instance (GObject o, IsDescendantOf MultipartInputStream o) => MultipartInputStreamK o toMultipartInputStream :: MultipartInputStreamK o => o -> IO MultipartInputStream toMultipartInputStream = unsafeCastTo MultipartInputStream noMultipartInputStream :: Maybe MultipartInputStream noMultipartInputStream = Nothing -- VVV Prop "message" -- Type: TInterface "Soup" "Message" -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly] getMultipartInputStreamMessage :: (MonadIO m, MultipartInputStreamK o) => o -> m Message getMultipartInputStreamMessage obj = liftIO $ getObjectPropertyObject obj "message" Message constructMultipartInputStreamMessage :: (MessageK a) => a -> IO ([Char], GValue) constructMultipartInputStreamMessage val = constructObjectPropertyObject "message" val data MultipartInputStreamMessagePropertyInfo instance AttrInfo MultipartInputStreamMessagePropertyInfo where type AttrAllowedOps MultipartInputStreamMessagePropertyInfo = '[ 'AttrConstruct, 'AttrGet] type AttrSetTypeConstraint MultipartInputStreamMessagePropertyInfo = MessageK type AttrBaseTypeConstraint MultipartInputStreamMessagePropertyInfo = MultipartInputStreamK type AttrGetType MultipartInputStreamMessagePropertyInfo = Message type AttrLabel MultipartInputStreamMessagePropertyInfo = "MultipartInputStream::message" attrGet _ = getMultipartInputStreamMessage attrSet _ = undefined attrConstruct _ = constructMultipartInputStreamMessage type instance AttributeList MultipartInputStream = MultipartInputStreamAttributeList type MultipartInputStreamAttributeList = ('[ '("base-stream", Gio.FilterInputStreamBaseStreamPropertyInfo), '("close-base-stream", Gio.FilterInputStreamCloseBaseStreamPropertyInfo), '("message", MultipartInputStreamMessagePropertyInfo)] :: [(Symbol, *)]) type instance SignalList MultipartInputStream = MultipartInputStreamSignalList type MultipartInputStreamSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)]) -- method MultipartInputStream::new -- method type : Constructor -- Args : [Arg {argName = "msg", argType = TInterface "Soup" "Message", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "base_stream", argType = TInterface "Gio" "InputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "msg", argType = TInterface "Soup" "Message", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "base_stream", argType = TInterface "Gio" "InputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TInterface "Soup" "MultipartInputStream" -- throws : False -- Skip return : False foreign import ccall "soup_multipart_input_stream_new" soup_multipart_input_stream_new :: Ptr Message -> -- msg : TInterface "Soup" "Message" Ptr Gio.InputStream -> -- base_stream : TInterface "Gio" "InputStream" IO (Ptr MultipartInputStream) multipartInputStreamNew :: (MonadIO m, MessageK a, Gio.InputStreamK b) => a -> -- msg b -> -- base_stream m MultipartInputStream multipartInputStreamNew msg base_stream = liftIO $ do let msg' = unsafeManagedPtrCastPtr msg let base_stream' = unsafeManagedPtrCastPtr base_stream result <- soup_multipart_input_stream_new msg' base_stream' checkUnexpectedReturnNULL "soup_multipart_input_stream_new" result result' <- (wrapObject MultipartInputStream) result touchManagedPtr msg touchManagedPtr base_stream return result' -- method MultipartInputStream::get_headers -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Soup" "MultipartInputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Soup" "MultipartInputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TInterface "Soup" "MessageHeaders" -- throws : False -- Skip return : False foreign import ccall "soup_multipart_input_stream_get_headers" soup_multipart_input_stream_get_headers :: Ptr MultipartInputStream -> -- _obj : TInterface "Soup" "MultipartInputStream" IO (Ptr MessageHeaders) multipartInputStreamGetHeaders :: (MonadIO m, MultipartInputStreamK a) => a -> -- _obj m MessageHeaders multipartInputStreamGetHeaders _obj = liftIO $ do let _obj' = unsafeManagedPtrCastPtr _obj result <- soup_multipart_input_stream_get_headers _obj' checkUnexpectedReturnNULL "soup_multipart_input_stream_get_headers" result result' <- (newBoxed MessageHeaders) result touchManagedPtr _obj return result' -- method MultipartInputStream::next_part -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Soup" "MultipartInputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Soup" "MultipartInputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TInterface "Gio" "InputStream" -- throws : True -- Skip return : False foreign import ccall "soup_multipart_input_stream_next_part" soup_multipart_input_stream_next_part :: Ptr MultipartInputStream -> -- _obj : TInterface "Soup" "MultipartInputStream" Ptr Gio.Cancellable -> -- cancellable : TInterface "Gio" "Cancellable" Ptr (Ptr GError) -> -- error IO (Ptr Gio.InputStream) multipartInputStreamNextPart :: (MonadIO m, MultipartInputStreamK a, Gio.CancellableK b) => a -> -- _obj Maybe (b) -> -- cancellable m Gio.InputStream multipartInputStreamNextPart _obj cancellable = liftIO $ do let _obj' = unsafeManagedPtrCastPtr _obj maybeCancellable <- case cancellable of Nothing -> return nullPtr Just jCancellable -> do let jCancellable' = unsafeManagedPtrCastPtr jCancellable return jCancellable' onException (do result <- propagateGError $ soup_multipart_input_stream_next_part _obj' maybeCancellable checkUnexpectedReturnNULL "soup_multipart_input_stream_next_part" result result' <- (wrapObject Gio.InputStream) result touchManagedPtr _obj whenJust cancellable touchManagedPtr return result' ) (do return () ) -- method MultipartInputStream::next_part_async -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Soup" "MultipartInputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "io_priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "callback", argType = TInterface "Gio" "AsyncReadyCallback", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = 4, argDestroy = -1, transfer = TransferNothing},Arg {argName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Soup" "MultipartInputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "io_priority", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cancellable", argType = TInterface "Gio" "Cancellable", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "callback", argType = TInterface "Gio" "AsyncReadyCallback", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeAsync, argClosure = 4, argDestroy = -1, transfer = TransferNothing}] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "soup_multipart_input_stream_next_part_async" soup_multipart_input_stream_next_part_async :: Ptr MultipartInputStream -> -- _obj : TInterface "Soup" "MultipartInputStream" Int32 -> -- io_priority : TBasicType TInt32 Ptr Gio.Cancellable -> -- cancellable : TInterface "Gio" "Cancellable" FunPtr Gio.AsyncReadyCallbackC -> -- callback : TInterface "Gio" "AsyncReadyCallback" Ptr () -> -- data : TBasicType TVoid IO () multipartInputStreamNextPartAsync :: (MonadIO m, MultipartInputStreamK a, Gio.CancellableK b) => a -> -- _obj Int32 -> -- io_priority Maybe (b) -> -- cancellable Maybe (Gio.AsyncReadyCallback) -> -- callback m () multipartInputStreamNextPartAsync _obj io_priority cancellable callback = liftIO $ do let _obj' = unsafeManagedPtrCastPtr _obj maybeCancellable <- case cancellable of Nothing -> return nullPtr Just jCancellable -> do let jCancellable' = unsafeManagedPtrCastPtr jCancellable return jCancellable' ptrcallback <- callocMem :: IO (Ptr (FunPtr Gio.AsyncReadyCallbackC)) maybeCallback <- case callback of Nothing -> return (castPtrToFunPtr nullPtr) Just jCallback -> do jCallback' <- Gio.mkAsyncReadyCallback (Gio.asyncReadyCallbackWrapper (Just ptrcallback) jCallback) poke ptrcallback jCallback' return jCallback' let data_ = nullPtr soup_multipart_input_stream_next_part_async _obj' io_priority maybeCancellable maybeCallback data_ touchManagedPtr _obj whenJust cancellable touchManagedPtr return () -- method MultipartInputStream::next_part_finish -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "Soup" "MultipartInputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "result", argType = TInterface "Gio" "AsyncResult", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "Soup" "MultipartInputStream", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "result", argType = TInterface "Gio" "AsyncResult", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TInterface "Gio" "InputStream" -- throws : True -- Skip return : False foreign import ccall "soup_multipart_input_stream_next_part_finish" soup_multipart_input_stream_next_part_finish :: Ptr MultipartInputStream -> -- _obj : TInterface "Soup" "MultipartInputStream" Ptr Gio.AsyncResult -> -- result : TInterface "Gio" "AsyncResult" Ptr (Ptr GError) -> -- error IO (Ptr Gio.InputStream) multipartInputStreamNextPartFinish :: (MonadIO m, MultipartInputStreamK a, Gio.AsyncResultK b) => a -> -- _obj b -> -- result m Gio.InputStream multipartInputStreamNextPartFinish _obj result_ = liftIO $ do let _obj' = unsafeManagedPtrCastPtr _obj let result_' = unsafeManagedPtrCastPtr result_ onException (do result <- propagateGError $ soup_multipart_input_stream_next_part_finish _obj' result_' checkUnexpectedReturnNULL "soup_multipart_input_stream_next_part_finish" result result' <- (wrapObject Gio.InputStream) result touchManagedPtr _obj touchManagedPtr result_ return result' ) (do return () )