package org.knowm.xchange.itbit.v1.service; import java.io.IOException; import java.util.Collection; import java.util.Date; import org.knowm.xchange.Exchange; import org.knowm.xchange.currency.CurrencyPair; import org.knowm.xchange.dto.Order; import org.knowm.xchange.dto.trade.LimitOrder; import org.knowm.xchange.dto.trade.MarketOrder; import org.knowm.xchange.dto.trade.OpenOrders; import org.knowm.xchange.dto.trade.UserTrades; import org.knowm.xchange.exceptions.ExchangeException; import org.knowm.xchange.exceptions.NotAvailableFromExchangeException; import org.knowm.xchange.exceptions.NotYetImplementedForExchangeException; import org.knowm.xchange.itbit.v1.ItBitAdapters; import org.knowm.xchange.itbit.v1.dto.trade.ItBitOrder; import org.knowm.xchange.itbit.v1.dto.trade.ItBitTradeHistory; import org.knowm.xchange.service.trade.TradeService; import org.knowm.xchange.service.trade.params.*; import org.knowm.xchange.service.trade.params.orders.OpenOrdersParamCurrencyPair; import org.knowm.xchange.service.trade.params.orders.OpenOrdersParams; public class ItBitTradeService extends ItBitTradeServiceRaw implements TradeService { public ItBitTradeService(Exchange exchange) { super(exchange); } @Override public OpenOrders getOpenOrders() throws IOException { return getOpenOrders(createOpenOrdersParams()); } @Override public OpenOrders getOpenOrders(OpenOrdersParams params) throws ExchangeException, NotAvailableFromExchangeException, NotYetImplementedForExchangeException, IOException { CurrencyPair currencyPair = null; if (params instanceof OpenOrdersParamCurrencyPair) { currencyPair = ((OpenOrdersParamCurrencyPair) params).getCurrencyPair(); } // In case of no currency pair - return all currency pairs. if (currencyPair == null) { throw new ExchangeException("CurrencyPair parameter must not be null."); } ItBitOrder[] itBitOpenOrders = getItBitOpenOrders(currencyPair); return ItBitAdapters.adaptPrivateOrders(itBitOpenOrders); } @Override public String placeMarketOrder(MarketOrder marketOrder) throws IOException { throw new NotAvailableFromExchangeException(); } @Override public String placeLimitOrder(LimitOrder limitOrder) throws IOException { return placeItBitLimitOrder(limitOrder).getId(); } @Override public boolean cancelOrder(String orderId) throws IOException { cancelItBitOrder(orderId); return true; } @Override public UserTrades getTradeHistory(TradeHistoryParams params) throws IOException { Integer page = ((TradeHistoryParamPaging) params).getPageNumber(); if (page != null) { ++page; } ItBitTradeHistory userTradeHistory = getUserTradeHistory(((TradeHistoryParamTransactionId) params).getTransactionId(), page, ((TradeHistoryParamPaging) params).getPageLength(), ((TradeHistoryParamsTimeSpan) params).getStartTime(), ((TradeHistoryParamsTimeSpan) params).getEndTime()); return ItBitAdapters.adaptTradeHistory(userTradeHistory); } @Override public TradeHistoryParams createTradeHistoryParams() { return new ItBitTradeHistoryParams(50, 0, null, null, null); } @Override public ItBitOpenOrdersParams createOpenOrdersParams() { return new ItBitOpenOrdersParams(); } public static class ItBitTradeHistoryParams extends DefaultTradeHistoryParamPaging implements TradeHistoryParamsTimeSpan, TradeHistoryParamTransactionId, TradeHistoryParamPaging { private String txId; private Date startTime; private Date endTime; public ItBitTradeHistoryParams(Integer pageLength, Integer pageNumber, String txId, Date startTime, Date endTime) { super(pageLength, pageNumber); this.txId = txId; this.startTime = startTime; this.endTime = endTime; } @Override public void setTransactionId(String txId) { this.txId = txId; } @Override public String getTransactionId() { return txId; } @Override public void setStartTime(Date startTime) { this.startTime = startTime; } @Override public Date getStartTime() { return startTime; } @Override public void setEndTime(Date endTime) { this.endTime = endTime; } @Override public Date getEndTime() { return endTime; } } @Override public Collection<Order> getOrder(String... orderIds) throws ExchangeException, NotAvailableFromExchangeException, NotYetImplementedForExchangeException, IOException { throw new NotYetImplementedForExchangeException(); } }