diff --git a/pom.xml b/pom.xml
index 3ab5b436d01..25d473cc790 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,7 +100,6 @@
xchange-kucoin
xchange-kuna
xchange-latoken
- xchange-lgo
xchange-livecoin
xchange-luno
xchange-lykke
@@ -140,7 +139,6 @@
xchange-stream-kraken
xchange-stream-krakenfutures
xchange-stream-kucoin
- xchange-stream-lgo
xchange-stream-okcoin
xchange-stream-okex
xchange-stream-poloniex2
diff --git a/xchange-examples/pom.xml b/xchange-examples/pom.xml
index bff03ca4051..48ee1e57f04 100755
--- a/xchange-examples/pom.xml
+++ b/xchange-examples/pom.xml
@@ -333,11 +333,6 @@
xchange-enigma
${project.version}
-
- org.knowm.xchange
- xchange-lgo
- ${project.version}
-
org.knowm.xchart
diff --git a/xchange-examples/src/main/java/org/knowm/xchange/examples/lgo/LgoExamplesUtils.java b/xchange-examples/src/main/java/org/knowm/xchange/examples/lgo/LgoExamplesUtils.java
deleted file mode 100644
index 480c109e6b0..00000000000
--- a/xchange-examples/src/main/java/org/knowm/xchange/examples/lgo/LgoExamplesUtils.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.knowm.xchange.examples.lgo;
-
-import org.knowm.xchange.Exchange;
-import org.knowm.xchange.ExchangeFactory;
-import org.knowm.xchange.ExchangeSpecification;
-import org.knowm.xchange.lgo.LgoEnv;
-
-public class LgoExamplesUtils {
-
- public static Exchange getExchange() {
- ExchangeSpecification spec = LgoEnv.sandbox();
- spec.setSecretKey("your private key");
- spec.setApiKey("your api key");
-
- return ExchangeFactory.INSTANCE.createExchange(spec);
- }
-}
diff --git a/xchange-examples/src/main/java/org/knowm/xchange/examples/lgo/README b/xchange-examples/src/main/java/org/knowm/xchange/examples/lgo/README
deleted file mode 100644
index 184ebb7f9d3..00000000000
--- a/xchange-examples/src/main/java/org/knowm/xchange/examples/lgo/README
+++ /dev/null
@@ -1,5 +0,0 @@
-## LGO
-
-For now, only metadata, auth, trade history and order signature are supported, because the web socket should be favored for any trading activity (lowest possible latency).
-
-For web socket support, see [xchange-stream](https://github.com/bitrich-info/xchange-stream)
diff --git a/xchange-examples/src/main/java/org/knowm/xchange/examples/lgo/trade/LgoTradeHistoryDemo.java b/xchange-examples/src/main/java/org/knowm/xchange/examples/lgo/trade/LgoTradeHistoryDemo.java
deleted file mode 100644
index c5915a191cc..00000000000
--- a/xchange-examples/src/main/java/org/knowm/xchange/examples/lgo/trade/LgoTradeHistoryDemo.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.knowm.xchange.examples.lgo.trade;
-
-import java.io.IOException;
-import org.knowm.xchange.Exchange;
-import org.knowm.xchange.dto.trade.UserTrade;
-import org.knowm.xchange.dto.trade.UserTrades;
-import org.knowm.xchange.examples.lgo.LgoExamplesUtils;
-import org.knowm.xchange.lgo.service.LgoTradeHistoryParams;
-import org.knowm.xchange.service.trade.TradeService;
-
-public class LgoTradeHistoryDemo {
-
- public static void main(String[] args) throws IOException {
- Exchange lgoExchange = LgoExamplesUtils.getExchange();
- TradeService tradeService = lgoExchange.getTradeService();
- UserTrades tradeHistory = tradeService.getTradeHistory(tradeService.createTradeHistoryParams());
- System.out.println("Your last trades:");
- print(tradeHistory);
- while (tradeHistory.getNextPageCursor() != null
- && !tradeHistory.getNextPageCursor().isEmpty()) {
- LgoTradeHistoryParams params =
- (LgoTradeHistoryParams) tradeService.createTradeHistoryParams();
- params.setNextPageCursor(tradeHistory.getNextPageCursor());
- tradeHistory = tradeService.getTradeHistory(params);
- print(tradeHistory);
- }
- }
-
- private static void print(UserTrades tradeHistory) {
- tradeHistory.getUserTrades().stream().map(UserTrade::toString).forEach(System.out::println);
- }
-}
diff --git a/xchange-lgo/.gitignore b/xchange-lgo/.gitignore
deleted file mode 100644
index 0f1976fdef0..00000000000
--- a/xchange-lgo/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-src/test/resources/integration
\ No newline at end of file
diff --git a/xchange-lgo/README.md b/xchange-lgo/README.md
deleted file mode 100644
index 6ebfc96824b..00000000000
--- a/xchange-lgo/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-## LGO
-
-Supports LGO HTTP API and authentication.
-
-For now, only metadata, auth, trade history, order book, order signature and placing orders/cancelling orders are supported.
-The web socket API should be favored (lowest possible latency).
-
-For web socket support, see [xchange-stream](https://github.com/lgo-public/xchange-stream)
-
-### Documentation
-
-[LGO web site](https://lgo.group)
-
-[API Documentation](https://doc.exchange.lgo.markets)
-
-### Authentication methods
-
-LGO authenticates request using an api key, and a RSA key/pair.
-This library supports several strategy do deal with that.
-
-You can choose between the two methods by setting the `LgoEnv.SIGNATURE_SERVICE` specific parameter to `SignatureService.PASSTHROUGHS` or `SignatureService.LOCAL_RSA`.
-`LOCAL_RSA` is assumed by default.
-
-
-#### PASSTHROUGHS
-
-This strategy is intended for people running this lib behind a proxy that will do the real authentication.
-This is a good approach to secure your secrets, and even more so if you managed them with an HSM.
-
-This strategy will pass in the Authorization header whatever you gave as `User_Id` `Api_Key`
- and `Secret_Key`, encoded in Base64, concatenated as so : `LGO ${User_Id}:${Api_Key}:${Secret_Key}
-
-Your proxy could then fetch the real key given this identifier, and do the authorization
-
-#### Local RSA
-
-This strategy uses directly your secrets to apply authentication. Bet very careful about how you store and secure your secrets.
-
-You should configure `ExchangeSpecification` by setting `setApiKey` with your accessKey, and `setApiSecret` with your private key in PKCS8 format.
-
-##### How to generate a proper private key for real usage or integration tests
-
-To generate a valid key pair :
-
-* `openssl genrsa -out private.pem 2048` (generates a 2048 RSA private key in PKCS1)
-* `openssl rsa -in private.pem -pubout > key.pub` (deduce your pub key from private key)
-* `openssl pkcs8 -topk8 -inform PEM -in private.pem -out private_key.pem -nocrypt` (converts your private key to PKCS8)
-
-
-In LGO application, to generate an api key, copy the content of `key.pub`, and paste it when asked.
-You should be given an api key.
-
-This library expect your private key in PKCS8 format (the second file you generated earlier).
-
-For integration tests, an integration directory should exist into src/test/resources, containing:
-* `api_key.txt` : a file containing your api key in plain text
-* `private_key.pem` : the private key in PKCS8 pem format generated earlier
-
-### Order encryption
-
-LGO includes an optional front-running protection. More informations are available [here](https://lgono.de/)
-In practice, to prevent front-running, you can encrypt your orders with a key LGO doesn't know, and your order will be unencrypted only after LGO made several proofs that it won't
-insert orders before yours.
-
-This behavior is controlled by the specific parameter `LgoEnv.SHOULD_ENCRYPT_ORDERS`, that can be set to `true` or `false`.
\ No newline at end of file
diff --git a/xchange-lgo/pom.xml b/xchange-lgo/pom.xml
deleted file mode 100644
index 9d057217085..00000000000
--- a/xchange-lgo/pom.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
- 4.0.0
-
-
- org.knowm.xchange
- xchange-parent
- 5.2.2-SNAPSHOT
-
-
- xchange-lgo
-
- XChange LGO
- XChange implementation for LGO
-
- http://knowm.org/open-source/xchange/
- 2019
-
-
- Knowm Inc.
- http://knowm.org/open-source/xchange/
-
-
-
-
-
-
- org.knowm.xchange
- xchange-core
- ${project.version}
-
-
- org.mockito
- mockito-core
- test
-
-
-
-
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/CertificateAuthority.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/CertificateAuthority.java
deleted file mode 100644
index 7dce1841eb7..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/CertificateAuthority.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.knowm.xchange.lgo;
-
-import jakarta.ws.rs.GET;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.PathParam;
-import jakarta.ws.rs.Produces;
-import jakarta.ws.rs.core.MediaType;
-
-@Path("/")
-public interface CertificateAuthority {
-
- @Path("index.txt")
- @Produces(MediaType.TEXT_PLAIN)
- @GET
- String fetchIndex();
-
- @Path("{id}_public.pem")
- @Produces(MediaType.TEXT_PLAIN)
- @GET
- String fetchKey(@PathParam("id") String keyId);
-}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/Lgo.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/Lgo.java
deleted file mode 100644
index 38089880bb4..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/Lgo.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package org.knowm.xchange.lgo;
-
-import jakarta.ws.rs.Consumes;
-import jakarta.ws.rs.DELETE;
-import jakarta.ws.rs.GET;
-import jakarta.ws.rs.HeaderParam;
-import jakarta.ws.rs.POST;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.PathParam;
-import jakarta.ws.rs.Produces;
-import jakarta.ws.rs.QueryParam;
-import jakarta.ws.rs.core.MediaType;
-import java.io.IOException;
-import org.knowm.xchange.lgo.dto.LgoException;
-import org.knowm.xchange.lgo.dto.WithCursor;
-import org.knowm.xchange.lgo.dto.currency.LgoCurrencies;
-import org.knowm.xchange.lgo.dto.marketdata.LgoOrderbook;
-import org.knowm.xchange.lgo.dto.marketdata.LgoPriceHistory;
-import org.knowm.xchange.lgo.dto.order.LgoEncryptedOrder;
-import org.knowm.xchange.lgo.dto.order.LgoPlaceOrderResponse;
-import org.knowm.xchange.lgo.dto.order.LgoUnencryptedOrder;
-import org.knowm.xchange.lgo.dto.product.LgoProducts;
-import org.knowm.xchange.lgo.dto.trade.LgoUserTrades;
-import si.mazi.rescu.ParamsDigest;
-
-@Produces(MediaType.APPLICATION_JSON)
-@Path("/v1")
-public interface Lgo {
-
- String X_LGO_DATE = "X-LGO-DATE";
- String AUTHORIZATION = "Authorization";
- String PRODUCT_ID = "product_id";
- String MAX_RESULTS = "max_results";
- String PAGE = "page";
- String SORT = "sort";
- String ORDER_ID = "order_id";
- String GRANULARITY = "granularity";
- String END = "end";
- String START = "start";
-
- @GET
- @Path("/live/products")
- LgoProducts getProducts(
- @HeaderParam(X_LGO_DATE) long timestamp, @HeaderParam(AUTHORIZATION) ParamsDigest signature)
- throws IOException, LgoException;
-
- @GET
- @Path("/live/currencies")
- LgoCurrencies getCurrencies(
- @HeaderParam(X_LGO_DATE) long timestamp, @HeaderParam(AUTHORIZATION) ParamsDigest signature)
- throws IOException, LgoException;
-
- @GET
- @Path("/history/trades")
- WithCursor getLastTrades(
- @HeaderParam(X_LGO_DATE) long timestamp,
- @HeaderParam(AUTHORIZATION) ParamsDigest signature,
- @QueryParam(PRODUCT_ID) String productId,
- @QueryParam(MAX_RESULTS) int maxResults,
- @QueryParam(PAGE) String page,
- @QueryParam(SORT) String sort)
- throws IOException, LgoException;
-
- @GET
- @Path("/live/products/{product_id}/book")
- LgoOrderbook getOrderBook(
- @HeaderParam(X_LGO_DATE) long timestamp,
- @HeaderParam(AUTHORIZATION) ParamsDigest signature,
- @PathParam(PRODUCT_ID) String productId)
- throws IOException, LgoException;
-
- @POST
- @Path("/live/orders/encrypted")
- @Produces(MediaType.APPLICATION_JSON)
- @Consumes(MediaType.APPLICATION_JSON)
- LgoPlaceOrderResponse placeEncryptedOrder(
- LgoEncryptedOrder placeOrder,
- @HeaderParam(X_LGO_DATE) long timestamp,
- @HeaderParam(AUTHORIZATION) ParamsDigest signature)
- throws IOException, LgoException;
-
- @POST
- @Path("/live/orders")
- @Produces(MediaType.APPLICATION_JSON)
- @Consumes(MediaType.APPLICATION_JSON)
- LgoPlaceOrderResponse placeUnencryptedOrder(
- LgoUnencryptedOrder placeOrder,
- @HeaderParam(X_LGO_DATE) long timestamp,
- @HeaderParam(AUTHORIZATION) ParamsDigest signature)
- throws IOException, LgoException;
-
- @DELETE
- @Path("/live/orders/{order_id}")
- @Produces(MediaType.APPLICATION_JSON)
- @Consumes(MediaType.APPLICATION_JSON)
- LgoPlaceOrderResponse placeUnencryptedCancelOrder(
- @HeaderParam(X_LGO_DATE) long timestamp,
- @HeaderParam(AUTHORIZATION) ParamsDigest signature,
- @PathParam(ORDER_ID) String orderId)
- throws IOException, LgoException;
-
- @GET
- @Path("/history/products/{product_id}/candles")
- LgoPriceHistory getPriceHistory(
- @HeaderParam(X_LGO_DATE) long timestamp,
- @HeaderParam(AUTHORIZATION) ParamsDigest signature,
- @PathParam(PRODUCT_ID) String productId,
- @QueryParam(START) String startTime,
- @QueryParam(END) String endTime,
- @QueryParam(GRANULARITY) int granularity)
- throws IOException, LgoException;
-}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/LgoAdapters.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/LgoAdapters.java
deleted file mode 100644
index 1a6950446ea..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/LgoAdapters.java
+++ /dev/null
@@ -1,229 +0,0 @@
-package org.knowm.xchange.lgo;
-
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.time.Instant;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Spliterator;
-import java.util.Spliterators;
-import java.util.TimeZone;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
-import org.knowm.xchange.currency.Currency;
-import org.knowm.xchange.currency.CurrencyPair;
-import org.knowm.xchange.dto.Order.OrderType;
-import org.knowm.xchange.dto.marketdata.OrderBook;
-import org.knowm.xchange.dto.marketdata.Trades;
-import org.knowm.xchange.dto.meta.CurrencyMetaData;
-import org.knowm.xchange.dto.meta.ExchangeMetaData;
-import org.knowm.xchange.dto.meta.FeeTier;
-import org.knowm.xchange.dto.meta.InstrumentMetaData;
-import org.knowm.xchange.dto.trade.LimitOrder;
-import org.knowm.xchange.dto.trade.MarketOrder;
-import org.knowm.xchange.dto.trade.UserTrade;
-import org.knowm.xchange.dto.trade.UserTrades;
-import org.knowm.xchange.instrument.Instrument;
-import org.knowm.xchange.lgo.dto.WithCursor;
-import org.knowm.xchange.lgo.dto.currency.LgoCurrencies;
-import org.knowm.xchange.lgo.dto.currency.LgoCurrency;
-import org.knowm.xchange.lgo.dto.key.LgoKey;
-import org.knowm.xchange.lgo.dto.marketdata.LgoOrderbook;
-import org.knowm.xchange.lgo.dto.order.LgoPlaceCancelOrder;
-import org.knowm.xchange.lgo.dto.order.LgoPlaceLimitOrder;
-import org.knowm.xchange.lgo.dto.order.LgoPlaceMarketOrder;
-import org.knowm.xchange.lgo.dto.order.LgoPlaceOrder;
-import org.knowm.xchange.lgo.dto.order.LgoUnencryptedOrder;
-import org.knowm.xchange.lgo.dto.product.LgoProduct;
-import org.knowm.xchange.lgo.dto.product.LgoProducts;
-import org.knowm.xchange.lgo.dto.trade.LgoUserTrade;
-import org.knowm.xchange.lgo.dto.trade.LgoUserTrades;
-
-public final class LgoAdapters {
-
- private LgoAdapters() {}
-
- private static SimpleDateFormat ISO_DATE_FORMAT;
-
- static {
- ISO_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
- ISO_DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC"));
- }
-
- public static ExchangeMetaData adaptMetadata(
- ExchangeMetaData metaData, LgoProducts products, LgoCurrencies currencies) {
- Map currencyPairs = metaData.getInstruments();
- Map currency = metaData.getCurrencies();
- for (LgoCurrency lgoCurrency : currencies.getCurrencies()) {
- currency.put(
- Currency.getInstance(lgoCurrency.getCode()),
- new CurrencyMetaData(lgoCurrency.getDecimals(), null));
- }
- for (LgoProduct product : products.getProducts()) {
- BigDecimal minAmount = product.getBase().getLimits().getMin();
- BigDecimal maxAmount = product.getBase().getLimits().getMax();
- Integer baseScale = currency.get(Currency.getInstance(product.getBase().getId())).getScale();
- BigDecimal increment = product.getQuote().getIncrement().stripTrailingZeros();
- currencyPairs.put(
- toPair(product),
- new InstrumentMetaData.Builder()
- .minimumAmount(minAmount)
- .maximumAmount(maxAmount)
- .volumeScale(baseScale)
- .priceScale(increment.scale())
- .amountStepSize(increment)
- .feeTiers(new FeeTier[0])
- .tradingFeeCurrency(Currency.USD)
- .marketOrderEnabled(true)
- .build());
- }
- return metaData;
- }
-
- private static CurrencyPair toPair(LgoProduct product) {
- return new CurrencyPair(
- Currency.getInstance(product.getBase().getId()),
- Currency.getInstance(product.getQuote().getId()));
- }
-
- public static Stream adaptKeysIndex(String indexFile) {
- String[] all = indexFile.split("(true|false)");
- Spliterator spliterator =
- Spliterators.spliterator(all, Spliterator.IMMUTABLE | Spliterator.NONNULL);
- return StreamSupport.stream(spliterator, true).map(LgoAdapters::parseSummary);
- }
-
- private static LgoKey parseSummary(String rawSummary) {
- String[] summary = rawSummary.split(" ");
- return new LgoKey(summary[0], Instant.parse(summary[1]), Instant.parse(summary[2]));
- }
-
- public static LgoPlaceOrder adaptLimitOrder(LimitOrder limitOrder) {
- String product = adaptCurrencyPair(limitOrder.getCurrencyPair());
- String side = adaptOrderType(limitOrder.getType());
- return new LgoPlaceLimitOrder(
- 0,
- side,
- product,
- limitOrder.getOriginalAmount(),
- limitOrder.getLimitPrice(),
- limitOrder.getTimestamp().toInstant());
- }
-
- public static LgoPlaceOrder adaptEncryptedMarketOrder(MarketOrder marketOrder) {
- String product = adaptCurrencyPair(marketOrder.getCurrencyPair());
- String side = adaptOrderType(marketOrder.getType());
- return new LgoPlaceMarketOrder(
- 0, side, product, marketOrder.getOriginalAmount(), marketOrder.getTimestamp().toInstant());
- }
-
- public static LgoPlaceOrder adaptEncryptedCancelOrder(String orderId, Date date) {
- return new LgoPlaceCancelOrder(0, orderId, date.toInstant());
- }
-
- public static LgoUnencryptedOrder adaptUnencryptedLimitOrder(LimitOrder limitOrder) {
- String product = adaptCurrencyPair(limitOrder.getCurrencyPair());
- String side = adaptOrderType(limitOrder.getType());
- return new LgoUnencryptedOrder(
- "L",
- side,
- product,
- limitOrder.getOriginalAmount().toString(),
- limitOrder.getLimitPrice().toString(),
- limitOrder.getTimestamp().getTime());
- }
-
- public static LgoUnencryptedOrder adaptUnencryptedMarketOrder(MarketOrder marketOrder) {
- String product = adaptCurrencyPair(marketOrder.getCurrencyPair());
- String side = adaptOrderType(marketOrder.getType());
- return new LgoUnencryptedOrder(
- "M",
- side,
- product,
- marketOrder.getOriginalAmount().toString(),
- null,
- marketOrder.getTimestamp().getTime());
- }
-
- private static String adaptOrderType(OrderType type) {
- return type == OrderType.BID ? "B" : "S";
- }
-
- public static String adaptCurrencyPair(CurrencyPair currencyPair) {
- return String.format(
- "%s-%s", currencyPair.base.getCurrencyCode(), currencyPair.counter.getCurrencyCode());
- }
-
- private static UserTrade adaptUserTrade(LgoUserTrade lgoUserTrade) {
- OrderType type = adaptUserTradeType(lgoUserTrade);
- CurrencyPair currencyPair = adaptProductId(lgoUserTrade.getProductId());
- Date creationDate = lgoUserTrade.getCreationDate();
- return UserTrade.builder()
- .type(type)
- .originalAmount(lgoUserTrade.getQuantity())
- .currencyPair(currencyPair)
- .price(lgoUserTrade.getPrice())
- .timestamp(creationDate)
- .id(lgoUserTrade.getId())
- .orderId(lgoUserTrade.getOrderId())
- .feeAmount(lgoUserTrade.getFees())
- .feeCurrency(currencyPair.counter)
- .build();
- }
-
- static CurrencyPair adaptProductId(String productId) {
- String[] pair = productId.split("-");
- return new CurrencyPair(pair[0], pair[1]);
- }
-
- static OrderType adaptUserTradeType(LgoUserTrade trade) {
- boolean bidSide = buyerTaker(trade) || sellerMaker(trade);
- return bidSide ? OrderType.BID : OrderType.ASK;
- }
-
- private static boolean sellerMaker(LgoUserTrade trade) {
- return trade.getSide().equals("S") && trade.getLiquidity().equals("M");
- }
-
- private static boolean buyerTaker(LgoUserTrade trade) {
- return trade.getSide().equals("B") && trade.getLiquidity().equals("T");
- }
-
- public static UserTrades adaptUserTrades(WithCursor lastTrades) {
- List trades =
- lastTrades.getResult().getTrades().stream()
- .map(LgoAdapters::adaptUserTrade)
- .collect(Collectors.toList());
- return new UserTrades(trades, 0L, Trades.TradeSortType.SortByID, lastTrades.getNextPage());
- }
-
- public static OrderBook adaptOrderBook(LgoOrderbook ob, CurrencyPair pair) {
- List bids =
- ob.getBids().stream()
- .map(e -> adaptEntryToLimitOrder(e, OrderType.BID, pair))
- .collect(Collectors.toList());
- List asks =
- ob.getAsks().stream()
- .map(e -> adaptEntryToLimitOrder(e, OrderType.ASK, pair))
- .collect(Collectors.toList());
-
- return new OrderBook(null, asks, bids, true);
- }
-
- public static LimitOrder adaptEntryToLimitOrder(
- Object[] entry, OrderType bid, CurrencyPair pair) {
- return new LimitOrder(
- bid,
- new BigDecimal(entry[1].toString()),
- pair,
- null,
- null,
- new BigDecimal(entry[0].toString()));
- }
-
- public static String adaptDateParam(Date date) {
- return ISO_DATE_FORMAT.format(date);
- }
-}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/LgoEnv.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/LgoEnv.java
deleted file mode 100644
index cd2a1c97ae3..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/LgoEnv.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.knowm.xchange.lgo;
-
-import org.knowm.xchange.ExchangeSpecification;
-
-public final class LgoEnv {
-
- public static final String KEYS_URL = "Keys_Url";
- public static final String WS_URL = "Websocket_Url";
- public static final String SIGNATURE_SERVICE = "Signature_Service";
- public static final String SHOULD_ENCRYPT_ORDERS = "Encrypt_Orders";
-
- private LgoEnv() {}
-
- public static ExchangeSpecification prod() {
- ExchangeSpecification result = baseSpecification();
- result.setSslUri("https://exchange-api.exchange.lgo.markets");
- result.setHost("exchange-api.exchange.lgo.markets");
- result.setExchangeSpecificParametersItem(
- KEYS_URL, "https://storage.googleapis.com/lgo-markets-keys");
- result.setExchangeSpecificParametersItem(WS_URL, "wss://ws.exchange.lgo.markets/");
- return result;
- }
-
- public static ExchangeSpecification sandbox() {
- ExchangeSpecification result = baseSpecification();
- result.setSslUri("https://exchange-api.sandbox.lgo.markets");
- result.setHost("exchange-api.sandbox.lgo.markets");
- result.setExchangeSpecificParametersItem(
- KEYS_URL, "https://storage.googleapis.com/lgo-sandbox_batch_keys");
- result.setExchangeSpecificParametersItem(WS_URL, "wss://ws.sandbox.lgo.markets/");
- return result;
- }
-
- public static ExchangeSpecification devel() {
- ExchangeSpecification result = baseSpecification();
- result.setSslUri("https://exchange-api.devel.z.lgo.ninja");
- result.setHost("exchange-api.devel.z.lgo.ninja");
- result.setExchangeSpecificParametersItem(
- KEYS_URL, "https://storage.googleapis.com/lgo-devel_batch_keys");
- result.setExchangeSpecificParametersItem(WS_URL, "wss://ws.devel.z.lgo.ninja/");
- return result;
- }
-
- public static ExchangeSpecification local() {
- ExchangeSpecification result = baseSpecification();
- result.setSslUri("http://localhost:8083");
- result.setHost("localhost");
- result.setExchangeSpecificParametersItem(KEYS_URL, "http://localhost:3001/keys");
- result.setExchangeSpecificParametersItem(WS_URL, "ws://localhost:8084/");
- return result;
- }
-
- private static ExchangeSpecification baseSpecification() {
- ExchangeSpecification result = new ExchangeSpecification(LgoExchange.class);
- result.setExchangeName("LGO");
- result.setExchangeSpecificParametersItem(SHOULD_ENCRYPT_ORDERS, false);
- result.setExchangeDescription(
- "LGO is a fare and secure exchange for institutional and retail investors.");
- return result;
- }
-
- public enum SignatureService {
- PASSTHROUGHS,
- LOCAL_RSA
- }
-}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/LgoErrorAdapter.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/LgoErrorAdapter.java
deleted file mode 100644
index f0da1ad1be8..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/LgoErrorAdapter.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.knowm.xchange.lgo;
-
-import org.apache.commons.lang3.StringUtils;
-import org.knowm.xchange.exceptions.ExchangeException;
-import org.knowm.xchange.exceptions.ExchangeSecurityException;
-import org.knowm.xchange.exceptions.FrequencyLimitExceededException;
-import org.knowm.xchange.exceptions.InternalServerException;
-import org.knowm.xchange.lgo.dto.LgoException;
-
-public class LgoErrorAdapter {
-
- private LgoErrorAdapter() {}
-
- public static ExchangeException adapt(LgoException exception) {
- String message = exception.getMessage();
- if (StringUtils.isEmpty(message)) {
- message = "Operation failed without any error message";
- }
- switch (exception.getHttpStatusCode()) {
- case 401:
- return new ExchangeSecurityException(message, exception);
- case 429:
- return new FrequencyLimitExceededException(message);
- case 500:
- return new InternalServerException(message, exception);
- }
- return new ExchangeException(message, exception);
- }
-}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/LgoExchange.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/LgoExchange.java
deleted file mode 100644
index 422829b5849..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/LgoExchange.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package org.knowm.xchange.lgo;
-
-import java.io.IOException;
-import org.knowm.xchange.BaseExchange;
-import org.knowm.xchange.ExchangeSpecification;
-import org.knowm.xchange.lgo.dto.LgoException;
-import org.knowm.xchange.lgo.dto.currency.LgoCurrencies;
-import org.knowm.xchange.lgo.dto.product.LgoProducts;
-import org.knowm.xchange.lgo.service.LgoKeyService;
-import org.knowm.xchange.lgo.service.LgoMarketDataService;
-import org.knowm.xchange.lgo.service.LgoSignatureService;
-import org.knowm.xchange.lgo.service.LgoTradeService;
-import org.knowm.xchange.service.account.AccountService;
-
-public class LgoExchange extends BaseExchange {
-
- private LgoSignatureService signatureService;
- private LgoProducts products;
- private LgoCurrencies currencies;
-
- @Override
- protected void initServices() {
- signatureService = LgoSignatureService.createInstance(getExchangeSpecification());
- this.marketDataService = new LgoMarketDataService(this);
- this.tradeService = new LgoTradeService(this, new LgoKeyService(getExchangeSpecification()));
- this.accountService = new AccountService() {};
- }
-
- @Override
- public void remoteInit() throws IOException {
- try {
- products = getMarketDataService().getProducts();
- currencies = getMarketDataService().getCurrencies();
- } catch (LgoException e) {
- throw LgoErrorAdapter.adapt(e);
- }
- LgoAdapters.adaptMetadata(getExchangeMetaData(), products, currencies);
- }
-
- @Override
- public ExchangeSpecification getDefaultExchangeSpecification() {
- return LgoEnv.prod();
- }
-
- @Override
- public LgoMarketDataService getMarketDataService() {
- return (LgoMarketDataService) marketDataService;
- }
-
- @Override
- public LgoTradeService getTradeService() {
- return (LgoTradeService) super.getTradeService();
- }
-
- public LgoProducts getProducts() {
- return products;
- }
-
- public LgoCurrencies getCurrencies() {
- return currencies;
- }
-
- public LgoSignatureService getSignatureService() {
- return signatureService;
- }
-}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/LgoException.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/LgoException.java
deleted file mode 100644
index f7d7e149bb9..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/LgoException.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.knowm.xchange.lgo.dto;
-
-import si.mazi.rescu.HttpStatusExceptionSupport;
-
-public class LgoException extends HttpStatusExceptionSupport {}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/WithCursor.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/WithCursor.java
deleted file mode 100644
index 78be28bf253..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/WithCursor.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.knowm.xchange.lgo.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class WithCursor {
-
- private final T result;
- private final String nextPage;
-
- public WithCursor(@JsonProperty("result") T result, @JsonProperty("next_page") String nextPage) {
- this.result = result;
- this.nextPage = nextPage;
- }
-
- public T getResult() {
- return result;
- }
-
- public String getNextPage() {
- return nextPage;
- }
-}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/currency/LgoCurrencies.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/currency/LgoCurrencies.java
deleted file mode 100644
index d39b987d084..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/currency/LgoCurrencies.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.knowm.xchange.lgo.dto.currency;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.List;
-
-public final class LgoCurrencies {
-
- private final List currencies;
-
- public LgoCurrencies(@JsonProperty("currencies") List currencies) {
- this.currencies = currencies;
- }
-
- public List getCurrencies() {
- return currencies;
- }
-}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/currency/LgoCurrency.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/currency/LgoCurrency.java
deleted file mode 100644
index 4e5a49e3b42..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/currency/LgoCurrency.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.knowm.xchange.lgo.dto.currency;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class LgoCurrency {
-
- private final String name;
- private final String code;
- private final int decimals;
-
- public LgoCurrency(
- @JsonProperty("name") String name,
- @JsonProperty("code") String code,
- @JsonProperty("decimals") int decimals) {
- this.name = name;
- this.code = code;
- this.decimals = decimals;
- }
-
- public String getName() {
- return name;
- }
-
- public String getCode() {
- return code;
- }
-
- public int getDecimals() {
- return decimals;
- }
-}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/key/LgoKey.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/key/LgoKey.java
deleted file mode 100644
index dbccc8560c4..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/key/LgoKey.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.knowm.xchange.lgo.dto.key;
-
-import java.time.Instant;
-
-public final class LgoKey {
-
- private final String id;
- private final Instant issuedAt;
- private final Instant disabledAt;
- private String value;
-
- public LgoKey(String id, Instant issuedAt, Instant disabledAt) {
- this.id = id;
- this.issuedAt = issuedAt;
- this.disabledAt = disabledAt;
- }
-
- public String getId() {
- return id;
- }
-
- public Instant getEnabledAt() {
- return issuedAt;
- }
-
- public Instant getDisabledAt() {
- return disabledAt;
- }
-
- public String getValue() {
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/marketdata/LgoCandlestick.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/marketdata/LgoCandlestick.java
deleted file mode 100644
index e1d8c898f46..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/marketdata/LgoCandlestick.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.knowm.xchange.lgo.dto.marketdata;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.math.BigDecimal;
-import java.util.Date;
-
-@JsonFormat(shape = JsonFormat.Shape.ARRAY)
-public class LgoCandlestick {
-
- private final Date time;
- private final BigDecimal open;
- private final BigDecimal high;
- private final BigDecimal low;
- private final BigDecimal close;
- private final BigDecimal volume;
-
- @JsonCreator
- public LgoCandlestick(
- @JsonProperty("time")
- @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'")
- Date time,
- @JsonProperty("low") BigDecimal low,
- @JsonProperty("high") BigDecimal high,
- @JsonProperty("open") BigDecimal open,
- @JsonProperty("close") BigDecimal close,
- @JsonProperty("volume") BigDecimal volume) {
- this.time = time;
- this.open = open;
- this.close = close;
- this.high = high;
- this.low = low;
- this.volume = volume;
- }
-
- public Date getTime() {
- return time;
- }
-
- public BigDecimal getOpen() {
- return open;
- }
-
- public BigDecimal getHigh() {
- return high;
- }
-
- public BigDecimal getLow() {
- return low;
- }
-
- public BigDecimal getClose() {
- return close;
- }
-
- public BigDecimal getVolume() {
- return volume;
- }
-
- @Override
- public String toString() {
- return "LgoCandlestick{"
- + "time="
- + time
- + ", open="
- + open
- + ", high="
- + high
- + ", low="
- + low
- + ", close="
- + close
- + ", volume="
- + volume
- + '}';
- }
-}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/marketdata/LgoGranularity.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/marketdata/LgoGranularity.java
deleted file mode 100644
index 19a969b2f3a..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/marketdata/LgoGranularity.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.knowm.xchange.lgo.dto.marketdata;
-
-public enum LgoGranularity {
- ONE_MINUTE(60),
- FIVE_MINUTES(300),
- FIFTEEN_MINUTES(900),
- ONE_HOUR(3600),
- SIX_HOURS(21600),
- ONE_DAY(86400);
-
- private final int seconds;
-
- LgoGranularity(int seconds) {
- this.seconds = seconds;
- }
-
- public int asSeconds() {
- return seconds;
- }
-}
diff --git a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/marketdata/LgoOrderbook.java b/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/marketdata/LgoOrderbook.java
deleted file mode 100644
index 27413e66b16..00000000000
--- a/xchange-lgo/src/main/java/org/knowm/xchange/lgo/dto/marketdata/LgoOrderbook.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.knowm.xchange.lgo.dto.marketdata;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.List;
-
-@JsonIgnoreProperties(ignoreUnknown = true)
-public final class LgoOrderbook {
-
- private final long lastBatchId;
- private final List