Safe Haskell | None |
---|
Jenkins REST API interface internals
- newtype Jenkins a = Jenkins {}
- data JenkinsF a where
- Get :: Method Complete f -> (ByteString -> a) -> JenkinsF a
- Post :: (forall f. Method Complete f) -> ByteString -> (ByteString -> a) -> JenkinsF a
- Conc :: Jenkins a -> Jenkins b -> (a -> b -> c) -> JenkinsF c
- 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
- runJenkins :: HasConnectInfo t => t -> Jenkins a -> IO (Result HttpException a)
- runJenkinsThrowing :: HasConnectInfo t => t -> Jenkins a -> IO (Result e 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
- 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 -> (ByteString -> a) -> JenkinsF a | |
Post :: (forall f. Method Complete f) -> ByteString -> (ByteString -> a) -> JenkinsF a | |
Conc :: Jenkins a -> Jenkins b -> (a -> b -> c) -> JenkinsF c | |
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 |
runJenkins :: HasConnectInfo t => t -> Jenkins a -> IO (Result HttpException 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
runJenkinsThrowing :: HasConnectInfo t => t -> Jenkins a -> IO (Result e a)Source
Query Jenkins API using Jenkins
description
Successful result is either Disconnect
or
Result
v
No exceptions are catched, i.e.
runJenkinsThrowing ::ConnectInfo
->Jenkins
a ->IO
(Result
Void
a)
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 aSource
interpreter :: Manager -> JenkinsF (MaybeT (ReaderT Request (ResourceT IO)) a) -> MaybeT (ReaderT Request (ResourceT IO)) aSource
JenkinsF
AST interpreter
defaultConnectInfo :: ConnectInfoSource
Default Jenkins connection settings
defaultConnectInfo = ConnectInfo { _jenkinsUrl = "http://example.com/jenkins" , _jenkinsPort = 8080 , _jenkinsUser = "jenkins" , _jenkinsApiToken = "" }
class HasConnectInfo t whereSource
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 StringSource
A lens into Jenkins URL
jenkinsPort :: HasConnectInfo t => Lens' t IntSource
A lens into Jenkins port
jenkinsUser :: HasConnectInfo t => Lens' t TextSource
A lens into Jenkins user
jenkinsApiToken :: HasConnectInfo t => Lens' t TextSource
A lens into Jenkins user API token
jenkinsPassword :: HasConnectInfo t => Lens' t TextSource
A lens into Jenkins password
jenkinsPassword = jenkinsApiToken