MCPcopy Create free account
hub / github.com/ccxt/ccxt / sign

Method sign

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

Source from the content-addressed store, hash-verified

4121 }
4122
4123 public Object sign(Object path, Object... optionalArgs)
4124 {
4125 Object api = Helpers.getArg(optionalArgs, 0, "public");
4126 Object method = Helpers.getArg(optionalArgs, 1, "GET");
4127 Object parameters = Helpers.getArg(optionalArgs, 2, new java.util.HashMap<String, Object>() {{}});
4128 Object headers = Helpers.getArg(optionalArgs, 3, null);
4129 Object body = Helpers.getArg(optionalArgs, 4, null);
4130 Object url = Helpers.add(Helpers.add(Helpers.add(Helpers.add(Helpers.add("/", this.version), "/"), api), "/"), path);
4131 if (Helpers.isTrue(Helpers.isEqual(api, "public")))
4132 {
4133 if (Helpers.isTrue(Helpers.getArrayLength(Helpers.objectKeys(parameters))))
4134 {
4135 // rawencode is used to address https://github.com/ccxt/ccxt/issues/12872
4136 url = Helpers.add(url, Helpers.add("?", this.urlencodeNested(parameters)));
4137 }
4138 } else if (Helpers.isTrue(Helpers.isEqual(api, "private")))
4139 {
4140 Object price = this.safeString(parameters, "price");
4141 Object isTriggerPercent = false;
4142 if (Helpers.isTrue(!Helpers.isEqual(price, null)))
4143 {
4144 isTriggerPercent = ((Helpers.isTrue((((String)price).endsWith(((String)"%")))))) ? true : false;
4145 }
4146 Object isCancelOrderBatch = (Helpers.isEqual(path, "CancelOrderBatch"));
4147 Object isBatchOrder = (Helpers.isEqual(path, "AddOrderBatch"));
4148 this.checkRequiredCredentials();
4149 Object nonce = String.valueOf(this.nonce());
4150 if (Helpers.isTrue(Helpers.isTrue(Helpers.isTrue(isCancelOrderBatch) || Helpers.isTrue(isTriggerPercent)) || Helpers.isTrue(isBatchOrder)))
4151 {
4152 final Object finalNonce = nonce;
4153 body = this.json(this.extend(new java.util.HashMap<String, Object>() {{
4154 put( "nonce", finalNonce );
4155 }}, parameters));
4156 } else
4157 {
4158 // rawencode is used to address https://github.com/ccxt/ccxt/issues/12872
4159 final Object finalNonce_2 = nonce;
4160 body = this.urlencodeNested(this.extend(new java.util.HashMap<String, Object>() {{
4161 put( "nonce", finalNonce_2 );
4162 }}, parameters));
4163 }
4164 Object auth = this.encode(Helpers.add(nonce, body));
4165 Object hash = this.hash(auth, sha256(), "binary");
4166 Object binary = this.encode(url);
4167 Object binhash = this.binaryConcat(binary, hash);
4168 Object secret = this.base64ToBinary(this.secret);
4169 Object signature = this.hmac(binhash, secret, sha512(), "base64");
4170 headers = new java.util.HashMap<String, Object>() {{
4171 put( "API-Key", KrakenCore.this.apiKey );
4172 put( "API-Sign", signature );
4173 }};
4174 if (Helpers.isTrue(Helpers.isTrue(Helpers.isTrue(isCancelOrderBatch) || Helpers.isTrue(isTriggerPercent)) || Helpers.isTrue(isBatchOrder)))
4175 {
4176 Helpers.addElementToObject(headers, "Content-Type", "application/json");
4177 } else
4178 {
4179 Helpers.addElementToObject(headers, "Content-Type", "application/x-www-form-urlencoded");
4180 }

Callers

nothing calls this directly

Calls 15

getArgMethod · 0.95
addMethod · 0.95
isTrueMethod · 0.95
isEqualMethod · 0.95
getArrayLengthMethod · 0.95
objectKeysMethod · 0.95
nonceMethod · 0.95
addElementToObjectMethod · 0.95
GetValueMethod · 0.95
urlencodeNestedMethod · 0.45
safeStringMethod · 0.45

Tested by

no test coverage detected