Async client with CompletableFutures based on new HttpClient (java 11+)
https://mvnrepository.com/artifact/org.fintecy.md/coinbase-client/1.0.3
dependencies {
implementation 'org.fintecy.md:coinbase-client:1.0.3'
}
<dependency>
<groupId>org.fintecy.md</groupId>
<artifactId>coinbase-client</artifactId>
<version>1.0.3</version>
</dependency>
coinbaseApi api = CoinbaseClient.api();
ExchangeRate latest = api.latest("BTC-USD").get();
var client = coinbaseClient()
.useClient(HttpClient.newBuilder()
.followRedirects(HttpClient.Redirect.ALWAYS)
.priority(10)
.connectTimeout(Duration.ofMillis(500))
.executor(Executors.newSingleThreadExecutor())
.build())
.with(CircuitBreaker.ofDefaults())
.with(RateLimiter.smoothBuilder(Duration.ofMillis(100))
.build())
.with(RetryPolicy.ofDefaults())
.with(Timeout.of(Duration.ofMillis(400)))
.rootPath("https://coinbase.com/api/") -- just to use stub in tests
.build();
var accounts = coinbaseClient()
.authConfig(key, secret, passphrase)
.build()
.accounts()
.get();
coinbaseClient()
.authConfig(key, secret, passphrase)
.build()
.balances()
.join()
.forEach((ccy, balance) -> {
System.out.println(ccy + "=" + balance);
});
- Java 11+
- FailSafe
- Slf4j api
- Jackson (databind, datatype-jsr310)
- WireMock (tests)
- Junit5 (tests)
Anton Batiaev anton@batiaev.com