(Object path, Object... optionalArgs)
| 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 |
no test coverage detected