module GI.Ggit.Objects.Remote
(
Remote(..) ,
IsRemote ,
toRemote ,
noRemote ,
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
RemoteConnectMethodInfo ,
#endif
remoteConnect ,
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
RemoteDisconnectMethodInfo ,
#endif
remoteDisconnect ,
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
RemoteDownloadMethodInfo ,
#endif
remoteDownload ,
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
RemoteGetConnectedMethodInfo ,
#endif
remoteGetConnected ,
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
RemoteGetFetchSpecsMethodInfo ,
#endif
remoteGetFetchSpecs ,
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
RemoteGetNameMethodInfo ,
#endif
remoteGetName ,
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
RemoteGetOwnerMethodInfo ,
#endif
remoteGetOwner ,
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
RemoteGetPushSpecsMethodInfo ,
#endif
remoteGetPushSpecs ,
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
RemoteGetUrlMethodInfo ,
#endif
remoteGetUrl ,
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
RemoteListMethodInfo ,
#endif
remoteList ,
remoteNew ,
remoteNewAnonymous ,
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
RemoteUpdateTipsMethodInfo ,
#endif
remoteUpdateTips ,
) 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.Ggit.Enums as Ggit.Enums
import qualified GI.Ggit.Objects.Native as Ggit.Native
import qualified GI.Ggit.Objects.ObjectFactoryBase as Ggit.ObjectFactoryBase
import qualified GI.Ggit.Objects.ProxyOptions as Ggit.ProxyOptions
import qualified GI.Ggit.Objects.RemoteCallbacks as Ggit.RemoteCallbacks
import qualified GI.Ggit.Objects.Repository as Ggit.Repository
import qualified GI.Ggit.Structs.FetchOptions as Ggit.FetchOptions
import qualified GI.Ggit.Structs.RemoteHead as Ggit.RemoteHead
newtype Remote = Remote (ManagedPtr Remote)
foreign import ccall "ggit_remote_get_type"
c_ggit_remote_get_type :: IO GType
instance GObject Remote where
gobjectType _ = c_ggit_remote_get_type
class GObject o => IsRemote o
#if MIN_VERSION_base(4,9,0)
instance (GObject a, O.UnknownAncestorError Remote a) =>
IsRemote a
#endif
instance IsRemote Remote
instance Ggit.Native.IsNative Remote
instance Ggit.ObjectFactoryBase.IsObjectFactoryBase Remote
instance GObject.Object.IsObject Remote
toRemote :: (MonadIO m, IsRemote o) => o -> m Remote
toRemote = liftIO . unsafeCastTo Remote
noRemote :: Maybe Remote
noRemote = Nothing
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
type family ResolveRemoteMethod (t :: Symbol) (o :: *) :: * where
ResolveRemoteMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveRemoteMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveRemoteMethod "connect" o = RemoteConnectMethodInfo
ResolveRemoteMethod "disconnect" o = RemoteDisconnectMethodInfo
ResolveRemoteMethod "download" o = RemoteDownloadMethodInfo
ResolveRemoteMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveRemoteMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveRemoteMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveRemoteMethod "list" o = RemoteListMethodInfo
ResolveRemoteMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveRemoteMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveRemoteMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveRemoteMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveRemoteMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
ResolveRemoteMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
ResolveRemoteMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveRemoteMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveRemoteMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveRemoteMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveRemoteMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveRemoteMethod "updateTips" o = RemoteUpdateTipsMethodInfo
ResolveRemoteMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveRemoteMethod "getConnected" o = RemoteGetConnectedMethodInfo
ResolveRemoteMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveRemoteMethod "getFetchSpecs" o = RemoteGetFetchSpecsMethodInfo
ResolveRemoteMethod "getName" o = RemoteGetNameMethodInfo
ResolveRemoteMethod "getOwner" o = RemoteGetOwnerMethodInfo
ResolveRemoteMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveRemoteMethod "getPushSpecs" o = RemoteGetPushSpecsMethodInfo
ResolveRemoteMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveRemoteMethod "getUrl" o = RemoteGetUrlMethodInfo
ResolveRemoteMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveRemoteMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveRemoteMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveRemoteMethod t Remote, O.MethodInfo info Remote p) => O.IsLabelProxy t (Remote -> p) where
fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveRemoteMethod t Remote, O.MethodInfo info Remote p) => O.IsLabel t (Remote -> 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
#endif
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
instance O.HasAttributeList Remote
type instance O.AttributeList Remote = RemoteAttributeList
type RemoteAttributeList = ('[ '("native", Ggit.Native.NativeNativePropertyInfo)] :: [(Symbol, *)])
#endif
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
#endif
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
type instance O.SignalList Remote = RemoteSignalList
type RemoteSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])
#endif
foreign import ccall "ggit_remote_new" ggit_remote_new ::
Ptr Ggit.Repository.Repository ->
CString ->
CString ->
Ptr (Ptr GError) ->
IO (Ptr Remote)
remoteNew ::
(B.CallStack.HasCallStack, MonadIO m, Ggit.Repository.IsRepository a) =>
a
-> T.Text
-> T.Text
-> m Remote
remoteNew repository name url = liftIO $ do
repository' <- unsafeManagedPtrCastPtr repository
name' <- textToCString name
url' <- textToCString url
onException (do
result <- propagateGError $ ggit_remote_new repository' name' url'
checkUnexpectedReturnNULL "remoteNew" result
result' <- (wrapObject Remote) result
touchManagedPtr repository
freeMem name'
freeMem url'
return result'
) (do
freeMem name'
freeMem url'
)
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
#endif
foreign import ccall "ggit_remote_new_anonymous" ggit_remote_new_anonymous ::
Ptr Ggit.Repository.Repository ->
CString ->
Ptr (Ptr GError) ->
IO (Ptr Remote)
remoteNewAnonymous ::
(B.CallStack.HasCallStack, MonadIO m, Ggit.Repository.IsRepository a) =>
a
-> T.Text
-> m Remote
remoteNewAnonymous repository url = liftIO $ do
repository' <- unsafeManagedPtrCastPtr repository
url' <- textToCString url
onException (do
result <- propagateGError $ ggit_remote_new_anonymous repository' url'
checkUnexpectedReturnNULL "remoteNewAnonymous" result
result' <- (wrapObject Remote) result
touchManagedPtr repository
freeMem url'
return result'
) (do
freeMem url'
)
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
#endif
foreign import ccall "ggit_remote_connect" ggit_remote_connect ::
Ptr Remote ->
CUInt ->
Ptr Ggit.RemoteCallbacks.RemoteCallbacks ->
Ptr Ggit.ProxyOptions.ProxyOptions ->
CString ->
Ptr (Ptr GError) ->
IO ()
remoteConnect ::
(B.CallStack.HasCallStack, MonadIO m, IsRemote a, Ggit.RemoteCallbacks.IsRemoteCallbacks b, Ggit.ProxyOptions.IsProxyOptions c) =>
a
-> Ggit.Enums.Direction
-> b
-> Maybe (c)
-> Maybe (T.Text)
-> m ()
remoteConnect remote direction callbacks proxyOptions customHeaders = liftIO $ do
remote' <- unsafeManagedPtrCastPtr remote
let direction' = (fromIntegral . fromEnum) direction
callbacks' <- unsafeManagedPtrCastPtr callbacks
maybeProxyOptions <- case proxyOptions of
Nothing -> return nullPtr
Just jProxyOptions -> do
jProxyOptions' <- unsafeManagedPtrCastPtr jProxyOptions
return jProxyOptions'
maybeCustomHeaders <- case customHeaders of
Nothing -> return nullPtr
Just jCustomHeaders -> do
jCustomHeaders' <- textToCString jCustomHeaders
return jCustomHeaders'
onException (do
propagateGError $ ggit_remote_connect remote' direction' callbacks' maybeProxyOptions maybeCustomHeaders
touchManagedPtr remote
touchManagedPtr callbacks
whenJust proxyOptions touchManagedPtr
freeMem maybeCustomHeaders
return ()
) (do
freeMem maybeCustomHeaders
)
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data RemoteConnectMethodInfo
instance (signature ~ (Ggit.Enums.Direction -> b -> Maybe (c) -> Maybe (T.Text) -> m ()), MonadIO m, IsRemote a, Ggit.RemoteCallbacks.IsRemoteCallbacks b, Ggit.ProxyOptions.IsProxyOptions c) => O.MethodInfo RemoteConnectMethodInfo a signature where
overloadedMethod _ = remoteConnect
#endif
foreign import ccall "ggit_remote_disconnect" ggit_remote_disconnect ::
Ptr Remote ->
IO ()
remoteDisconnect ::
(B.CallStack.HasCallStack, MonadIO m, IsRemote a) =>
a
-> m ()
remoteDisconnect remote = liftIO $ do
remote' <- unsafeManagedPtrCastPtr remote
ggit_remote_disconnect remote'
touchManagedPtr remote
return ()
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data RemoteDisconnectMethodInfo
instance (signature ~ (m ()), MonadIO m, IsRemote a) => O.MethodInfo RemoteDisconnectMethodInfo a signature where
overloadedMethod _ = remoteDisconnect
#endif
foreign import ccall "ggit_remote_download" ggit_remote_download ::
Ptr Remote ->
Ptr CString ->
Ptr Ggit.FetchOptions.FetchOptions ->
Ptr (Ptr GError) ->
IO CInt
remoteDownload ::
(B.CallStack.HasCallStack, MonadIO m, IsRemote a) =>
a
-> Maybe ([T.Text])
-> Ggit.FetchOptions.FetchOptions
-> m ()
remoteDownload remote specs fetchOptions = liftIO $ do
remote' <- unsafeManagedPtrCastPtr remote
maybeSpecs <- case specs of
Nothing -> return nullPtr
Just jSpecs -> do
jSpecs' <- packZeroTerminatedUTF8CArray jSpecs
return jSpecs'
fetchOptions' <- unsafeManagedPtrGetPtr fetchOptions
onException (do
_ <- propagateGError $ ggit_remote_download remote' maybeSpecs fetchOptions'
touchManagedPtr remote
touchManagedPtr fetchOptions
mapZeroTerminatedCArray freeMem maybeSpecs
freeMem maybeSpecs
return ()
) (do
mapZeroTerminatedCArray freeMem maybeSpecs
freeMem maybeSpecs
)
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data RemoteDownloadMethodInfo
instance (signature ~ (Maybe ([T.Text]) -> Ggit.FetchOptions.FetchOptions -> m ()), MonadIO m, IsRemote a) => O.MethodInfo RemoteDownloadMethodInfo a signature where
overloadedMethod _ = remoteDownload
#endif
foreign import ccall "ggit_remote_get_connected" ggit_remote_get_connected ::
Ptr Remote ->
IO CInt
remoteGetConnected ::
(B.CallStack.HasCallStack, MonadIO m, IsRemote a) =>
a
-> m Bool
remoteGetConnected remote = liftIO $ do
remote' <- unsafeManagedPtrCastPtr remote
result <- ggit_remote_get_connected remote'
let result' = (/= 0) result
touchManagedPtr remote
return result'
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data RemoteGetConnectedMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsRemote a) => O.MethodInfo RemoteGetConnectedMethodInfo a signature where
overloadedMethod _ = remoteGetConnected
#endif
foreign import ccall "ggit_remote_get_fetch_specs" ggit_remote_get_fetch_specs ::
Ptr Remote ->
Ptr (Ptr GError) ->
IO (Ptr CString)
remoteGetFetchSpecs ::
(B.CallStack.HasCallStack, MonadIO m, IsRemote a) =>
a
-> m (Maybe [T.Text])
remoteGetFetchSpecs remote = liftIO $ do
remote' <- unsafeManagedPtrCastPtr remote
onException (do
result <- propagateGError $ ggit_remote_get_fetch_specs remote'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- unpackZeroTerminatedUTF8CArray result'
mapZeroTerminatedCArray freeMem result'
freeMem result'
return result''
touchManagedPtr remote
return maybeResult
) (do
return ()
)
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data RemoteGetFetchSpecsMethodInfo
instance (signature ~ (m (Maybe [T.Text])), MonadIO m, IsRemote a) => O.MethodInfo RemoteGetFetchSpecsMethodInfo a signature where
overloadedMethod _ = remoteGetFetchSpecs
#endif
foreign import ccall "ggit_remote_get_name" ggit_remote_get_name ::
Ptr Remote ->
IO CString
remoteGetName ::
(B.CallStack.HasCallStack, MonadIO m, IsRemote a) =>
a
-> m T.Text
remoteGetName remote = liftIO $ do
remote' <- unsafeManagedPtrCastPtr remote
result <- ggit_remote_get_name remote'
checkUnexpectedReturnNULL "remoteGetName" result
result' <- cstringToText result
touchManagedPtr remote
return result'
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data RemoteGetNameMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsRemote a) => O.MethodInfo RemoteGetNameMethodInfo a signature where
overloadedMethod _ = remoteGetName
#endif
foreign import ccall "ggit_remote_get_owner" ggit_remote_get_owner ::
Ptr Remote ->
IO (Ptr Ggit.Repository.Repository)
remoteGetOwner ::
(B.CallStack.HasCallStack, MonadIO m, IsRemote a) =>
a
-> m Ggit.Repository.Repository
remoteGetOwner remote = liftIO $ do
remote' <- unsafeManagedPtrCastPtr remote
result <- ggit_remote_get_owner remote'
checkUnexpectedReturnNULL "remoteGetOwner" result
result' <- (wrapObject Ggit.Repository.Repository) result
touchManagedPtr remote
return result'
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data RemoteGetOwnerMethodInfo
instance (signature ~ (m Ggit.Repository.Repository), MonadIO m, IsRemote a) => O.MethodInfo RemoteGetOwnerMethodInfo a signature where
overloadedMethod _ = remoteGetOwner
#endif
foreign import ccall "ggit_remote_get_push_specs" ggit_remote_get_push_specs ::
Ptr Remote ->
Ptr (Ptr GError) ->
IO (Ptr CString)
remoteGetPushSpecs ::
(B.CallStack.HasCallStack, MonadIO m, IsRemote a) =>
a
-> m (Maybe [T.Text])
remoteGetPushSpecs remote = liftIO $ do
remote' <- unsafeManagedPtrCastPtr remote
onException (do
result <- propagateGError $ ggit_remote_get_push_specs remote'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- unpackZeroTerminatedUTF8CArray result'
mapZeroTerminatedCArray freeMem result'
freeMem result'
return result''
touchManagedPtr remote
return maybeResult
) (do
return ()
)
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data RemoteGetPushSpecsMethodInfo
instance (signature ~ (m (Maybe [T.Text])), MonadIO m, IsRemote a) => O.MethodInfo RemoteGetPushSpecsMethodInfo a signature where
overloadedMethod _ = remoteGetPushSpecs
#endif
foreign import ccall "ggit_remote_get_url" ggit_remote_get_url ::
Ptr Remote ->
IO CString
remoteGetUrl ::
(B.CallStack.HasCallStack, MonadIO m, IsRemote a) =>
a
-> m T.Text
remoteGetUrl remote = liftIO $ do
remote' <- unsafeManagedPtrCastPtr remote
result <- ggit_remote_get_url remote'
checkUnexpectedReturnNULL "remoteGetUrl" result
result' <- cstringToText result
touchManagedPtr remote
return result'
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data RemoteGetUrlMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsRemote a) => O.MethodInfo RemoteGetUrlMethodInfo a signature where
overloadedMethod _ = remoteGetUrl
#endif
foreign import ccall "ggit_remote_list" ggit_remote_list ::
Ptr Remote ->
Ptr (Ptr GError) ->
IO (Ptr (Ptr Ggit.RemoteHead.RemoteHead))
remoteList ::
(B.CallStack.HasCallStack, MonadIO m, IsRemote a) =>
a
-> m [Ggit.RemoteHead.RemoteHead]
remoteList remote = liftIO $ do
remote' <- unsafeManagedPtrCastPtr remote
onException (do
result <- propagateGError $ ggit_remote_list remote'
checkUnexpectedReturnNULL "remoteList" result
result' <- unpackZeroTerminatedPtrArray result
result'' <- mapM (wrapBoxed Ggit.RemoteHead.RemoteHead) result'
freeMem result
touchManagedPtr remote
return result''
) (do
return ()
)
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data RemoteListMethodInfo
instance (signature ~ (m [Ggit.RemoteHead.RemoteHead]), MonadIO m, IsRemote a) => O.MethodInfo RemoteListMethodInfo a signature where
overloadedMethod _ = remoteList
#endif
foreign import ccall "ggit_remote_update_tips" ggit_remote_update_tips ::
Ptr Remote ->
Ptr Ggit.RemoteCallbacks.RemoteCallbacks ->
CInt ->
CUInt ->
CString ->
Ptr (Ptr GError) ->
IO CInt
remoteUpdateTips ::
(B.CallStack.HasCallStack, MonadIO m, IsRemote a, Ggit.RemoteCallbacks.IsRemoteCallbacks b) =>
a
-> b
-> Bool
-> Ggit.Enums.RemoteDownloadTagsType
-> Maybe (T.Text)
-> m ()
remoteUpdateTips remote callbacks updateFetchHead tagsType message = liftIO $ do
remote' <- unsafeManagedPtrCastPtr remote
callbacks' <- unsafeManagedPtrCastPtr callbacks
let updateFetchHead' = (fromIntegral . fromEnum) updateFetchHead
let tagsType' = (fromIntegral . fromEnum) tagsType
maybeMessage <- case message of
Nothing -> return nullPtr
Just jMessage -> do
jMessage' <- textToCString jMessage
return jMessage'
onException (do
_ <- propagateGError $ ggit_remote_update_tips remote' callbacks' updateFetchHead' tagsType' maybeMessage
touchManagedPtr remote
touchManagedPtr callbacks
freeMem maybeMessage
return ()
) (do
freeMem maybeMessage
)
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data RemoteUpdateTipsMethodInfo
instance (signature ~ (b -> Bool -> Ggit.Enums.RemoteDownloadTagsType -> Maybe (T.Text) -> m ()), MonadIO m, IsRemote a, Ggit.RemoteCallbacks.IsRemoteCallbacks b) => O.MethodInfo RemoteUpdateTipsMethodInfo a signature where
overloadedMethod _ = remoteUpdateTips
#endif