mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-24 15:10:44 +01:00
Adjust bsq-swap-offer related gRPC daemon services
- Add GetOfferCategory service so CLI can determine what kind of takeoffer service is to be used. - Adjust to removal of BsqSwapOfferInfo proto. - Call new coreApi.getRole(BsqSwapTrade) before building BsqSwapTradeInfo proto.
This commit is contained in:
parent
5924312e64
commit
c6aceb0458
2 changed files with 63 additions and 26 deletions
|
@ -18,7 +18,6 @@
|
||||||
package bisq.daemon.grpc;
|
package bisq.daemon.grpc;
|
||||||
|
|
||||||
import bisq.core.api.CoreApi;
|
import bisq.core.api.CoreApi;
|
||||||
import bisq.core.api.model.BsqSwapOfferInfo;
|
|
||||||
import bisq.core.api.model.OfferInfo;
|
import bisq.core.api.model.OfferInfo;
|
||||||
import bisq.core.offer.Offer;
|
import bisq.core.offer.Offer;
|
||||||
import bisq.core.offer.OpenOffer;
|
import bisq.core.offer.OpenOffer;
|
||||||
|
@ -33,12 +32,15 @@ import bisq.proto.grpc.EditOfferReply;
|
||||||
import bisq.proto.grpc.EditOfferRequest;
|
import bisq.proto.grpc.EditOfferRequest;
|
||||||
import bisq.proto.grpc.GetBsqSwapOfferReply;
|
import bisq.proto.grpc.GetBsqSwapOfferReply;
|
||||||
import bisq.proto.grpc.GetBsqSwapOffersReply;
|
import bisq.proto.grpc.GetBsqSwapOffersReply;
|
||||||
|
import bisq.proto.grpc.GetBsqSwapOffersRequest;
|
||||||
import bisq.proto.grpc.GetMyBsqSwapOfferReply;
|
import bisq.proto.grpc.GetMyBsqSwapOfferReply;
|
||||||
import bisq.proto.grpc.GetMyBsqSwapOffersReply;
|
import bisq.proto.grpc.GetMyBsqSwapOffersReply;
|
||||||
import bisq.proto.grpc.GetMyOfferReply;
|
import bisq.proto.grpc.GetMyOfferReply;
|
||||||
import bisq.proto.grpc.GetMyOfferRequest;
|
import bisq.proto.grpc.GetMyOfferRequest;
|
||||||
import bisq.proto.grpc.GetMyOffersReply;
|
import bisq.proto.grpc.GetMyOffersReply;
|
||||||
import bisq.proto.grpc.GetMyOffersRequest;
|
import bisq.proto.grpc.GetMyOffersRequest;
|
||||||
|
import bisq.proto.grpc.GetOfferCategoryReply;
|
||||||
|
import bisq.proto.grpc.GetOfferCategoryRequest;
|
||||||
import bisq.proto.grpc.GetOfferReply;
|
import bisq.proto.grpc.GetOfferReply;
|
||||||
import bisq.proto.grpc.GetOfferRequest;
|
import bisq.proto.grpc.GetOfferRequest;
|
||||||
import bisq.proto.grpc.GetOffersReply;
|
import bisq.proto.grpc.GetOffersReply;
|
||||||
|
@ -56,10 +58,15 @@ import java.util.stream.Collectors;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import static bisq.core.api.model.BsqSwapOfferInfo.toBsqSwapOfferInfo;
|
import static bisq.core.api.model.OfferInfo.toMyPendingOfferInfo;
|
||||||
import static bisq.core.api.model.OfferInfo.toOfferInfo;
|
import static bisq.core.api.model.OfferInfo.toOfferInfo;
|
||||||
import static bisq.core.api.model.OfferInfo.toPendingOfferInfo;
|
|
||||||
import static bisq.daemon.grpc.interceptor.GrpcServiceRateMeteringConfig.getCustomRateMeteringInterceptor;
|
import static bisq.daemon.grpc.interceptor.GrpcServiceRateMeteringConfig.getCustomRateMeteringInterceptor;
|
||||||
|
import static bisq.proto.grpc.GetOfferCategoryReply.OfferCategory;
|
||||||
|
import static bisq.proto.grpc.GetOfferCategoryReply.OfferCategory.ALTCOIN;
|
||||||
|
import static bisq.proto.grpc.GetOfferCategoryReply.OfferCategory.BSQ_SWAP;
|
||||||
|
import static bisq.proto.grpc.GetOfferCategoryReply.OfferCategory.FIAT;
|
||||||
|
import static bisq.proto.grpc.GetOfferCategoryReply.OfferCategory.UNKNOWN;
|
||||||
|
import static bisq.proto.grpc.GetOfferCategoryReply.newBuilder;
|
||||||
import static bisq.proto.grpc.OffersGrpc.*;
|
import static bisq.proto.grpc.OffersGrpc.*;
|
||||||
import static java.util.concurrent.TimeUnit.MINUTES;
|
import static java.util.concurrent.TimeUnit.MINUTES;
|
||||||
import static java.util.concurrent.TimeUnit.SECONDS;
|
import static java.util.concurrent.TimeUnit.SECONDS;
|
||||||
|
@ -81,13 +88,28 @@ class GrpcOffersService extends OffersImplBase {
|
||||||
this.exceptionHandler = exceptionHandler;
|
this.exceptionHandler = exceptionHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getOfferCategory(GetOfferCategoryRequest req,
|
||||||
|
StreamObserver<GetOfferCategoryReply> responseObserver) {
|
||||||
|
try {
|
||||||
|
OfferCategory category = getAvailableOfferCategory(req.getId());
|
||||||
|
var reply = newBuilder()
|
||||||
|
.setOfferCategory(category)
|
||||||
|
.build();
|
||||||
|
responseObserver.onNext(reply);
|
||||||
|
responseObserver.onCompleted();
|
||||||
|
} catch (Throwable cause) {
|
||||||
|
exceptionHandler.handleException(log, cause, responseObserver);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getBsqSwapOffer(GetOfferRequest req,
|
public void getBsqSwapOffer(GetOfferRequest req,
|
||||||
StreamObserver<GetBsqSwapOfferReply> responseObserver) {
|
StreamObserver<GetBsqSwapOfferReply> responseObserver) {
|
||||||
try {
|
try {
|
||||||
Offer offer = coreApi.getOffer(req.getId());
|
Offer offer = coreApi.getOffer(req.getId());
|
||||||
var reply = GetBsqSwapOfferReply.newBuilder()
|
var reply = GetBsqSwapOfferReply.newBuilder()
|
||||||
.setBsqSwapOffer(toBsqSwapOfferInfo(offer).toProtoMessage())
|
.setBsqSwapOffer(toOfferInfo(offer).toProtoMessage())
|
||||||
.build();
|
.build();
|
||||||
responseObserver.onNext(reply);
|
responseObserver.onNext(reply);
|
||||||
responseObserver.onCompleted();
|
responseObserver.onCompleted();
|
||||||
|
@ -117,7 +139,7 @@ class GrpcOffersService extends OffersImplBase {
|
||||||
try {
|
try {
|
||||||
Offer offer = coreApi.getMyBsqSwapOffer(req.getId());
|
Offer offer = coreApi.getMyBsqSwapOffer(req.getId());
|
||||||
var reply = GetMyBsqSwapOfferReply.newBuilder()
|
var reply = GetMyBsqSwapOfferReply.newBuilder()
|
||||||
.setBsqSwapOffer(toBsqSwapOfferInfo(offer /* TODO support triggerPrice */).toProtoMessage())
|
.setBsqSwapOffer(toOfferInfo(offer /* TODO support triggerPrice */).toProtoMessage())
|
||||||
.build();
|
.build();
|
||||||
responseObserver.onNext(reply);
|
responseObserver.onNext(reply);
|
||||||
responseObserver.onCompleted();
|
responseObserver.onCompleted();
|
||||||
|
@ -132,7 +154,7 @@ class GrpcOffersService extends OffersImplBase {
|
||||||
try {
|
try {
|
||||||
OpenOffer openOffer = coreApi.getMyOffer(req.getId());
|
OpenOffer openOffer = coreApi.getMyOffer(req.getId());
|
||||||
var reply = GetMyOfferReply.newBuilder()
|
var reply = GetMyOfferReply.newBuilder()
|
||||||
.setOffer(toOfferInfo(openOffer).toProtoMessage())
|
.setOffer(OfferInfo.toMyOfferInfo(openOffer).toProtoMessage())
|
||||||
.build();
|
.build();
|
||||||
responseObserver.onNext(reply);
|
responseObserver.onNext(reply);
|
||||||
responseObserver.onCompleted();
|
responseObserver.onCompleted();
|
||||||
|
@ -142,15 +164,15 @@ class GrpcOffersService extends OffersImplBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getBsqSwapOffers(GetOffersRequest req,
|
public void getBsqSwapOffers(GetBsqSwapOffersRequest req,
|
||||||
StreamObserver<GetBsqSwapOffersReply> responseObserver) {
|
StreamObserver<GetBsqSwapOffersReply> responseObserver) {
|
||||||
try {
|
try {
|
||||||
List<BsqSwapOfferInfo> result = coreApi.getBsqSwapOffers(req.getDirection())
|
List<OfferInfo> result = coreApi.getBsqSwapOffers(req.getDirection())
|
||||||
.stream().map(BsqSwapOfferInfo::toBsqSwapOfferInfo)
|
.stream().map(OfferInfo::toOfferInfo)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
var reply = GetBsqSwapOffersReply.newBuilder()
|
var reply = GetBsqSwapOffersReply.newBuilder()
|
||||||
.addAllBsqSwapOffers(result.stream()
|
.addAllBsqSwapOffers(result.stream()
|
||||||
.map(BsqSwapOfferInfo::toProtoMessage)
|
.map(OfferInfo::toProtoMessage)
|
||||||
.collect(Collectors.toList()))
|
.collect(Collectors.toList()))
|
||||||
.build();
|
.build();
|
||||||
responseObserver.onNext(reply);
|
responseObserver.onNext(reply);
|
||||||
|
@ -180,15 +202,15 @@ class GrpcOffersService extends OffersImplBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getMyBsqSwapOffers(GetMyOffersRequest req,
|
public void getMyBsqSwapOffers(GetBsqSwapOffersRequest req,
|
||||||
StreamObserver<GetMyBsqSwapOffersReply> responseObserver) {
|
StreamObserver<GetMyBsqSwapOffersReply> responseObserver) {
|
||||||
try {
|
try {
|
||||||
List<BsqSwapOfferInfo> result = coreApi.getMyBsqSwapOffers(req.getDirection())
|
List<OfferInfo> result = coreApi.getMyBsqSwapOffers(req.getDirection())
|
||||||
.stream().map(BsqSwapOfferInfo::toBsqSwapOfferInfo)
|
.stream().map(OfferInfo::toOfferInfo)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
var reply = GetMyBsqSwapOffersReply.newBuilder()
|
var reply = GetMyBsqSwapOffersReply.newBuilder()
|
||||||
.addAllBsqSwapOffers(result.stream()
|
.addAllBsqSwapOffers(result.stream()
|
||||||
.map(BsqSwapOfferInfo::toProtoMessage)
|
.map(OfferInfo::toProtoMessage)
|
||||||
.collect(Collectors.toList()))
|
.collect(Collectors.toList()))
|
||||||
.build();
|
.build();
|
||||||
responseObserver.onNext(reply);
|
responseObserver.onNext(reply);
|
||||||
|
@ -204,7 +226,7 @@ class GrpcOffersService extends OffersImplBase {
|
||||||
try {
|
try {
|
||||||
List<OfferInfo> result = coreApi.getMyOffers(req.getDirection(), req.getCurrencyCode())
|
List<OfferInfo> result = coreApi.getMyOffers(req.getDirection(), req.getCurrencyCode())
|
||||||
.stream()
|
.stream()
|
||||||
.map(OfferInfo::toOfferInfo)
|
.map(OfferInfo::toMyOfferInfo)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
var reply = GetMyOffersReply.newBuilder()
|
var reply = GetMyOffersReply.newBuilder()
|
||||||
.addAllOffers(result.stream()
|
.addAllOffers(result.stream()
|
||||||
|
@ -222,17 +244,15 @@ class GrpcOffersService extends OffersImplBase {
|
||||||
public void createBsqSwapOffer(CreateBsqSwapOfferRequest req,
|
public void createBsqSwapOffer(CreateBsqSwapOfferRequest req,
|
||||||
StreamObserver<CreateBsqSwapOfferReply> responseObserver) {
|
StreamObserver<CreateBsqSwapOfferReply> responseObserver) {
|
||||||
try {
|
try {
|
||||||
//todo PaymentAccount for bsq swap not needed as its just a dummy account
|
|
||||||
coreApi.createAndPlaceBsqSwapOffer(
|
coreApi.createAndPlaceBsqSwapOffer(
|
||||||
req.getDirection(),
|
req.getDirection(),
|
||||||
req.getAmount(),
|
req.getAmount(),
|
||||||
req.getMinAmount(),
|
req.getMinAmount(),
|
||||||
req.getPrice(),
|
req.getPrice(),
|
||||||
/* req.getPaymentAccountId(),*/
|
|
||||||
offer -> {
|
offer -> {
|
||||||
BsqSwapOfferInfo bsqSwapOfferInfo = toBsqSwapOfferInfo(offer);
|
OfferInfo offerInfo = toMyPendingOfferInfo(offer);
|
||||||
CreateBsqSwapOfferReply reply = CreateBsqSwapOfferReply.newBuilder()
|
CreateBsqSwapOfferReply reply = CreateBsqSwapOfferReply.newBuilder()
|
||||||
.setBsqSwapOffer(bsqSwapOfferInfo.toProtoMessage())
|
.setBsqSwapOffer(offerInfo.toProtoMessage())
|
||||||
.build();
|
.build();
|
||||||
responseObserver.onNext(reply);
|
responseObserver.onNext(reply);
|
||||||
responseObserver.onCompleted();
|
responseObserver.onCompleted();
|
||||||
|
@ -261,7 +281,7 @@ class GrpcOffersService extends OffersImplBase {
|
||||||
offer -> {
|
offer -> {
|
||||||
// This result handling consumer's accept operation will return
|
// This result handling consumer's accept operation will return
|
||||||
// the new offer to the gRPC client after async placement is done.
|
// the new offer to the gRPC client after async placement is done.
|
||||||
OfferInfo offerInfo = toPendingOfferInfo(offer);
|
OfferInfo offerInfo = toMyPendingOfferInfo(offer);
|
||||||
CreateOfferReply reply = CreateOfferReply.newBuilder()
|
CreateOfferReply reply = CreateOfferReply.newBuilder()
|
||||||
.setOffer(offerInfo.toProtoMessage())
|
.setOffer(offerInfo.toProtoMessage())
|
||||||
.build();
|
.build();
|
||||||
|
@ -325,4 +345,15 @@ class GrpcOffersService extends OffersImplBase {
|
||||||
}}
|
}}
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private OfferCategory getAvailableOfferCategory(String offerId) {
|
||||||
|
if (coreApi.isAvailableAltcoinOffer(offerId))
|
||||||
|
return ALTCOIN;
|
||||||
|
else if (coreApi.isAvailableFiatOffer(offerId))
|
||||||
|
return FIAT;
|
||||||
|
else if (coreApi.isAvailableBsqSwapOffer(offerId))
|
||||||
|
return BSQ_SWAP;
|
||||||
|
else
|
||||||
|
return UNKNOWN;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,9 +78,10 @@ class GrpcTradesService extends TradesImplBase {
|
||||||
StreamObserver<GetBsqSwapTradeReply> responseObserver) {
|
StreamObserver<GetBsqSwapTradeReply> responseObserver) {
|
||||||
try {
|
try {
|
||||||
var bsqSwapTrade = coreApi.getBsqSwapTrade(req.getTradeId());
|
var bsqSwapTrade = coreApi.getBsqSwapTrade(req.getTradeId());
|
||||||
// String role = coreApi.getBsqSwapTradeRole(req.getTradeId());
|
boolean wasMyOffer = coreApi.isMyOffer(bsqSwapTrade.getOffer().getId());
|
||||||
|
String role = coreApi.getBsqSwapTradeRole(req.getTradeId());
|
||||||
var reply = GetBsqSwapTradeReply.newBuilder()
|
var reply = GetBsqSwapTradeReply.newBuilder()
|
||||||
.setBsqSwapTrade(toBsqSwapTradeInfo(bsqSwapTrade).toProtoMessage())
|
.setBsqSwapTrade(toBsqSwapTradeInfo(bsqSwapTrade, role, wasMyOffer).toProtoMessage())
|
||||||
.build();
|
.build();
|
||||||
responseObserver.onNext(reply);
|
responseObserver.onNext(reply);
|
||||||
responseObserver.onCompleted();
|
responseObserver.onCompleted();
|
||||||
|
@ -97,7 +98,7 @@ class GrpcTradesService extends TradesImplBase {
|
||||||
public void takeBsqSwapOffer(TakeBsqSwapOfferRequest req,
|
public void takeBsqSwapOffer(TakeBsqSwapOfferRequest req,
|
||||||
StreamObserver<TakeBsqSwapOfferReply> responseObserver) {
|
StreamObserver<TakeBsqSwapOfferReply> responseObserver) {
|
||||||
GrpcErrorMessageHandler errorMessageHandler =
|
GrpcErrorMessageHandler errorMessageHandler =
|
||||||
new GrpcErrorMessageHandler(getTakeOfferMethod().getFullMethodName(),
|
new GrpcErrorMessageHandler(getTakeBsqSwapOfferMethod().getFullMethodName(),
|
||||||
responseObserver,
|
responseObserver,
|
||||||
exceptionHandler,
|
exceptionHandler,
|
||||||
log);
|
log);
|
||||||
|
@ -105,7 +106,10 @@ class GrpcTradesService extends TradesImplBase {
|
||||||
req.getPaymentAccountId(),
|
req.getPaymentAccountId(),
|
||||||
req.getTakerFeeCurrencyCode(),
|
req.getTakerFeeCurrencyCode(),
|
||||||
bsqSwapTrade -> {
|
bsqSwapTrade -> {
|
||||||
BsqSwapTradeInfo bsqSwapTradeInfo = toBsqSwapTradeInfo(bsqSwapTrade);
|
String role = coreApi.getBsqSwapTradeRole(bsqSwapTrade);
|
||||||
|
BsqSwapTradeInfo bsqSwapTradeInfo = toBsqSwapTradeInfo(bsqSwapTrade,
|
||||||
|
role,
|
||||||
|
false);
|
||||||
var reply = TakeBsqSwapOfferReply.newBuilder()
|
var reply = TakeBsqSwapOfferReply.newBuilder()
|
||||||
.setBsqSwapTrade(bsqSwapTradeInfo.toProtoMessage())
|
.setBsqSwapTrade(bsqSwapTradeInfo.toProtoMessage())
|
||||||
.build();
|
.build();
|
||||||
|
@ -123,10 +127,10 @@ class GrpcTradesService extends TradesImplBase {
|
||||||
StreamObserver<GetTradeReply> responseObserver) {
|
StreamObserver<GetTradeReply> responseObserver) {
|
||||||
try {
|
try {
|
||||||
Trade trade = coreApi.getTrade(req.getTradeId());
|
Trade trade = coreApi.getTrade(req.getTradeId());
|
||||||
boolean isMyOffer = coreApi.isMyOffer(trade.getOffer().getId());
|
boolean wasMyOffer = coreApi.isMyOffer(trade.getOffer().getId());
|
||||||
String role = coreApi.getTradeRole(req.getTradeId());
|
String role = coreApi.getTradeRole(req.getTradeId());
|
||||||
var reply = GetTradeReply.newBuilder()
|
var reply = GetTradeReply.newBuilder()
|
||||||
.setTrade(toTradeInfo(trade, role, isMyOffer).toProtoMessage())
|
.setTrade(toTradeInfo(trade, role, wasMyOffer).toProtoMessage())
|
||||||
.build();
|
.build();
|
||||||
responseObserver.onNext(reply);
|
responseObserver.onNext(reply);
|
||||||
responseObserver.onCompleted();
|
responseObserver.onCompleted();
|
||||||
|
@ -227,7 +231,9 @@ class GrpcTradesService extends TradesImplBase {
|
||||||
.or(() -> Optional.of(CallRateMeteringInterceptor.valueOf(
|
.or(() -> Optional.of(CallRateMeteringInterceptor.valueOf(
|
||||||
new HashMap<>() {{
|
new HashMap<>() {{
|
||||||
put(getGetTradeMethod().getFullMethodName(), new GrpcCallRateMeter(1, SECONDS));
|
put(getGetTradeMethod().getFullMethodName(), new GrpcCallRateMeter(1, SECONDS));
|
||||||
|
put(getGetBsqSwapTradeMethod().getFullMethodName(), new GrpcCallRateMeter(1, SECONDS));
|
||||||
put(getTakeOfferMethod().getFullMethodName(), new GrpcCallRateMeter(1, MINUTES));
|
put(getTakeOfferMethod().getFullMethodName(), new GrpcCallRateMeter(1, MINUTES));
|
||||||
|
put(getTakeBsqSwapOfferMethod().getFullMethodName(), new GrpcCallRateMeter(1, MINUTES));
|
||||||
put(getConfirmPaymentStartedMethod().getFullMethodName(), new GrpcCallRateMeter(1, MINUTES));
|
put(getConfirmPaymentStartedMethod().getFullMethodName(), new GrpcCallRateMeter(1, MINUTES));
|
||||||
put(getConfirmPaymentReceivedMethod().getFullMethodName(), new GrpcCallRateMeter(1, MINUTES));
|
put(getConfirmPaymentReceivedMethod().getFullMethodName(), new GrpcCallRateMeter(1, MINUTES));
|
||||||
put(getKeepFundsMethod().getFullMethodName(), new GrpcCallRateMeter(1, MINUTES));
|
put(getKeepFundsMethod().getFullMethodName(), new GrpcCallRateMeter(1, MINUTES));
|
||||||
|
|
Loading…
Add table
Reference in a new issue