This is a Kotlin-based asynchronous REST client for JIRA. In particular, it wraps the functionality of Atlassian's JIRA Rest client into Kotlin using the Arrow-kt library
Atlassian's JIRA Rest client is based on their own implementation of a Promise. That is, all methods return values nested into Promise.
Besides its own capabilities, Promise implements Future, thus, the Atlassian's client can be used rather easily with reactive libraries like RxJava and Project Reactor.
With JiraKlient we wanted to achieve two goals:
- Provide a functional client, with compose-able methods.
- Provide a tagless-final implementation, moving away of Atlassian's Promise
To achieve these we leverage the powers of Kleisli.
- JiraKlient: Client's algebra
- JiraKlientForMonoK: Implementation for Mono
- JiraKlientForSingleK: Implementation for Rx2 Single
For starters, JiraKlient provides a tagless algebra. So, applications can use this abstraction instead of using Atlassian's Promise.
Most importantly, though, JiraKlient uses the Kleisli functional data type. This means that applications "describe" compose-able uses of the underlying Atlassian client, without actually calling it, until is required.