/** * If we get back any 2xx status code, then we know we should treat the service call as successful. */ default boolean isSuccessful() { return HttpStatusFamily.of(statusCode()) == HttpStatusFamily.SUCCESSFUL; }
/** * If we get back any 2xx status code, then we know we should treat the service call as successful. */ default boolean isSuccessful() { return HttpStatusFamily.of(statusCode()) == HttpStatusFamily.SUCCESSFUL; }
@Override public boolean shouldRetry(int retriesAttempted, ResourcesEndpointRetryParameters retryParams) { if (retriesAttempted >= MAX_RETRIES) { return false; } Integer statusCode = retryParams.getStatusCode(); if (statusCode != null && HttpStatusFamily.of(statusCode) == HttpStatusFamily.SERVER_ERROR) { return true; } return retryParams.getException() instanceof IOException; }
@Override public boolean shouldRetry(int retriesAttempted, ResourcesEndpointRetryParameters retryParams) { if (retriesAttempted >= MAX_RETRIES) { return false; } Integer statusCode = retryParams.getStatusCode(); if (statusCode != null && HttpStatusFamily.of(statusCode) == HttpStatusFamily.SERVER_ERROR) { return true; } return retryParams.getException() instanceof IOException; }
@Override public HttpExecuteResponse call() throws IOException { connection.connect(); request.contentStreamProvider().ifPresent(provider -> invokeSafely(() -> IoUtils.copy(provider.newStream(), connection.getOutputStream()))); int responseCode = connection.getResponseCode(); boolean isErrorResponse = HttpStatusFamily.of(responseCode).isOneOf(CLIENT_ERROR, SERVER_ERROR); InputStream content = !isErrorResponse ? connection.getInputStream() : connection.getErrorStream(); AbortableInputStream responseBody = content != null ? AbortableInputStream.create(content) : null; return HttpExecuteResponse.builder() .response(SdkHttpResponse.builder() .statusCode(responseCode) .statusText(connection.getResponseMessage()) // TODO: Don't ignore abort? .headers(extractHeaders(connection)) .build()) .responseBody(responseBody) .build(); }