(Object path, Object... optionalArgs)
| 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 ); |
nothing calls this directly
no test coverage detected