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

Method sign

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

Source from the content-addressed store, hash-verified

12308 }
12309
12310 public Object sign(Object path, Object... optionalArgs)
12311 {
12312 Object api = Helpers.getArg(optionalArgs, 0, new java.util.ArrayList<Object>(java.util.Arrays.asList()));
12313 Object method = Helpers.getArg(optionalArgs, 1, "GET");
12314 Object parameters = Helpers.getArg(optionalArgs, 2, new java.util.HashMap<String, Object>() {{}});
12315 Object headers = Helpers.getArg(optionalArgs, 3, null);
12316 Object body = Helpers.getArg(optionalArgs, 4, null);
12317 Object signed = Helpers.isEqual(Helpers.GetValue(api, 0), "private");
12318 Object endpoint = Helpers.GetValue(api, 1);
12319 Object pathPart = "/api";
12320 Object request = Helpers.add("/", this.implodeParams(path, parameters));
12321 Object payload = Helpers.add(pathPart, request);
12322 Object url = Helpers.add(this.implodeHostname(Helpers.GetValue(Helpers.GetValue(this.urls, "api"), endpoint)), payload);
12323 Object query = this.omit(parameters, this.extractParams(path));
12324 if (Helpers.isTrue(!Helpers.isTrue(signed) && Helpers.isTrue((Helpers.isEqual(method, "GET")))))
12325 {
12326 Object keys = Helpers.objectKeys(query);
12327 Object keysLength = Helpers.getArrayLength(keys);
12328 if (Helpers.isTrue(Helpers.isGreaterThan(keysLength, 0)))
12329 {
12330 url = Helpers.add(Helpers.add(url, "?"), this.urlencode(query));
12331 }
12332 }
12333 if (Helpers.isTrue(signed))
12334 {
12335 this.checkRequiredCredentials();
12336 Object timestamp = String.valueOf(this.nonce());
12337 Object auth = Helpers.add(Helpers.add(timestamp, method), payload);
12338 if (Helpers.isTrue(Helpers.isEqual(method, "POST")))
12339 {
12340 body = this.json(parameters);
12341 auth = Helpers.add(auth, body);
12342 } else
12343 {
12344 if (Helpers.isTrue(Helpers.getArrayLength(Helpers.objectKeys(parameters))))
12345 {
12346 Object sortedParams = this.keysort(parameters);
12347 Object queryInner = Helpers.add("?", this.urlencode(sortedParams, true));
12348 // check #21169 pr
12349 if (Helpers.isTrue(Helpers.isGreaterThan(Helpers.getIndexOf(queryInner, "%24"), Helpers.opNeg(1))))
12350 {
12351 queryInner = Helpers.replace((String)queryInner, (String)"%24", (String)"$");
12352 }
12353 url = Helpers.add(url, queryInner);
12354 // bitget signs the raw (non-percent-encoded) query string, so the
12355 // signature must use the decoded values (e.g. non-ascii market ids)
12356 auth = Helpers.add(auth, Helpers.add("?", this.rawencode(sortedParams)));
12357 }
12358 }
12359 Object signature = this.hmac(this.encode(auth), this.encode(this.secret), sha256(), "base64");
12360 Object broker = this.safeString(this.options, "broker");
12361 final Object finalTimestamp = timestamp;
12362 headers = new java.util.HashMap<String, Object>() {{
12363 put( "ACCESS-KEY", BitgetCore.this.apiKey );
12364 put( "ACCESS-SIGN", signature );
12365 put( "ACCESS-TIMESTAMP", finalTimestamp );
12366 put( "ACCESS-PASSPHRASE", BitgetCore.this.password );
12367 put( "X-CHANNEL-API-CODE", broker );

Callers

nothing calls this directly

Calls 15

getArgMethod · 0.95
isEqualMethod · 0.95
GetValueMethod · 0.95
addMethod · 0.95
isTrueMethod · 0.95
objectKeysMethod · 0.95
getArrayLengthMethod · 0.95
isGreaterThanMethod · 0.95
nonceMethod · 0.95
getIndexOfMethod · 0.95
opNegMethod · 0.95
replaceMethod · 0.95

Tested by

no test coverage detected