| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Jenkins.Rest.Internal
Description
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
Constructors
| 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
Constructors
| ConnectInfo | |
Fields
| |
The result of Jenkins REST API queries
Constructors
| Error e | Exception |
| Disconnect | The client was explicitly disconnected |
| Result v | Querying successfully finished the with value |
newtype JenkinsException Source
Constructors
| JenkinsHttpException HttpException |
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
Methods
Instances
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