Safe Haskell | None |
---|---|
Language | Haskell2010 |
Jenkins REST API interface internals
- newtype Jenkins a = Jenkins {}
- data JenkinsF a where
- Get :: Method Complete f -> (ResumableSource (ResourceT IO) ByteString -> a) -> JenkinsF a
- Post :: (forall f. Method Complete f) -> ByteString -> a -> JenkinsF a
- Conc :: Jenkins a -> Jenkins b -> (a -> b -> c) -> JenkinsF c
- Or :: Jenkins a -> Jenkins a -> JenkinsF a
- IO :: IO a -> JenkinsF a
- With :: (Request -> Request) -> Jenkins b -> (b -> a) -> JenkinsF a
- Dcon :: JenkinsF a
- liftJ :: JenkinsF a -> Jenkins a
- data ConnectInfo = ConnectInfo {}
- data Result e v
- = Error e
- | Disconnect
- | Result v
- newtype JenkinsException = JenkinsHttpException HttpException
- runJenkins :: HasConnectInfo t => t -> Jenkins a -> IO (Result JenkinsException a)
- runJenkinsInternal :: HasConnectInfo t => t -> Jenkins a -> IO (Maybe a)
- _Error :: Prism (Result e a) (Result e' a) e e'
- _Disconnect :: Prism' (Result e a) ()
- _Result :: Prism (Result e a) (Result e b) a b
- iterJenkinsIO :: Manager -> Jenkins a -> MaybeT (ReaderT Request (ResourceT IO)) a
- iterJenkins :: Monad m => (JenkinsF (m a) -> m a) -> Jenkins a -> m a
- interpreter :: Manager -> JenkinsF (MaybeT (ReaderT Request (ResourceT IO)) a) -> MaybeT (ReaderT Request (ResourceT IO)) a
- intoIO :: Monad m => Manager -> ((forall b. Jenkins b -> IO (StT ResourceT (StT (ReaderT Request) (StT MaybeT b)))) -> m a) -> MaybeT (ReaderT Request (ResourceT m)) a
- outoIO :: IO (StT ResourceT (StT (ReaderT Request) (StT MaybeT b))) -> MaybeT (ReaderT Request (ResourceT IO)) b
- prepareGet :: Method Complete f -> Request -> Request
- preparePost :: Method Complete f -> ByteString -> Request -> Request
- withException :: (MonadCatch m, Exception e, Exception e') => m a -> (e -> e') -> m a
- defaultConnectInfo :: ConnectInfo
- class HasConnectInfo t where
- connectInfo :: Lens' t ConnectInfo
- jenkinsUrl :: HasConnectInfo t => Lens' t String
- jenkinsPort :: HasConnectInfo t => Lens' t Int
- jenkinsUser :: HasConnectInfo t => Lens' t Text
- jenkinsApiToken :: HasConnectInfo t => Lens' t Text
- jenkinsPassword :: HasConnectInfo t => Lens' t Text
Documentation
Jenkins REST API query sequence description
Jenkins REST API query
Get :: Method Complete f -> (ResumableSource (ResourceT IO) ByteString -> a) -> JenkinsF a | |
Post :: (forall f. Method Complete f) -> ByteString -> a -> JenkinsF a | |
Conc :: Jenkins a -> Jenkins b -> (a -> b -> c) -> JenkinsF c | |
Or :: Jenkins a -> Jenkins a -> JenkinsF a | |
IO :: IO a -> JenkinsF a | |
With :: (Request -> Request) -> Jenkins b -> (b -> a) -> JenkinsF a | |
Dcon :: JenkinsF a |
data ConnectInfo Source
Jenkins connection settings
_jenkinsApiToken
may be user's password, Jenkins
does not make any distinction between these concepts
ConnectInfo | |
|
The result of Jenkins REST API queries
Error e | Exception |
Disconnect | The client was explicitly disconnected |
Result v | Querying successfully finished the with value |
newtype JenkinsException Source
runJenkins :: HasConnectInfo t => t -> Jenkins a -> IO (Result JenkinsException a) Source
Query Jenkins API using Jenkins
description
Successful result is either Disconnect
or
Result
v
If HttpException
was thrown by http-conduit
, runJenkins
catches it
and wraps in Error
. Other exceptions are not catched
runJenkinsInternal :: HasConnectInfo t => t -> Jenkins a -> IO (Maybe a) Source
_Disconnect :: Prism' (Result e a) () Source
A prism into disconnect
iterJenkins :: Monad m => (JenkinsF (m a) -> m a) -> Jenkins a -> m a Source
interpreter :: Manager -> JenkinsF (MaybeT (ReaderT Request (ResourceT IO)) a) -> MaybeT (ReaderT Request (ResourceT IO)) a Source
JenkinsF
AST interpreter
intoIO :: Monad m => Manager -> ((forall b. Jenkins b -> IO (StT ResourceT (StT (ReaderT Request) (StT MaybeT b)))) -> m a) -> MaybeT (ReaderT Request (ResourceT m)) a Source
outoIO :: IO (StT ResourceT (StT (ReaderT Request) (StT MaybeT b))) -> MaybeT (ReaderT Request (ResourceT IO)) b Source
preparePost :: Method Complete f -> ByteString -> Request -> Request Source
withException :: (MonadCatch m, Exception e, Exception e') => m a -> (e -> e') -> m a Source
defaultConnectInfo :: ConnectInfo Source
Default Jenkins connection settings
defaultConnectInfo = ConnectInfo { _jenkinsUrl = "http://example.com/jenkins" , _jenkinsPort = 8080 , _jenkinsUser = "jenkins" , _jenkinsApiToken = "" }
class HasConnectInfo t where Source
Convenience class aimed at elimination of long chains of lenses to access jenkins connection configuration
For example, if you have a configuration record in your application:
data Config = Config { ... , _jenkinsConnectInfo :: ConnectInfo , ... }
you can make it an instance of HasConnectInfo
:
instance HasConnectInfo Config where connectInfo f x = (p -> x { _jenkinsConnectInfo = p }) <$> f (_jenkinsConnectInfo x)
and then use e.g. view jenkinsUrl config
to get the url part of the jenkins connection
jenkinsUrl :: HasConnectInfo t => Lens' t String Source
A lens into Jenkins URL
jenkinsPort :: HasConnectInfo t => Lens' t Int Source
A lens into Jenkins port
jenkinsUser :: HasConnectInfo t => Lens' t Text Source
A lens into Jenkins user
jenkinsApiToken :: HasConnectInfo t => Lens' t Text Source
A lens into Jenkins user API token
jenkinsPassword :: HasConnectInfo t => Lens' t Text Source
A lens into Jenkins password
jenkinsPassword = jenkinsApiToken