Safe Haskell | None |
---|---|
Language | Haskell2010 |
The telegraph API.
Note that the
effect should be interpreted using
either Error
HttpException
errorToIOAsExc
or errorToErrorIOAsExc
or otherwise it won't get
caught.
Synopsis
- data AccountInfo = AccountInfo {}
- data TS = TS {
- accessToken :: Text
- shortName :: Text
- authorName :: Text
- authorUrl :: Text
- data Telegraph :: Effect where
- data Http :: Effect where
- HttpLbs :: Request -> Http m (Response ByteString)
- GenBoundary :: Http m ByteString
- type Telegraph' = Bundle '[Telegraph, Http, Error HttpException]
- type Http' = Bundle '[Http, Error HttpException]
- runTelegraph :: (Effs '[Embed IO, Reader Manager, Error HttpException, Throw TelegraphError] m, Threaders '[ReaderThreads] m p) => Text -> TelegraphToIOC m a -> m a
- runTelegraph' :: (Effs '[Embed IO, Reader Manager, Error HttpException, Throw TelegraphError] m, Threaders '[ReaderThreads] m p) => AccountInfo -> TelegraphToIOC m a -> m a
- errorToIOAsExc :: (Exception e, Eff (Embed IO) m, MonadCatch m) => ErrorToIOC e m a -> m a
- errorToErrorIOAsExc :: (Exception e, Effs '[ErrorIO, Embed IO] m) => InterpretErrorC e m a -> m a
- editAccountInfo :: Effs '[Telegraph', Bracket, Throw TelegraphError] m => AccountInfo -> m ()
- getAccountInfo :: Effs '[Telegraph', Throw TelegraphError] m => m Account
- revokeAccessToken :: Effs '[Telegraph', Bracket, Error TelegraphError] m => m Account
- createPage :: Effs '[Telegraph', Error TelegraphError] m => Text -> [Node] -> m Page
- editPage :: Effs '[Telegraph', Throw TelegraphError] m => Text -> Text -> [Node] -> m Page
- getPageList :: Effs '[Telegraph', Throw TelegraphError] m => Int -> Int -> m PageList
- createAccount :: Eff Http' m => AccountInfo -> m (Result Account)
- getAccountInfo' :: Eff Http' m => Text -> m (Result Account)
- getPage :: Eff Http' m => Text -> m (Result Page)
- getTotalViews :: Eff Http' m => Text -> m (Result PageViews)
- uploadImageFromFile :: Effs '[Telegraph', Bracket, Embed IO] m => FilePath -> m UploadResult
- uploadImageFromFiles :: Effs '[Telegraph', Bracket, Embed IO] m => [FilePath] -> m UploadResult
- data ImgStream = ImgStream {}
- uploadImageStreaming :: Eff Telegraph' m => ImgStream -> m UploadResult
- uploadImagesStreaming :: Eff Telegraph' m => [ImgStream] -> m UploadResult
- uploadParts :: Eff Telegraph' m => [PartM m] -> m UploadResult
- type TelegraphToIOC = CompositionC '[TelegraphC, ReaderC (MVar TS), HttpC]
- type TelegraphC = InterpretC TelegraphH Telegraph
- type HttpC = InterpretC HttpH Http
- data TelegraphH
- data HttpH
- telegraph :: Effs '[Embed IO, Reader (MVar TS)] m => TelegraphC m a -> m a
- http :: Effs '[Embed IO, Reader Manager] m => HttpC m a -> m a
Types
data AccountInfo Source #
Instances
Telegraph state
TS | |
|
Instances
Eq TS Source # | |
Show TS Source # | |
Generic TS Source # | |
type Rep TS Source # | |
Defined in Control.Effect.Telegraph type Rep TS = D1 ('MetaData "TS" "Control.Effect.Telegraph" "telegraph-1.1.1-AO7JtOnzfnv1glu1YCJAla" 'False) (C1 ('MetaCons "TS" 'PrefixI 'True) ((S1 ('MetaSel ('Just "accessToken") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "shortName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "authorName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "authorUrl") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))) |
Effects
data Telegraph :: Effect where Source #
Instances
Effs '[Embed IO, Reader (MVar TS)] m => Handler TelegraphH Telegraph m Source # | |
Defined in Control.Effect.Telegraph effHandler :: EffHandler Telegraph m # |
data Http :: Effect where Source #
HttpLbs :: Request -> Http m (Response ByteString) | |
GenBoundary :: Http m ByteString |
Instances
Effs '[Embed IO, Reader Manager] m => Handler HttpH Http m Source # | |
Defined in Control.Effect.Telegraph effHandler :: EffHandler Http m # |
type Telegraph' = Bundle '[Telegraph, Http, Error HttpException] Source #
Interpreters
runTelegraph :: (Effs '[Embed IO, Reader Manager, Error HttpException, Throw TelegraphError] m, Threaders '[ReaderThreads] m p) => Text -> TelegraphToIOC m a -> m a Source #
runTelegraph' :: (Effs '[Embed IO, Reader Manager, Error HttpException, Throw TelegraphError] m, Threaders '[ReaderThreads] m p) => AccountInfo -> TelegraphToIOC m a -> m a Source #
Error Interpreters
errorToIOAsExc :: (Exception e, Eff (Embed IO) m, MonadCatch m) => ErrorToIOC e m a -> m a Source #
errorToErrorIOAsExc :: (Exception e, Effs '[ErrorIO, Embed IO] m) => InterpretErrorC e m a -> m a Source #
Account related APIs
editAccountInfo :: Effs '[Telegraph', Bracket, Throw TelegraphError] m => AccountInfo -> m () Source #
Use this method to update information about this Telegraph account
getAccountInfo :: Effs '[Telegraph', Throw TelegraphError] m => m Account Source #
Use this method to get information about this Telegraph account
revokeAccessToken :: Effs '[Telegraph', Bracket, Error TelegraphError] m => m Account Source #
Use this method to revoke access_token and generate a new one
:: Effs '[Telegraph', Error TelegraphError] m | |
=> Text | title |
-> [Node] | content |
-> m Page |
Use this method to create a new Telegraph page
:: Effs '[Telegraph', Throw TelegraphError] m | |
=> Text | path |
-> Text | title |
-> [Node] | content |
-> m Page |
Use this method to edit an existing Telegraph page
:: Effs '[Telegraph', Throw TelegraphError] m | |
=> Int | offset |
-> Int | limit (0 - 200) |
-> m PageList |
Use this method to get a list of pages belonging to this Telegraph account
Account independent APIs
createAccount :: Eff Http' m => AccountInfo -> m (Result Account) Source #
Use this method to create a new Telegraph account
getTotalViews :: Eff Http' m => Text -> m (Result PageViews) Source #
Use this method to get the total number of views for a Telegraph article
Image uploading API
uploadImageFromFile :: Effs '[Telegraph', Bracket, Embed IO] m => FilePath -> m UploadResult Source #
Upload a image from a filepath to Telegraph
uploadImageFromFiles :: Effs '[Telegraph', Bracket, Embed IO] m => [FilePath] -> m UploadResult Source #
Upload a list of images to Telegraph. The resulting list of images will be in the same order
uploadImageStreaming :: Eff Telegraph' m => ImgStream -> m UploadResult Source #
Upload a image stream to Telegraph
uploadImagesStreaming :: Eff Telegraph' m => [ImgStream] -> m UploadResult Source #
Upload a list of image streams to Telegraph. The resulting list of images
uploadParts :: Eff Telegraph' m => [PartM m] -> m UploadResult Source #
Interpreter primitives
type TelegraphToIOC = CompositionC '[TelegraphC, ReaderC (MVar TS), HttpC] Source #
type TelegraphC = InterpretC TelegraphH Telegraph Source #
data TelegraphH Source #
Instances
Effs '[Embed IO, Reader (MVar TS)] m => Handler TelegraphH Telegraph m Source # | |
Defined in Control.Effect.Telegraph effHandler :: EffHandler Telegraph m # |
Instances
Effs '[Embed IO, Reader Manager] m => Handler HttpH Http m Source # | |
Defined in Control.Effect.Telegraph effHandler :: EffHandler Http m # |