99 lines
3.9 KiB
Java

package bisq.rpccalls;
import bisq.proto.grpc.EditOfferRequest;
import bisq.proto.grpc.OffersGrpc;
import io.grpc.ManagedChannelBuilder;
import static bisq.proto.grpc.EditOfferRequest.EditType.*;
import static bisq.proto.grpc.EditOfferRequest.newBuilder;
import static java.lang.System.out;
public class EditOffer extends BaseJavaExample {
public static void main(String[] args) {
try {
var channel = ManagedChannelBuilder.forAddress("localhost", 9998).usePlaintext().build();
addChannelShutdownHook(channel);
var credentials = buildCallCredentials(getApiPassword());
var stub = OffersGrpc.newBlockingStub(channel).withCallCredentials(credentials);
var disableOfferRequest = createDisableOfferRequest();
stub.editOffer(disableOfferRequest);
out.println("Offer is disabled (removed from peers' offer book).");
waitForOfferToBeRepublished(2_500);
var editFixedPriceRequest = createEditFixedPriceRequest();
stub.editOffer(editFixedPriceRequest);
out.println("Offer has been re-published with new fixed-price.");
waitForOfferToBeRepublished(2_500);
var editFixedPriceAndEnableRequest = createEditFixedPriceAndEnableRequest();
stub.editOffer(editFixedPriceAndEnableRequest);
out.println("Offer has been re-published with new fixed-price, and enabled.");
waitForOfferToBeRepublished(2_500);
var editPriceMarginRequest = createEditPriceMarginRequest();
stub.editOffer(editPriceMarginRequest);
out.println("Offer has been re-published with new price margin.");
waitForOfferToBeRepublished(2_500);
var editTriggerPriceRequest = createEditTriggerPriceRequest();
stub.editOffer(editTriggerPriceRequest);
out.println("Offer has been re-published with new trigger price.");
} catch (Throwable t) {
handleError(t);
}
}
private static EditOfferRequest createDisableOfferRequest() {
return newBuilder()
.setId("83e8b2e2-51b6-4f39-a748-3ebd29c22aea")
.setEditType(ACTIVATION_STATE_ONLY)
.setEnable(0) // -1 = ignore this parameter, 0 = disable offer, 1 = enable offer
.build();
}
private static EditOfferRequest createEditFixedPriceRequest() {
return newBuilder()
.setId("83e8b2e2-51b6-4f39-a748-3ebd29c22aea")
.setEditType(FIXED_PRICE_ONLY)
.setPrice("30000.99")
.build();
}
private static EditOfferRequest createEditFixedPriceAndEnableRequest() {
return newBuilder()
.setId("83e8b2e2-51b6-4f39-a748-3ebd29c22aea")
.setEditType(FIXED_PRICE_AND_ACTIVATION_STATE)
.setPrice("30000.99")
.setEnable(1)
.build();
}
private static EditOfferRequest createEditPriceMarginRequest() {
return newBuilder()
.setId("83e8b2e2-51b6-4f39-a748-3ebd29c22aea")
.setEditType(MKT_PRICE_MARGIN_ONLY)
.setUseMarketBasedPrice(true)
.setMarketPriceMarginPct(2.00) // 2.00%
.build();
}
private static EditOfferRequest createEditTriggerPriceRequest() {
return newBuilder()
.setId("83e8b2e2-51b6-4f39-a748-3ebd29c22aea")
.setEditType(TRIGGER_PRICE_ONLY)
.setTriggerPrice("29000.00") // Trigger price is disabled when set to "0".
.build();
}
private static void waitForOfferToBeRepublished(long ms) {
try {
// Wait for edited offer to be removed from offer-book, edited, and re-published.
Thread.sleep(ms);
} catch (InterruptedException ex) {
// ignored
}
}
}