package org.knowm.xchange.vircurex.service;
import java.io.IOException;
import org.knowm.xchange.Exchange;
import org.knowm.xchange.dto.Order;
import org.knowm.xchange.dto.trade.LimitOrder;
import org.knowm.xchange.dto.trade.OpenOrders;
import org.knowm.xchange.vircurex.VircurexAdapters;
import org.knowm.xchange.vircurex.VircurexUtils;
import org.knowm.xchange.vircurex.dto.trade.VircurexOpenOrdersReturn;
import org.knowm.xchange.vircurex.dto.trade.VircurexPlaceOrderReturn;
public class VircurexTradeServiceRaw extends VircurexBaseService {
/**
* Constructor
*
* @param exchange
*/
public VircurexTradeServiceRaw(Exchange exchange) {
super(exchange);
}
public String placeVircurexLimitOrder(LimitOrder limitOrder) throws IOException {
String type = limitOrder.getType() == Order.OrderType.BID ? "buy" : "sell";
String timestamp = VircurexUtils.getUtcTimestamp();
long nonce = exchange.getNonceFactory().createValue();
VircurexSha2Digest digest = new VircurexSha2Digest(exchange.getExchangeSpecification().getApiKey(),
exchange.getExchangeSpecification().getUserName(), timestamp, nonce, "create_order", type.toString(),
limitOrder.getTradableAmount().floatValue() + "", limitOrder.getCurrencyPair().counter.getCurrencyCode().toLowerCase(),
limitOrder.getLimitPrice().floatValue() + "", limitOrder.getCurrencyPair().base.getCurrencyCode().toLowerCase());
VircurexPlaceOrderReturn ret = vircurexAuthenticated.trade(exchange.getExchangeSpecification().getApiKey(), nonce, digest.toString(), timestamp,
type.toString(), limitOrder.getTradableAmount().floatValue() + "", limitOrder.getCurrencyPair().counter.getCurrencyCode().toLowerCase(),
limitOrder.getLimitPrice().floatValue() + "", limitOrder.getCurrencyPair().base.getCurrencyCode().toLowerCase());
timestamp = VircurexUtils.getUtcTimestamp();
nonce = exchange.getNonceFactory().createValue();
digest = new VircurexSha2Digest(exchange.getExchangeSpecification().getApiKey(), exchange.getExchangeSpecification().getUserName(), timestamp,
nonce, "release_order", ret.getOrderId());
ret = vircurexAuthenticated.release(exchange.getExchangeSpecification().getApiKey(), nonce, digest.toString(), timestamp, ret.getOrderId());
return ret.getOrderId();
}
public OpenOrders getVircurexOpenOrders() throws IOException {
String timestamp = VircurexUtils.getUtcTimestamp();
long nonce = exchange.getNonceFactory().createValue();
VircurexSha2Digest digest = new VircurexSha2Digest(exchange.getExchangeSpecification().getApiKey(),
exchange.getExchangeSpecification().getUserName(), timestamp, nonce, "read_orders");
VircurexOpenOrdersReturn openOrdersReturn = vircurexAuthenticated.getOpenOrders(exchange.getExchangeSpecification().getUserName(), nonce,
digest.toString(), timestamp, VircurexUtils.RELEASED_ORDER);
return new OpenOrders(VircurexAdapters.adaptOpenOrders(openOrdersReturn.getOpenOrders()));
}
}