MCPcopy
hub / github.com/ccxt/ccxt / fetch2

Method fetch2

java/lib/src/main/java/io/github/ccxt/Exchange.java:8645–8705  ·  view source on GitHub ↗
(Object path, Object... optionalArgs)

Source from the content-addressed store, hash-verified

8643 }
8644
8645 public java.util.concurrent.CompletableFuture<Object> fetch2(Object path, Object... optionalArgs)
8646 {
8647
8648 return java.util.concurrent.CompletableFuture.supplyAsync(() -> {
8649
8650 Object api = Helpers.getArg(optionalArgs, 0, "public");
8651 Object method = Helpers.getArg(optionalArgs, 1, "GET");
8652 Object parameters = Helpers.getArg(optionalArgs, 2, new java.util.HashMap<String, Object>() {{}});
8653 Object headers = Helpers.getArg(optionalArgs, 3, null);
8654 Object body = Helpers.getArg(optionalArgs, 4, null);
8655 Object config = Helpers.getArg(optionalArgs, 5, new java.util.HashMap<String, Object>() {{}});
8656 if (Helpers.isTrue(this.enableRateLimit))
8657 {
8658 Object cost = this.calculateRateLimiterCost(api, method, path, parameters, config);
8659 (this.throttle(cost)).join();
8660 }
8661 Object retries = null;
8662 var retriesparametersVariable = this.handleOptionAndParams(parameters, path, "maxRetriesOnFailure", 0);
8663 retries = ((java.util.List<Object>) retriesparametersVariable).get(0);
8664 parameters = ((java.util.List<Object>) retriesparametersVariable).get(1);
8665 Object retryDelay = null;
8666 var retryDelayparametersVariable = this.handleOptionAndParams(parameters, path, "maxRetriesOnFailureDelay", 0);
8667 retryDelay = ((java.util.List<Object>) retryDelayparametersVariable).get(0);
8668 parameters = ((java.util.List<Object>) retryDelayparametersVariable).get(1);
8669 for (var i = 0; Helpers.isLessThan(i, Helpers.add(retries, 1)); i++)
8670 {
8671 try
8672 {
8673 this.setLastRestRequestTimestamp();
8674 Object request = this.sign(path, api, method, parameters, headers, body);
8675 this.setLastRequest(request);
8676 return (this.fetch(Helpers.GetValue(request, "url"), Helpers.GetValue(request, "method"), Helpers.GetValue(request, "headers"), Helpers.GetValue(request, "body"))).join();
8677 } catch(Exception e)
8678 {
8679 if (Helpers.isTrue(Helpers.isInstance(e, OperationFailed.class)))
8680 {
8681 if (Helpers.isTrue(Helpers.isLessThan(i, retries)))
8682 {
8683 if (Helpers.isTrue(this.verbose))
8684 {
8685 Object index = Helpers.add(i, 1);
8686 this.log(Helpers.add(Helpers.add(Helpers.add(Helpers.add(Helpers.add(Helpers.add("Request failed with the error: ", String.valueOf(e)), ", retrying "), String.valueOf(index)), " of "), String.valueOf(retries)), "..."));
8687 }
8688 if (Helpers.isTrue(Helpers.isTrue((!Helpers.isEqual(retryDelay, null))) && Helpers.isTrue((!Helpers.isEqual(retryDelay, 0)))))
8689 {
8690 (this.sleep(retryDelay)).join();
8691 }
8692 } else
8693 {
8694 throw e;
8695 }
8696 } else
8697 {
8698 throw e;
8699 }
8700 }
8701 }
8702 return null; // this line is never reached, but exists for c# value return requirement

Callers 5

callAsyncMethod · 0.95
requestMethod · 0.95
requestMethod · 0.45
requestMethod · 0.45
requestMethod · 0.45

Calls 15

getArgMethod · 0.95
isTrueMethod · 0.95
throttleMethod · 0.95
handleOptionAndParamsMethod · 0.95
isLessThanMethod · 0.95
addMethod · 0.95
signMethod · 0.95
setLastRequestMethod · 0.95
fetchMethod · 0.95
GetValueMethod · 0.95

Tested by

no test coverage detected