mirror of
https://github.com/bisq-network/bisq.git
synced 2024-11-19 01:41:11 +01:00
Merge pull request #6646 from helixx87/api-get-all
Support "all" attribute in getoffers API method
This commit is contained in:
commit
e8a3d92d34
@ -277,7 +277,7 @@ public class CreateBSQOffersTest extends AbstractOfferTest {
|
||||
@Test
|
||||
@Order(6)
|
||||
public void testGetAvailableBsqOffers() {
|
||||
List<OfferInfo> offers = bobClient.getOffersSortedByDate(BSQ);
|
||||
List<OfferInfo> offers = bobClient.getOffersSortedByDate(BSQ, false);
|
||||
log.debug("All Bob's Available BSQ Offers:\n{}", toOffersTable.apply(offers));
|
||||
assertEquals(4, offers.size());
|
||||
log.debug("BOB'S BALANCES\n{}", formatBalancesTbls(bobClient.getBalances()));
|
||||
|
@ -274,7 +274,7 @@ public class CreateXMROffersTest extends AbstractOfferTest {
|
||||
@Test
|
||||
@Order(6)
|
||||
public void testGetAvailableXMROffers() {
|
||||
List<OfferInfo> offers = bobClient.getOffersSortedByDate(XMR);
|
||||
List<OfferInfo> offers = bobClient.getOffersSortedByDate(XMR, false);
|
||||
log.debug("All of Bob's available XMR offers:\n{}", toOffersTable.apply(offers));
|
||||
assertEquals(4, offers.size());
|
||||
log.debug("Bob's balances\n{}", formatBalancesTbls(bobClient.getBalances()));
|
||||
|
@ -86,7 +86,7 @@ public class TakeSellBTCOfferTest extends AbstractTradeTest {
|
||||
0L,
|
||||
false);
|
||||
sleep(2_500); // Allow available offer to be removed from offer book.
|
||||
var takeableUsdOffers = bobClient.getOffersSortedByDate(SELL.name(), USD);
|
||||
var takeableUsdOffers = bobClient.getOffersSortedByDate(SELL.name(), USD, false);
|
||||
assertEquals(0, takeableUsdOffers.size());
|
||||
|
||||
trade = bobClient.getTrade(tradeId);
|
||||
|
@ -468,7 +468,8 @@ public class CliMain {
|
||||
}
|
||||
var direction = opts.getDirection();
|
||||
var currencyCode = opts.getCurrencyCode();
|
||||
List<OfferInfo> offers = client.getOffers(direction, currencyCode);
|
||||
var all = opts.getAll();
|
||||
List<OfferInfo> offers = client.getOffers(direction, currencyCode, all);
|
||||
if (offers.isEmpty())
|
||||
out.printf("no %s %s offers found%n", direction, currencyCode);
|
||||
else
|
||||
|
@ -293,16 +293,16 @@ public final class GrpcClient {
|
||||
return offersServiceRequest.getBsqSwapOffers(direction);
|
||||
}
|
||||
|
||||
public List<OfferInfo> getOffers(String direction, String currencyCode) {
|
||||
return offersServiceRequest.getOffers(direction, currencyCode);
|
||||
public List<OfferInfo> getOffers(String direction, String currencyCode, boolean all) {
|
||||
return offersServiceRequest.getOffers(direction, currencyCode, all);
|
||||
}
|
||||
|
||||
public List<OfferInfo> getOffersSortedByDate(String currencyCode) {
|
||||
return offersServiceRequest.getOffersSortedByDate(currencyCode);
|
||||
public List<OfferInfo> getOffersSortedByDate(String currencyCode, boolean all) {
|
||||
return offersServiceRequest.getOffersSortedByDate(currencyCode, all);
|
||||
}
|
||||
|
||||
public List<OfferInfo> getOffersSortedByDate(String direction, String currencyCode) {
|
||||
return offersServiceRequest.getOffersSortedByDate(direction, currencyCode);
|
||||
public List<OfferInfo> getOffersSortedByDate(String direction, String currencyCode, boolean all) {
|
||||
return offersServiceRequest.getOffersSortedByDate(direction, currencyCode, all);
|
||||
}
|
||||
|
||||
public List<OfferInfo> getBsqSwapOffersSortedByDate() {
|
||||
|
@ -20,6 +20,7 @@ package bisq.cli.opts;
|
||||
|
||||
import joptsimple.OptionSpec;
|
||||
|
||||
import static bisq.cli.opts.OptLabel.OPT_ALL;
|
||||
import static bisq.cli.opts.OptLabel.OPT_CURRENCY_CODE;
|
||||
import static bisq.cli.opts.OptLabel.OPT_DIRECTION;
|
||||
|
||||
@ -31,6 +32,11 @@ public class GetOffersOptionParser extends AbstractMethodOptionParser implements
|
||||
final OptionSpec<String> currencyCodeOpt = parser.accepts(OPT_CURRENCY_CODE, "currency code (bsq|xmr|eur|usd|...)")
|
||||
.withRequiredArg();
|
||||
|
||||
final OptionSpec<Boolean> allOpt = parser.accepts(OPT_ALL, "get all offers")
|
||||
.withOptionalArg()
|
||||
.ofType(boolean.class)
|
||||
.defaultsTo(Boolean.FALSE);
|
||||
|
||||
public GetOffersOptionParser(String[] args) {
|
||||
super(args);
|
||||
}
|
||||
@ -58,4 +64,8 @@ public class GetOffersOptionParser extends AbstractMethodOptionParser implements
|
||||
public String getCurrencyCode() {
|
||||
return options.valueOf(currencyCodeOpt);
|
||||
}
|
||||
|
||||
public boolean getAll() {
|
||||
return options.valueOf(allOpt);
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ public class OptLabel {
|
||||
public final static String OPT_AMOUNT = "amount";
|
||||
public final static String OPT_CATEGORY = "category";
|
||||
public final static String OPT_CURRENCY_CODE = "currency-code";
|
||||
public final static String OPT_ALL = "all";
|
||||
public final static String OPT_DAYS = "days";
|
||||
public final static String OPT_DIRECTION = "direction";
|
||||
public final static String OPT_DISPUTE_AGENT_TYPE = "dispute-agent-type";
|
||||
|
@ -231,23 +231,24 @@ public class OffersServiceRequest {
|
||||
return grpcStubs.offersService.getBsqSwapOffers(request).getBsqSwapOffersList();
|
||||
}
|
||||
|
||||
public List<OfferInfo> getOffers(String direction, String currencyCode) {
|
||||
public List<OfferInfo> getOffers(String direction, String currencyCode, boolean all) {
|
||||
var request = GetOffersRequest.newBuilder()
|
||||
.setDirection(direction)
|
||||
.setCurrencyCode(currencyCode)
|
||||
.setAll(all)
|
||||
.build();
|
||||
return grpcStubs.offersService.getOffers(request).getOffersList();
|
||||
}
|
||||
|
||||
public List<OfferInfo> getOffersSortedByDate(String currencyCode) {
|
||||
public List<OfferInfo> getOffersSortedByDate(String currencyCode, boolean all) {
|
||||
ArrayList<OfferInfo> offers = new ArrayList<>();
|
||||
offers.addAll(getOffers(BUY.name(), currencyCode));
|
||||
offers.addAll(getOffers(SELL.name(), currencyCode));
|
||||
offers.addAll(getOffers(BUY.name(), currencyCode, all));
|
||||
offers.addAll(getOffers(SELL.name(), currencyCode, all));
|
||||
return offers.isEmpty() ? offers : sortOffersByDate(offers);
|
||||
}
|
||||
|
||||
public List<OfferInfo> getOffersSortedByDate(String direction, String currencyCode) {
|
||||
var offers = getOffers(direction, currencyCode);
|
||||
public List<OfferInfo> getOffersSortedByDate(String direction, String currencyCode, boolean all) {
|
||||
var offers = getOffers(direction, currencyCode, all);
|
||||
return offers.isEmpty() ? offers : sortOffersByDate(offers);
|
||||
}
|
||||
|
||||
@ -292,8 +293,8 @@ public class OffersServiceRequest {
|
||||
return sortOffersByDate(offers);
|
||||
}
|
||||
|
||||
public OfferInfo getMostRecentOffer(String direction, String currencyCode) {
|
||||
List<OfferInfo> offers = getOffersSortedByDate(direction, currencyCode);
|
||||
public OfferInfo getMostRecentOffer(String direction, String currencyCode, boolean all) {
|
||||
List<OfferInfo> offers = getOffersSortedByDate(direction, currencyCode, all);
|
||||
return offers.isEmpty() ? null : offers.get(offers.size() - 1);
|
||||
}
|
||||
|
||||
|
@ -59,12 +59,12 @@ public class GetOffersCliOutputDiffTest extends AbstractCliTest {
|
||||
}
|
||||
|
||||
private void getAvailableBuyUsdOffers() {
|
||||
var offers = bobClient.getOffers(BUY.name(), "USD");
|
||||
var offers = bobClient.getOffers(BUY.name(), "USD", false);
|
||||
printAndCheckDiffs(offers, BUY.name(), "USD");
|
||||
}
|
||||
|
||||
private void getAvailableSellUsdOffers() {
|
||||
var offers = bobClient.getOffers(SELL.name(), "USD");
|
||||
var offers = bobClient.getOffers(SELL.name(), "USD", false);
|
||||
printAndCheckDiffs(offers, SELL.name(), "USD");
|
||||
}
|
||||
|
||||
@ -79,12 +79,12 @@ public class GetOffersCliOutputDiffTest extends AbstractCliTest {
|
||||
}
|
||||
|
||||
private void getAvailableBuyXmrOffers() {
|
||||
var offers = bobClient.getOffers(BUY.name(), "XMR");
|
||||
var offers = bobClient.getOffers(BUY.name(), "XMR", false);
|
||||
printAndCheckDiffs(offers, BUY.name(), "XMR");
|
||||
}
|
||||
|
||||
private void getAvailableSellXmrOffers() {
|
||||
var offers = bobClient.getOffers(SELL.name(), "XMR");
|
||||
var offers = bobClient.getOffers(SELL.name(), "XMR", false);
|
||||
printAndCheckDiffs(offers, SELL.name(), "XMR");
|
||||
}
|
||||
|
||||
@ -99,12 +99,12 @@ public class GetOffersCliOutputDiffTest extends AbstractCliTest {
|
||||
}
|
||||
|
||||
private void getAvailableBuyBsqOffers() {
|
||||
var offers = bobClient.getOffers(BUY.name(), "BSQ");
|
||||
var offers = bobClient.getOffers(BUY.name(), "BSQ", false);
|
||||
printAndCheckDiffs(offers, BUY.name(), "BSQ");
|
||||
}
|
||||
|
||||
private void getAvailableSellBsqOffers() {
|
||||
var offers = bobClient.getOffers(SELL.name(), "BSQ");
|
||||
var offers = bobClient.getOffers(SELL.name(), "BSQ", false);
|
||||
printAndCheckDiffs(offers, SELL.name(), "BSQ");
|
||||
}
|
||||
|
||||
|
@ -164,8 +164,8 @@ public class CoreApi {
|
||||
return coreOffersService.getBsqSwapOffers(direction);
|
||||
}
|
||||
|
||||
public List<Offer> getOffers(String direction, String currencyCode) {
|
||||
return coreOffersService.getOffers(direction, currencyCode);
|
||||
public List<Offer> getOffers(String direction, String currencyCode, boolean all) {
|
||||
return coreOffersService.getOffers(direction, currencyCode, all);
|
||||
}
|
||||
|
||||
public List<OpenOffer> getMyOffers(String direction, String currencyCode) {
|
||||
|
@ -206,14 +206,14 @@ class CoreOffersService {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
List<Offer> getOffers(String direction, String currencyCode) {
|
||||
List<Offer> getOffers(String direction, String currencyCode, boolean all) {
|
||||
var upperCaseCurrencyCode = currencyCode.toUpperCase();
|
||||
var isFiat = isFiatCurrency(upperCaseCurrencyCode);
|
||||
if (isFiat) {
|
||||
return offerBookService.getOffers().stream()
|
||||
.filter(o -> !o.isMyOffer(keyRing))
|
||||
.filter(o -> offerMatchesDirectionAndCurrency(o, direction, upperCaseCurrencyCode))
|
||||
.filter(o -> offerFilterService.canTakeOffer(o, coreContext.isApiUser()).isValid())
|
||||
.filter(o -> all || offerFilterService.canTakeOffer(o, coreContext.isApiUser()).isValid())
|
||||
.sorted(priceComparator(direction, true))
|
||||
.collect(Collectors.toList());
|
||||
} else {
|
||||
@ -226,7 +226,7 @@ class CoreOffersService {
|
||||
.filter(o -> !o.isMyOffer(keyRing))
|
||||
.filter(o -> offerMatchesDirectionAndCurrency(o, direction, "BTC"))
|
||||
.filter(o -> o.getBaseCurrencyCode().equalsIgnoreCase(upperCaseCurrencyCode))
|
||||
.filter(o -> offerFilterService.canTakeOffer(o, coreContext.isApiUser()).isValid())
|
||||
.filter(o -> all || offerFilterService.canTakeOffer(o, coreContext.isApiUser()).isValid())
|
||||
.sorted(priceComparator(direction, false))
|
||||
.collect(Collectors.toList());
|
||||
else
|
||||
|
@ -9,6 +9,7 @@ SYNOPSIS
|
||||
getoffers
|
||||
--direction=<buy|sell>
|
||||
--currency-code=<eur|usd>
|
||||
--all=<true|false>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -24,6 +25,9 @@ OPTIONS
|
||||
--currency-code
|
||||
The three letter code for the fiat used to buy or sell BTC, e.g., EUR, USD, BRL, ...
|
||||
|
||||
--all
|
||||
Whether return all offers or only these matching my accounts
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
You have one Brazilian Real payment account with a face-to-face payment method type.
|
||||
|
@ -195,7 +195,7 @@ class GrpcOffersService extends OffersImplBase {
|
||||
public void getOffers(GetOffersRequest req,
|
||||
StreamObserver<GetOffersReply> responseObserver) {
|
||||
try {
|
||||
List<OfferInfo> result = coreApi.getOffers(req.getDirection(), req.getCurrencyCode())
|
||||
List<OfferInfo> result = coreApi.getOffers(req.getDirection(), req.getCurrencyCode(), req.getAll())
|
||||
.stream()
|
||||
.map(OfferInfo::toOfferInfo)
|
||||
.collect(Collectors.toList());
|
||||
|
@ -148,6 +148,7 @@ message GetMyOfferReply {
|
||||
message GetOffersRequest {
|
||||
string direction = 1; // The offer's BUY (BTC) or SELL (BTC) direction.
|
||||
string currency_code = 2; // The offer's fiat or altcoin currency code.
|
||||
bool all = 3; // Return all or only these matching my account
|
||||
}
|
||||
|
||||
message GetOffersReply {
|
||||
|
Loading…
Reference in New Issue
Block a user