-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | GLOBUS Data Transfer
--
-- GLOBUS Data Transfer
@package globus
@version 0.1.2
module Network.Globus.Types
type Token a = Tagged a Text
type Id a = Tagged a Text
data Token'
ClientId :: Token'
ClientSecret :: Token'
Exchange :: Token'
Access :: Token'
data Id'
Submission :: Id'
Request :: Id'
Collection :: Id'
data DataType (s :: Symbol)
DataType :: DataType (s :: Symbol)
data Endpoint
Redirect :: Endpoint
Authorization :: Endpoint
Tokens :: Endpoint
App :: Endpoint
-- | Simple URI Type, since all the others are obnoxious
data Uri (a :: Endpoint)
Uri :: Scheme -> Text -> [Text] -> Query -> Uri (a :: Endpoint)
[$sel:scheme:Uri] :: Uri (a :: Endpoint) -> Scheme
[$sel:domain:Uri] :: Uri (a :: Endpoint) -> Text
[$sel:path:Uri] :: Uri (a :: Endpoint) -> [Text]
[$sel:params:Uri] :: Uri (a :: Endpoint) -> Query
renderUri :: Uri a -> Text
newtype Query
Query :: [(Text, Maybe Text)] -> Query
renderQuery :: Query -> Text
data Scope
TransferAll :: Scope
Identity :: ScopeIdentity -> Scope
data ScopeIdentity
OpenId :: ScopeIdentity
Email :: ScopeIdentity
Profile :: ScopeIdentity
scopeText :: Scope -> Text
scope :: Text -> Maybe Scope
newtype Scopes
Scopes :: NonEmpty Scope -> Scopes
instance GHC.Base.Semigroup Network.Globus.Types.Query
instance GHC.Base.Monoid Network.Globus.Types.Query
instance GHC.Classes.Eq Network.Globus.Types.ScopeIdentity
instance GHC.Show.Show Network.Globus.Types.ScopeIdentity
instance GHC.Classes.Eq Network.Globus.Types.Scope
instance GHC.Show.Show Network.Globus.Types.Scope
instance GHC.Show.Show Network.Globus.Types.Scopes
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Types.Scopes
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Types.Scope
instance GHC.Show.Show (Network.Globus.Types.Uri a)
instance GHC.Show.Show Network.Globus.Types.Query
instance GHC.IsList.IsList Network.Globus.Types.Query
instance Network.HTTP.Req.QueryParam Network.Globus.Types.Query
instance GHC.TypeLits.KnownSymbol s => Data.Aeson.Types.ToJSON.ToJSON (Network.Globus.Types.DataType s)
module Network.Globus.Transfer
fetchSubmissionId :: MonadIO m => Token Access -> m (Id Submission)
transferAuth :: Token Access -> Option Https
transferEndpoint :: Url 'Https
sendTransfer :: MonadIO m => Token Access -> TransferRequest -> m TransferResponse
fetchTask :: MonadIO m => Token Access -> Id Task -> m Task
newtype TaskFilters
TaskFilters :: [TaskStatus] -> TaskFilters
[$sel:status:TaskFilters] :: TaskFilters -> [TaskStatus]
fetchTasks :: MonadIO m => Token Access -> TaskFilters -> m TaskList
activityUrl :: Id Task -> Uri App
taskPercentComplete :: Task -> Float
data IdResponse
IdResponse :: Text -> IdResponse
[$sel:value:IdResponse] :: IdResponse -> Text
data Task
Task :: TaskStatus -> Id Task -> Text -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Maybe Text -> Id Collection -> Id Collection -> Task
[$sel:status:Task] :: Task -> TaskStatus
[$sel:task_id:Task] :: Task -> Id Task
[$sel:label:Task] :: Task -> Text
[$sel:files:Task] :: Task -> Int
[$sel:directories:Task] :: Task -> Int
[$sel:files_skipped:Task] :: Task -> Int
[$sel:files_transferred:Task] :: Task -> Int
[$sel:bytes_transferred:Task] :: Task -> Int
[$sel:bytes_checksummed:Task] :: Task -> Int
[$sel:effective_bytes_per_second:Task] :: Task -> Int
[$sel:nice_status:Task] :: Task -> Maybe Text
[$sel:source_endpoint_id:Task] :: Task -> Id Collection
[$sel:destination_endpoint_id:Task] :: Task -> Id Collection
data TaskStatus
Active :: TaskStatus
Inactive :: TaskStatus
Succeeded :: TaskStatus
Failed :: TaskStatus
data TaskList
TaskList :: Int -> Int -> Int -> Int -> [Task] -> TaskList
[$sel:length:TaskList] :: TaskList -> Int
[$sel:limit:TaskList] :: TaskList -> Int
[$sel:offset:TaskList] :: TaskList -> Int
[$sel:total:TaskList] :: TaskList -> Int
[$sel:data_:TaskList] :: TaskList -> [Task]
data TransferResponse
TransferResponse :: Id Task -> Token Submission -> Text -> Text -> Token Request -> TransferResponse
[$sel:task_id:TransferResponse] :: TransferResponse -> Id Task
[$sel:submission_id:TransferResponse] :: TransferResponse -> Token Submission
[$sel:message:TransferResponse] :: TransferResponse -> Text
[$sel:resource:TransferResponse] :: TransferResponse -> Text
[$sel:request_id:TransferResponse] :: TransferResponse -> Token Request
data TransferRequest
TransferRequest :: DataType "transfer" -> Id Submission -> Maybe Text -> Id Collection -> Id Collection -> [TransferItem] -> SyncLevel -> Bool -> TransferRequest
[$sel:data_type:TransferRequest] :: TransferRequest -> DataType "transfer"
[$sel:submission_id:TransferRequest] :: TransferRequest -> Id Submission
[$sel:label:TransferRequest] :: TransferRequest -> Maybe Text
[$sel:source_endpoint:TransferRequest] :: TransferRequest -> Id Collection
[$sel:destination_endpoint:TransferRequest] :: TransferRequest -> Id Collection
[$sel:data_:TransferRequest] :: TransferRequest -> [TransferItem]
[$sel:sync_level:TransferRequest] :: TransferRequest -> SyncLevel
[$sel:store_base_path_info:TransferRequest] :: TransferRequest -> Bool
data TransferItem
TransferItem :: DataType "transfer_item" -> FilePath -> FilePath -> Bool -> TransferItem
[$sel:data_type:TransferItem] :: TransferItem -> DataType "transfer_item"
[$sel:source_path:TransferItem] :: TransferItem -> FilePath
[$sel:destination_path:TransferItem] :: TransferItem -> FilePath
[$sel:recursive:TransferItem] :: TransferItem -> Bool
data SyncLevel
SyncExists :: SyncLevel
SyncSize :: SyncLevel
SyncTimestamp :: SyncLevel
SyncChecksum :: SyncLevel
dataLabelsJson :: (Generic a, GToJSON' Value Zero (Rep a)) => a -> Value
dataLabels :: String -> String
instance GHC.Show.Show Network.Globus.Transfer.IdResponse
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Transfer.IdResponse
instance GHC.Generics.Generic Network.Globus.Transfer.IdResponse
instance GHC.Classes.Eq Network.Globus.Transfer.TaskStatus
instance GHC.Show.Show Network.Globus.Transfer.TaskStatus
instance GHC.Generics.Generic Network.Globus.Transfer.TaskStatus
instance GHC.Classes.Eq Network.Globus.Transfer.Task
instance GHC.Show.Show Network.Globus.Transfer.Task
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Transfer.Task
instance GHC.Generics.Generic Network.Globus.Transfer.Task
instance GHC.Classes.Eq Network.Globus.Transfer.TaskFilters
instance GHC.Show.Show Network.Globus.Transfer.TaskFilters
instance GHC.Show.Show Network.Globus.Transfer.TaskList
instance GHC.Generics.Generic Network.Globus.Transfer.TaskList
instance GHC.Show.Show Network.Globus.Transfer.TransferResponse
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Transfer.TransferResponse
instance GHC.Generics.Generic Network.Globus.Transfer.TransferResponse
instance GHC.Generics.Generic Network.Globus.Transfer.TransferItem
instance GHC.Generics.Generic Network.Globus.Transfer.TransferRequest
instance Data.Aeson.Types.ToJSON.ToJSON Network.Globus.Transfer.TransferRequest
instance Data.Aeson.Types.ToJSON.ToJSON Network.Globus.Transfer.SyncLevel
instance Data.Aeson.Types.ToJSON.ToJSON Network.Globus.Transfer.TransferItem
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Transfer.TaskList
instance GHC.Base.Monoid Network.Globus.Transfer.TaskFilters
instance GHC.Base.Semigroup Network.Globus.Transfer.TaskFilters
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Transfer.TaskStatus
module Network.Globus.Auth
-- | Opaque secret identifying the user. Validate on redirect
newtype State
State :: Text -> State
-- | The end user must visit this url
authorizationUrl :: Token ClientId -> Uri Redirect -> NonEmpty Scope -> State -> Uri Authorization
fetchAccessTokens :: MonadIO m => Token ClientId -> Token ClientSecret -> Uri Redirect -> Token Exchange -> m (NonEmpty TokenItem)
redirectUri :: QueryParam param => Uri Redirect -> param
-- | fetchAccessTokens returns a non-empty list matching the scopes
newtype TokenResponse
TokenResponse :: NonEmpty TokenItem -> TokenResponse
data TokenItem
TokenItem :: Scopes -> Token Access -> Int -> State -> TokenItem
[$sel:scope:TokenItem] :: TokenItem -> Scopes
[$sel:access_token:TokenItem] :: TokenItem -> Token Access
[$sel:expires_in:TokenItem] :: TokenItem -> Int
[$sel:state:TokenItem] :: TokenItem -> State
scopeToken :: Scope -> NonEmpty TokenItem -> Maybe (Token Access)
-- | You MUST include the OpenId Scope for this to work
fetchUserInfo :: MonadIO m => Token OpenId -> m UserInfoResponse
identityAuth :: Token OpenId -> Option Https
data UserInfoResponse
UserInfoResponse :: UserInfo -> Maybe UserEmail -> Maybe UserProfile -> UserInfoResponse
[$sel:info:UserInfoResponse] :: UserInfoResponse -> UserInfo
[$sel:email:UserInfoResponse] :: UserInfoResponse -> Maybe UserEmail
[$sel:profile:UserInfoResponse] :: UserInfoResponse -> Maybe UserProfile
data UserInfo
UserInfo :: Text -> Int -> UserInfo
[$sel:sub:UserInfo] :: UserInfo -> Text
[$sel:last_authentication:UserInfo] :: UserInfo -> Int
newtype UserEmail
UserEmail :: Text -> UserEmail
data UserProfile
UserProfile :: Text -> Text -> Text -> Text -> Text -> UserProfile
[$sel:name:UserProfile] :: UserProfile -> Text
[$sel:organization:UserProfile] :: UserProfile -> Text
[$sel:preferred_username:UserProfile] :: UserProfile -> Text
[$sel:identity_provider:UserProfile] :: UserProfile -> Text
[$sel:identity_provider_display_name:UserProfile] :: UserProfile -> Text
instance GHC.Show.Show Network.Globus.Auth.State
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Auth.State
instance Data.String.IsString Network.Globus.Auth.State
instance GHC.Show.Show Network.Globus.Auth.TokenItem
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Auth.TokenItem
instance GHC.Generics.Generic Network.Globus.Auth.TokenItem
instance GHC.Show.Show Network.Globus.Auth.TokenResponse
instance GHC.Show.Show Network.Globus.Auth.UserInfo
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Auth.UserInfo
instance GHC.Generics.Generic Network.Globus.Auth.UserInfo
instance GHC.Classes.Eq Network.Globus.Auth.UserEmail
instance GHC.Show.Show Network.Globus.Auth.UserEmail
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Auth.UserEmail
instance GHC.Show.Show Network.Globus.Auth.UserProfile
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Auth.UserProfile
instance GHC.Generics.Generic Network.Globus.Auth.UserProfile
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Auth.UserInfoResponse
instance Data.Aeson.Types.FromJSON.FromJSON Network.Globus.Auth.TokenResponse
module Network.Globus
-- | A Tagged s b value is a value b with an
-- attached phantom type s. This can be used in place of the
-- more traditional but less safe idiom of passing in an undefined value
-- with the type, because unlike an (s -> b), a
-- Tagged s b can't try to use the argument s as
-- a real value.
--
-- Moreover, you don't have to rely on the compiler to inline away the
-- extra argument, because the newtype is "free"
--
-- Tagged has kind k -> * -> * if the compiler
-- supports PolyKinds, therefore there is an extra k
-- showing in the instance haddocks that may cause confusion.
newtype () => Tagged (s :: k) b
Tagged :: b -> Tagged (s :: k) b
[unTagged] :: Tagged (s :: k) b -> b
-- | A type-level tag that specifies URL scheme used (and thus if HTTPS is
-- enabled). This is used to force TLS requirement for some
-- authentication Options.
data () => Scheme
-- | HTTP
Http :: Scheme
-- | HTTPS
Https :: Scheme
module Effectful.Globus
data Globus :: Effect
[AuthUrl] :: Uri Redirect -> NonEmpty Scope -> State -> Globus m (Uri Authorization)
[GetUserInfo] :: Token OpenId -> Globus m UserInfoResponse
[GetAccessTokens] :: Token Exchange -> Uri Redirect -> Globus m (NonEmpty TokenItem)
[SubmissionId] :: Token Access -> Globus m (Id Submission)
[Transfer] :: Token Access -> TransferRequest -> Globus m TransferResponse
[StatusTask] :: Token Access -> Id Task -> Globus m Task
[StatusTasks] :: Token Access -> TaskFilters -> Globus m TaskList
data GlobusClient
GlobusClient :: Token ClientId -> Token ClientSecret -> GlobusClient
[$sel:clientId:GlobusClient] :: GlobusClient -> Token ClientId
[$sel:clientSecret:GlobusClient] :: GlobusClient -> Token ClientSecret
runGlobus :: IOE :> es => GlobusClient -> Eff (Globus : es) a -> Eff es a
-- | Opaque secret identifying the user. Validate on redirect
newtype State
State :: Text -> State
-- | A Tagged s b value is a value b with an
-- attached phantom type s. This can be used in place of the
-- more traditional but less safe idiom of passing in an undefined value
-- with the type, because unlike an (s -> b), a
-- Tagged s b can't try to use the argument s as
-- a real value.
--
-- Moreover, you don't have to rely on the compiler to inline away the
-- extra argument, because the newtype is "free"
--
-- Tagged has kind k -> * -> * if the compiler
-- supports PolyKinds, therefore there is an extra k
-- showing in the instance haddocks that may cause confusion.
newtype () => Tagged (s :: k) b
Tagged :: b -> Tagged (s :: k) b
[unTagged] :: Tagged (s :: k) b -> b
data TransferRequest
TransferRequest :: DataType "transfer" -> Id Submission -> Maybe Text -> Id Collection -> Id Collection -> [TransferItem] -> SyncLevel -> Bool -> TransferRequest
[$sel:data_type:TransferRequest] :: TransferRequest -> DataType "transfer"
[$sel:submission_id:TransferRequest] :: TransferRequest -> Id Submission
[$sel:label:TransferRequest] :: TransferRequest -> Maybe Text
[$sel:source_endpoint:TransferRequest] :: TransferRequest -> Id Collection
[$sel:destination_endpoint:TransferRequest] :: TransferRequest -> Id Collection
[$sel:data_:TransferRequest] :: TransferRequest -> [TransferItem]
[$sel:sync_level:TransferRequest] :: TransferRequest -> SyncLevel
[$sel:store_base_path_info:TransferRequest] :: TransferRequest -> Bool
data TransferResponse
TransferResponse :: Id Task -> Token Submission -> Text -> Text -> Token Request -> TransferResponse
[$sel:task_id:TransferResponse] :: TransferResponse -> Id Task
[$sel:submission_id:TransferResponse] :: TransferResponse -> Token Submission
[$sel:message:TransferResponse] :: TransferResponse -> Text
[$sel:resource:TransferResponse] :: TransferResponse -> Text
[$sel:request_id:TransferResponse] :: TransferResponse -> Token Request
data TransferItem
TransferItem :: DataType "transfer_item" -> FilePath -> FilePath -> Bool -> TransferItem
[$sel:data_type:TransferItem] :: TransferItem -> DataType "transfer_item"
[$sel:source_path:TransferItem] :: TransferItem -> FilePath
[$sel:destination_path:TransferItem] :: TransferItem -> FilePath
[$sel:recursive:TransferItem] :: TransferItem -> Bool
data SyncLevel
SyncExists :: SyncLevel
SyncSize :: SyncLevel
SyncTimestamp :: SyncLevel
SyncChecksum :: SyncLevel
data Task
Task :: TaskStatus -> Id Task -> Text -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Maybe Text -> Id Collection -> Id Collection -> Task
[$sel:status:Task] :: Task -> TaskStatus
[$sel:task_id:Task] :: Task -> Id Task
[$sel:label:Task] :: Task -> Text
[$sel:files:Task] :: Task -> Int
[$sel:directories:Task] :: Task -> Int
[$sel:files_skipped:Task] :: Task -> Int
[$sel:files_transferred:Task] :: Task -> Int
[$sel:bytes_transferred:Task] :: Task -> Int
[$sel:bytes_checksummed:Task] :: Task -> Int
[$sel:effective_bytes_per_second:Task] :: Task -> Int
[$sel:nice_status:Task] :: Task -> Maybe Text
[$sel:source_endpoint_id:Task] :: Task -> Id Collection
[$sel:destination_endpoint_id:Task] :: Task -> Id Collection
data TaskStatus
Active :: TaskStatus
Inactive :: TaskStatus
Succeeded :: TaskStatus
Failed :: TaskStatus
newtype TaskFilters
TaskFilters :: [TaskStatus] -> TaskFilters
[$sel:status:TaskFilters] :: TaskFilters -> [TaskStatus]
data TaskList
TaskList :: Int -> Int -> Int -> Int -> [Task] -> TaskList
[$sel:length:TaskList] :: TaskList -> Int
[$sel:limit:TaskList] :: TaskList -> Int
[$sel:offset:TaskList] :: TaskList -> Int
[$sel:total:TaskList] :: TaskList -> Int
[$sel:data_:TaskList] :: TaskList -> [Task]
-- | A type-level tag that specifies URL scheme used (and thus if HTTPS is
-- enabled). This is used to force TLS requirement for some
-- authentication Options.
data () => Scheme
-- | HTTP
Http :: Scheme
-- | HTTPS
Https :: Scheme