MCPcopy Index your code
hub / github.com/ccxt/ccxt / sign

Method sign

java/lib/src/main/java/io/github/ccxt/exchanges/HtxCore.java:8384–8583  ·  view source on GitHub ↗
(Object path, Object... optionalArgs)

Source from the content-addressed store, hash-verified

8382 }
8383
8384 public Object sign(Object path, Object... optionalArgs)
8385 {
8386 Object api = Helpers.getArg(optionalArgs, 0, "public");
8387 Object method = Helpers.getArg(optionalArgs, 1, "GET");
8388 Object parameters = Helpers.getArg(optionalArgs, 2, new java.util.HashMap<String, Object>() {{}});
8389 Object headers = Helpers.getArg(optionalArgs, 3, null);
8390 Object body = Helpers.getArg(optionalArgs, 4, null);
8391 Object url = "/";
8392 Object isArrayParams = Helpers.isArray(parameters);
8393 Object query = null;
8394 if (Helpers.isTrue(isArrayParams))
8395 {
8396 query = new java.util.HashMap<String, Object>() {{}};
8397 } else
8398 {
8399 query = this.omit(parameters, this.extractParams(path));
8400 }
8401 if (Helpers.isTrue((api instanceof String)))
8402 {
8403 // signing implementation for the old endpoints
8404 if (Helpers.isTrue(Helpers.isTrue((Helpers.isEqual(api, "public"))) || Helpers.isTrue((Helpers.isEqual(api, "private")))))
8405 {
8406 url = Helpers.add(url, this.version);
8407 } else if (Helpers.isTrue(Helpers.isTrue((Helpers.isEqual(api, "v2Public"))) || Helpers.isTrue((Helpers.isEqual(api, "v2Private")))))
8408 {
8409 url = Helpers.add(url, "v2");
8410 }
8411 url = Helpers.add(url, Helpers.add("/", this.implodeParams(path, parameters)));
8412 if (Helpers.isTrue(Helpers.isTrue(Helpers.isEqual(api, "private")) || Helpers.isTrue(Helpers.isEqual(api, "v2Private"))))
8413 {
8414 this.checkRequiredCredentials();
8415 Object timestamp = this.ymdhms(this.nonce(), "T");
8416 Object request = new java.util.HashMap<String, Object>() {{
8417 put( "SignatureMethod", "HmacSHA256" );
8418 put( "SignatureVersion", "2" );
8419 put( "AccessKeyId", HtxCore.this.apiKey );
8420 put( "Timestamp", timestamp );
8421 }};
8422 if (Helpers.isTrue(!Helpers.isEqual(method, "POST")))
8423 {
8424 request = this.extend(request, query);
8425 }
8426 Object sortedRequest = this.keysort(request);
8427 Object auth = this.urlencode(sortedRequest, true); // true is a go only requirment
8428 // unfortunately, PHP demands double quotes for the escaped newline symbol
8429 Object content = new java.util.ArrayList<Object>(java.util.Arrays.asList(method, this.hostname, url, auth));
8430 Object payload = String.join((String)"\n", (java.util.List<String>)content); // eslint-disable-line quotes
8431 Object signature = this.hmac(this.encode(payload), this.encode(this.secret), sha256(), "base64");
8432 auth = Helpers.add(auth, Helpers.add("&", this.urlencode(new java.util.HashMap<String, Object>() {{
8433 put( "Signature", signature );
8434}})));
8435 url = Helpers.add(url, Helpers.add("?", auth));
8436 if (Helpers.isTrue(Helpers.isEqual(method, "POST")))
8437 {
8438 Object bodyRequest = null;
8439 if (Helpers.isTrue(isArrayParams))
8440 {
8441 bodyRequest = parameters;

Callers

nothing calls this directly

Calls 15

getArgMethod · 0.95
isArrayMethod · 0.95
isTrueMethod · 0.95
isEqualMethod · 0.95
addMethod · 0.95
nonceMethod · 0.95
getArrayLengthMethod · 0.95
objectKeysMethod · 0.95
GetValueMethod · 0.95
getIndexOfMethod · 0.95
opNegMethod · 0.95
addElementToObjectMethod · 0.95

Tested by

no test coverage detected