libjenkins-0.4.2.0: Jenkins API interface

Safe HaskellNone

Jenkins.Rest.Internal

Description

Jenkins REST API interface internals

Synopsis

Documentation

newtype Jenkins a Source

Jenkins REST API query sequence description

Constructors

Jenkins 

Fields

unJenkins :: F JenkinsF a
 

data JenkinsF a whereSource

Jenkins REST API query

Constructors

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 

Instances

data ConnectInfo Source

Jenkins connection settings

_jenkinsApiToken may be user's password, Jenkins does not make any distinction between these concepts

Constructors

ConnectInfo 

Fields

_jenkinsUrl :: String

Jenkins URL, e.g. http://example.com/jenkins

_jenkinsPort :: Int

Jenkins port, e.g. 8080

_jenkinsUser :: Text

Jenkins user, e.g. jenkins

_jenkinsApiToken :: Text

Jenkins user API token

data Result e v Source

The result of Jenkins REST API queries

Constructors

Error e

Exception e was thrown while querying

Disconnect

The client was explicitly disconnected

Result v

Querying successfully finished the with value v

Instances

Typeable2 Result 
(Eq e, Eq v) => Eq (Result e v) 
(Data e, Data v) => Data (Result e v) 
(Ord e, Ord v) => Ord (Result e v) 
(Show e, Show v) => Show (Result e v) 
Generic (Result e v) 

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)

is perfectly fine—Result won't ever be an Error

_Error :: Prism (Result e a) (Result e' a) e e'Source

A prism into Jenkins error

_Disconnect :: Prism' (Result e a) ()Source

A prism into disconnect

_Result :: Prism (Result e a) (Result e b) a bSource

A prism into result

iterJenkins :: Monad m => (JenkinsF (m a) -> m a) -> Jenkins a -> m aSource

Tear down JenkinsF AST with a JenkinsF-algebra

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