All Downloads are FREE. Search and download functionalities are using the official Maven repository.

estonlabs.cxtl.exchanges.mexc.spot.v3.domain.NewOrderRequest Maven / Gradle / Ivy

package estonlabs.cxtl.exchanges.mexc.spot.v3.domain;

import com.fasterxml.jackson.annotation.JsonInclude;
import estonlabs.cxtl.common.auth.Credentials;
import estonlabs.cxtl.common.security.HmacUtils;
import estonlabs.cxtl.exchanges.mexc.spot.v3.domain.enums.OrderSide;
import estonlabs.cxtl.exchanges.mexc.spot.v3.domain.enums.OrderType;
import lombok.Data;
import lombok.SneakyThrows;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.StringJoiner;

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@Accessors(chain = true)
public class NewOrderRequest implements Signed {
    private String symbol;
    private OrderSide side;
    private OrderType type;
    private BigDecimal quantity;
    private String quoteOrderQty;
    private BigDecimal price;
    private String newClientOrderId;
    private Long recvWindow;
    private Long timestamp;


    @SneakyThrows
    @Override
    public String queryString(Credentials credentials) {
        StringJoiner joiner = new StringJoiner("&");

        if (symbol != null) {
            joiner.add("symbol=" + URLEncoder.encode(symbol, StandardCharsets.UTF_8));
        }
        if (side != null) {
            joiner.add("side=" + URLEncoder.encode(side.name(), StandardCharsets.UTF_8));
        }
        if (type != null) {
            joiner.add("type=" + URLEncoder.encode(type.name(), StandardCharsets.UTF_8));
        }
        if (quantity != null) {
            joiner.add("quantity=" + quantity.toPlainString());
        }
        if (quoteOrderQty != null) {
            joiner.add("quoteOrderQty=" + URLEncoder.encode(quoteOrderQty, StandardCharsets.UTF_8));
        }
        if (price != null) {
            joiner.add("price=" + price.toPlainString());
        }
        if (newClientOrderId != null) {
            joiner.add("newClientOrderId=" + URLEncoder.encode(newClientOrderId, StandardCharsets.UTF_8));
        }
        if (recvWindow != null) {
            joiner.add("recvWindow=" + recvWindow);
        }
        if (timestamp != null) {
            joiner.add("timestamp=" + timestamp);
        }
        var content = joiner.toString();

        var signature = HmacUtils.sign(credentials, content);

        return content + "&signature=" + signature;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy