Skip to content

Commit

Permalink
feat: add common classes for OHLC streaming
Browse files Browse the repository at this point in the history
  • Loading branch information
rvullriede committed Jun 24, 2024
1 parent 692b916 commit 0fb35a2
Show file tree
Hide file tree
Showing 8 changed files with 62 additions and 24 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Dependabot auto-approve
name: dependabot-auto-approve
on: pull_request

permissions:
Expand Down
14 changes: 6 additions & 8 deletions .github/workflows/maven-build.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Java CI with Maven
name: maven-build

on:
push:
Expand All @@ -12,12 +10,12 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'temurin'
cache: maven
java-version: 21
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn --batch-mode --update-snapshots package
8 changes: 4 additions & 4 deletions .github/workflows/maven-publish-release.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Publish release package to the Maven Central Repository
name: maven-publish-release
on:
release:
types: [ created ]
Expand All @@ -13,11 +13,11 @@ jobs:
cat <(echo -e "${{ secrets.OSSRH_GPG_SECRET_KEY }}") | gpg --batch --import
# Verify gpg secret key
gpg --list-secret-keys --keyid-format LONG
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 17
java-version: 21
distribution: 'temurin'
cache: maven
server-id: ossrh
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/net/osslabz/crypto/CurrencyPair.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
package net.osslabz.crypto;


import java.util.Objects;

/**
* Identifies a currency pair.
*
* @param baseCurrencyCode
* @param counterCurrencyCode
*/
public record CurrencyPair(String baseCurrencyCode, String counterCurrencyCode) {

public CurrencyPair {
Objects.requireNonNull(baseCurrencyCode, "baseCurrencyCode cannot be null");
Objects.requireNonNull(counterCurrencyCode, "counterCurrencyCode cannot be null");
}

public String getLabel() {
return "%s-%s".formatted(this.baseCurrencyCode, this.counterCurrencyCode);
}
}
16 changes: 16 additions & 0 deletions src/main/java/net/osslabz/crypto/Exchange.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package net.osslabz.crypto;

public enum Exchange {
BINANCE,

COINBASE,

KUCOIN,

KRAKEN,

MEXC,

LATOKEN

}
13 changes: 3 additions & 10 deletions src/main/java/net/osslabz/crypto/Ohlc.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,15 @@


@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder(toBuilder = true)
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class Ohlc {

@EqualsAndHashCode.Include
private OhlcAsset asset;

private ZonedDateTime updateTime;

@EqualsAndHashCode.Include
private ZonedDateTime openTime;

Expand All @@ -40,11 +39,5 @@ public class Ohlc {

private Long numTrades;

public CurrencyPair getCurrencyPair() {
return this.asset.currencyPair();
}

public Interval getInterval() {
return this.asset.interval();
}
private ZonedDateTime updateTime;
}
2 changes: 1 addition & 1 deletion src/main/java/net/osslabz/crypto/OhlcAsset.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package net.osslabz.crypto;

public record OhlcAsset(CurrencyPair currencyPair, Interval interval) {
public record OhlcAsset(TradingAsset tradingAsset, Interval interval) {
}
16 changes: 16 additions & 0 deletions src/main/java/net/osslabz/crypto/TradingAsset.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package net.osslabz.crypto;

import java.util.Objects;

/**
* Identifies a trading asset (a currency pair on a specific exchange).
*
* @param exchange
* @param currencyPair
*/
public record TradingAsset(Exchange exchange, CurrencyPair currencyPair) {
public TradingAsset {
Objects.requireNonNull(exchange, "exchange cannot be null");
Objects.requireNonNull(currencyPair, "currencyPair cannot be null");
}
}

0 comments on commit 0fb35a2

Please sign in to comment.