package org.knowm.xchange.coinbase.service;
import java.io.IOException;
import java.math.BigDecimal;
import org.knowm.xchange.Exchange;
import org.knowm.xchange.coinbase.dto.trade.CoinbaseTransfer;
import org.knowm.xchange.coinbase.dto.trade.CoinbaseTransfers;
/**
* @author jamespedwards42
*/
class CoinbaseTradeServiceRaw extends CoinbaseBaseService {
/**
* Constructor
*
* @param exchange
*/
protected CoinbaseTradeServiceRaw(Exchange exchange) {
super(exchange);
}
/**
* Authenticated resource that lets you purchase Bitcoin using the primary bank account that is linked to your account. (You must link and verify
* your bank account through the website before this API call will work). The underlying optional parameter agree_btc_amount_varies is set to false.
* Use {@link #buyAndAgreeBTCAmountVaries} to have it set to true.
*
* @see <a href="https://coinbase.com/api/doc/1.0/buys/create.html">coinbase.com/api/doc/1.0/buys/create.html</a>
* @param quantity The quantity of Bitcoin you would like to buy.
* @return The {@code CoinbaseTransfer} representing the buy.
* @throws IOException
*/
public CoinbaseTransfer buy(BigDecimal quantity) throws IOException {
final CoinbaseTransfer buyTransfer = coinbase.buy(quantity.toPlainString(), false, exchange.getExchangeSpecification().getApiKey(),
signatureCreator, exchange.getNonceFactory());
return handleResponse(buyTransfer);
}
/**
* Authenticated resource that lets you purchase Bitcoin using the primary bank account that is linked to your account. (You must link and verify
* your bank account through the website before this API call will work). The underlying optional parameter agree_btc_amount_varies is set to true.
* Use {@link #buyAndAgreeBTCAmountVaries} to have it set to false.
*
* @see <a href="https://coinbase.com/api/doc/1.0/buys/create.html">coinbase.com/api/doc/1.0/buys/create.html</a>
* @param quantity The quantity of Bitcoin you would like to buy.
* @return A {@code CoinbaseTransfer} representing the buy.
* @throws IOException
*/
public CoinbaseTransfer buyAndAgreeBTCAmountVaries(BigDecimal quantity) throws IOException {
final CoinbaseTransfer buyTransfer = coinbase.buy(quantity.toPlainString(), true, exchange.getExchangeSpecification().getApiKey(),
signatureCreator, exchange.getNonceFactory());
return handleResponse(buyTransfer);
}
/**
* Authenticated resource that lets you convert Bitcoin in your account to USD by crediting your primary bank account on Coinbase. (You must link
* and verify your bank account through the website before this API call will work).
*
* @see <a href="https://coinbase.com/api/doc/1.0/sells/create.html">coinbase.com/api/doc/1.0/sells/create.html</a>
* @param quantity The quantity of Bitcoin you would like to sell.
* @return A {@code CoinbaseTransfer} representing the sell.
* @throws IOException
*/
public CoinbaseTransfer sell(BigDecimal quantity) throws IOException {
final CoinbaseTransfer sellTransfer = coinbase.sell(quantity.toPlainString(), exchange.getExchangeSpecification().getApiKey(), signatureCreator,
exchange.getNonceFactory());
return handleResponse(sellTransfer);
}
/**
* Authenticated resource which returns the user’s Bitcoin purchases and sells. Sorted in descending order by creation date. This is a paged
* resource and will return the first page by default.
*
* @see <a href="https://coinbase.com/api/doc/1.0/transfers/index.html">coinbase.com/api/doc/1.0/transfers/index.html</a>
* @return
* @throws IOException
*/
public CoinbaseTransfers getCoinbaseTransfers() throws IOException {
return getCoinbaseTransfers(null, null);
}
/**
* Authenticated resource which returns the user’s Bitcoin purchases and sells. Sorted in descending order by creation date.
*
* @see <a href="https://coinbase.com/api/doc/1.0/transfers/index.html">coinbase.com/api/doc/1.0/transfers/index.html</a>
* @param page Optional parameter to request a desired page of results. Will return page 1 if the supplied page is null or less than 1.
* @param limit Optional parameter to limit the maximum number of results to return. Will return up to 25 results by default if null or less than 1.
* @return
* @throws IOException
*/
public CoinbaseTransfers getCoinbaseTransfers(Integer page, final Integer limit) throws IOException {
final CoinbaseTransfers transfers = coinbase.getTransfers(page, limit, exchange.getExchangeSpecification().getApiKey(), signatureCreator,
exchange.getNonceFactory());
return transfers;
}
}