libjenkins-0.5.0: Jenkins API interface

Safe HaskellNone
LanguageHaskell2010

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 where Source

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 

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 Jenkins

Disconnect

The client was explicitly disconnected

Result v

Querying successfully finished the with value v

Instances

(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) 
Typeable (* -> * -> *) Result 
type Rep (Result e v) 

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

_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 b Source

A prism into result

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

Tear down JenkinsF AST with a JenkinsF-algebra

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

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