pixiv-0.1.1: Pixiv API binding based on servant-client
Copyright(c) 2021 The closed eye of love
LicenseBSD-3-Clause
MaintainerPoscat <poscat@mail.poscat.moe>, berberman <berberman@yandex.com>
Stabilityalpha
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Web.Pixiv.Types.PixivT

Description

The core monad of this library. PixivT maintains a pixiv login state, and provides an environment to perform computations created by servant.

Synopsis

ClientT monad transformer

newtype ClientT m a Source #

Transformer version of ClientM, changing the base IO to m.

Constructors

ClientT 

Instances

Instances details
MonadTrans ClientT Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

lift :: Monad m => m a -> ClientT m a #

Monad m => MonadReader ClientEnv (ClientT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

ask :: ClientT m ClientEnv #

local :: (ClientEnv -> ClientEnv) -> ClientT m a -> ClientT m a #

reader :: (ClientEnv -> a) -> ClientT m a #

Monad m => MonadError ClientError (ClientT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

throwError :: ClientError -> ClientT m a #

catchError :: ClientT m a -> (ClientError -> ClientT m a) -> ClientT m a #

MonadBase b m => MonadBase b (ClientT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

liftBase :: b α -> ClientT m α #

MonadBaseControl b m => MonadBaseControl b (ClientT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Associated Types

type StM (ClientT m) a #

Methods

liftBaseWith :: (RunInBase (ClientT m) b -> b a) -> ClientT m a #

restoreM :: StM (ClientT m) a -> ClientT m a #

Monad m => Monad (ClientT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

(>>=) :: ClientT m a -> (a -> ClientT m b) -> ClientT m b #

(>>) :: ClientT m a -> ClientT m b -> ClientT m b #

return :: a -> ClientT m a #

Functor m => Functor (ClientT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

fmap :: (a -> b) -> ClientT m a -> ClientT m b #

(<$) :: a -> ClientT m b -> ClientT m a #

Monad m => Applicative (ClientT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

pure :: a -> ClientT m a #

(<*>) :: ClientT m (a -> b) -> ClientT m a -> ClientT m b #

liftA2 :: (a -> b -> c) -> ClientT m a -> ClientT m b -> ClientT m c #

(*>) :: ClientT m a -> ClientT m b -> ClientT m b #

(<*) :: ClientT m a -> ClientT m b -> ClientT m a #

MonadIO m => MonadIO (ClientT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

liftIO :: IO a -> ClientT m a #

MonadThrow m => MonadThrow (ClientT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

throwM :: Exception e => e -> ClientT m a #

MonadCatch m => MonadCatch (ClientT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

catch :: Exception e => ClientT m a -> (e -> ClientT m a) -> ClientT m a #

MonadIO m => RunClient (ClientT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

type StM (ClientT m) a Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

runClientT :: ClientEnv -> ClientT m a -> m (Either ClientError a) Source #

Executes a computation in the client monad.

MonadPixiv class

class (RunClient m, MonadIO m) => MonadPixiv m where Source #

The mtl-style class of pixiv monad.

Methods

takePixivState :: m PixivState Source #

Reads the stored PixivState, when used in a multithreaded setting, this should block all other thread from reading the PixivState until putPixivState is called.

putPixivState :: PixivState -> m () Source #

Writes a new PixivState.

readPixivState :: m PixivState Source #

Reads the stored PixivState, without blocking other threads which want to read this state.

Don't confuse with takePixivState, please refer to readMVar.

Instances

Instances details
(MonadPixiv m, MonadTrans f, MonadIO (f m), RunClient (f m)) => MonadPixiv (f m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

MonadIO m => MonadPixiv (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

data PixivState Source #

State stored in MonadPixiv.

Instances

Instances details
Show PixivState Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Generic PixivState Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Associated Types

type Rep PixivState :: Type -> Type #

Monad m => MonadReader (MVar PixivState) (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

ask :: PixivT m (MVar PixivState) #

local :: (MVar PixivState -> MVar PixivState) -> PixivT m a -> PixivT m a #

reader :: (MVar PixivState -> a) -> PixivT m a #

type Rep PixivState Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

type Rep PixivState = D1 ('MetaData "PixivState" "Web.Pixiv.Types.PixivT" "pixiv-0.1.1-EohU1eVO1gXLvKhzusySE3" 'False) (C1 ('MetaCons "PixivState" 'PrefixI 'True) (S1 ('MetaSel ('Just "tokenState") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TokenState) :*: S1 ('MetaSel ('Just "acceptLanguage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text))))

PixivT monad transformer

newtype PixivT m a Source #

A thread safe implementation of MonadPixiv.

Constructors

PixivT 

Instances

Instances details
MonadTrans PixivT Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

lift :: Monad m => m a -> PixivT m a #

Monad m => MonadError ClientError (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

throwError :: ClientError -> PixivT m a #

catchError :: PixivT m a -> (ClientError -> PixivT m a) -> PixivT m a #

MonadBase IO m => MonadBase IO (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

liftBase :: IO α -> PixivT m α #

MonadBaseControl IO m => MonadBaseControl IO (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Associated Types

type StM (PixivT m) a #

Methods

liftBaseWith :: (RunInBase (PixivT m) IO -> IO a) -> PixivT m a #

restoreM :: StM (PixivT m) a -> PixivT m a #

Monad m => Monad (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

(>>=) :: PixivT m a -> (a -> PixivT m b) -> PixivT m b #

(>>) :: PixivT m a -> PixivT m b -> PixivT m b #

return :: a -> PixivT m a #

Functor m => Functor (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

fmap :: (a -> b) -> PixivT m a -> PixivT m b #

(<$) :: a -> PixivT m b -> PixivT m a #

Monad m => Applicative (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

pure :: a -> PixivT m a #

(<*>) :: PixivT m (a -> b) -> PixivT m a -> PixivT m b #

liftA2 :: (a -> b -> c) -> PixivT m a -> PixivT m b -> PixivT m c #

(*>) :: PixivT m a -> PixivT m b -> PixivT m b #

(<*) :: PixivT m a -> PixivT m b -> PixivT m a #

MonadIO m => MonadIO (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

liftIO :: IO a -> PixivT m a #

MonadThrow m => MonadThrow (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

throwM :: Exception e => e -> PixivT m a #

MonadCatch m => MonadCatch (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

catch :: Exception e => PixivT m a -> (e -> PixivT m a) -> PixivT m a #

MonadIO m => RunClient (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

MonadIO m => MonadPixiv (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Monad m => MonadReader (MVar PixivState) (PixivT m) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Methods

ask :: PixivT m (MVar PixivState) #

local :: (MVar PixivState -> MVar PixivState) -> PixivT m a -> PixivT m a #

reader :: (MVar PixivState -> a) -> PixivT m a #

Generic (PixivT m a) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Associated Types

type Rep (PixivT m a) :: Type -> Type #

Methods

from :: PixivT m a -> Rep (PixivT m a) x #

to :: Rep (PixivT m a) x -> PixivT m a #

type StM (PixivT m) a Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

type StM (PixivT m) a = StM (ReaderT (MVar PixivState) (ClientT m)) a
type Rep (PixivT m a) Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

type Rep (PixivT m a) = D1 ('MetaData "PixivT" "Web.Pixiv.Types.PixivT" "pixiv-0.1.1-EohU1eVO1gXLvKhzusySE3" 'True) (C1 ('MetaCons "PixivT" 'PrefixI 'True) (S1 ('MetaSel ('Just "unPixivT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ReaderT (MVar PixivState) (ClientT m) a))))

liftC :: Monad m => ClientT m a -> PixivT m a Source #

Lifts a computation in ClientT to PixivT.

runPixivT :: MonadIO m => Manager -> Credential -> PixivT m a -> m (Either ClientError a) Source #

Interprets the PixivT effect, with a supplied Manager.

runPixivT' :: MonadIO m => Credential -> PixivT m a -> m (Either ClientError a) Source #

Like runPixivT, but creates a new Manager everytime.

Token

data TokenState Source #

Pixiv auth state.

Constructors

TokenState 

Fields

Instances

Instances details
Show TokenState Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Generic TokenState Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

Associated Types

type Rep TokenState :: Type -> Type #

type Rep TokenState Source # 
Instance details

Defined in Web.Pixiv.Types.PixivT

type Rep TokenState = D1 ('MetaData "TokenState" "Web.Pixiv.Types.PixivT" "pixiv-0.1.1-EohU1eVO1gXLvKhzusySE3" 'False) (C1 ('MetaCons "TokenState" 'PrefixI 'True) ((S1 ('MetaSel ('Just "accessToken") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Token) :*: S1 ('MetaSel ('Just "refreshToken") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Token)) :*: (S1 ('MetaSel ('Just "expirationTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UTCTime) :*: S1 ('MetaSel ('Just "manager") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Manager))))

computeTokenState Source #

Arguments

:: Manager 
-> Credential

Could be username with password or refreshToken.

-> UTCTime

Current time.

-> IO TokenState 

Computes the TokenState.

This function calls auth' to perform authentication.

Utilities

getAccessToken :: MonadPixiv m => m Token Source #

Retrieves the accessToken from pixiv monad.

If the token is overdue, it will call computeTokenState to refresh.