
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