diff --git a/src/main/java/com/stripe/net/StripeResponseInterface.java b/src/main/java/com/stripe/net/AbstractStripeResponse.java similarity index 87% rename from src/main/java/com/stripe/net/StripeResponseInterface.java rename to src/main/java/com/stripe/net/AbstractStripeResponse.java index a0e44bbdd04..7f1e4072842 100644 --- a/src/main/java/com/stripe/net/StripeResponseInterface.java +++ b/src/main/java/com/stripe/net/AbstractStripeResponse.java @@ -24,6 +24,19 @@ abstract class AbstractStripeResponse { /** The body of the response. */ T body; + public final int code() { + return this.code; + } + + public final HttpHeaders headers() { + return this.headers; + } + + public final T body() { + return this.body; + } + + /** Number of times the request was retried. Used for internal tests only. */ @NonFinal @Getter(AccessLevel.PACKAGE) @@ -61,7 +74,7 @@ public String requestId() { return this.headers.firstValue("Request-Id").orElse(null); } - public AbstractStripeResponse(int code, HttpHeaders headers, T body) { + protected AbstractStripeResponse(int code, HttpHeaders headers, T body) { requireNonNull(headers); requireNonNull(body); diff --git a/src/main/java/com/stripe/net/HttpClient.java b/src/main/java/com/stripe/net/HttpClient.java index 84618660afb..cc1a443ed88 100644 --- a/src/main/java/com/stripe/net/HttpClient.java +++ b/src/main/java/com/stripe/net/HttpClient.java @@ -54,7 +54,7 @@ private interface RequestSendFunction { R apply(StripeRequest request) throws StripeException; } - private T sendWithTelemetry( + private > T sendWithTelemetry( StripeRequest request, RequestSendFunction send) throws StripeException { Optional telemetryHeaderValue = requestTelemetry.getHeaderValue(request.headers()); if (telemetryHeaderValue.isPresent()) { @@ -81,7 +81,7 @@ private T sendWithTelemetry( * @throws StripeException If the request fails for any reason */ public StripeResponse requestWithTelemetry(StripeRequest request) throws StripeException { - return sendWithTelemetry(request, (r) -> this.request(r)); + return sendWithTelemetry(request, this::request); } /** @@ -94,10 +94,10 @@ public StripeResponse requestWithTelemetry(StripeRequest request) throws StripeE */ public StripeResponseStream requestStreamWithTelemetry(StripeRequest request) throws StripeException { - return sendWithTelemetry(request, (r) -> this.requestStream(r)); + return sendWithTelemetry(request, this::requestStream); } - public T sendWithRetries( + public > T sendWithRetries( StripeRequest request, RequestSendFunction send) throws StripeException { ApiConnectionException requestException = null; T response = null; @@ -218,7 +218,7 @@ private static String formatAppInfo(Map info) { return str; } - private boolean shouldRetry( + private > boolean shouldRetry( int numRetries, StripeException exception, StripeRequest request, T response) { // Do not retry if we are out of retries. if (numRetries >= request.options().getMaxNetworkRetries()) { diff --git a/src/main/java/com/stripe/net/LiveStripeResponseGetter.java b/src/main/java/com/stripe/net/LiveStripeResponseGetter.java index 6f098e83a25..25b2876fa5d 100644 --- a/src/main/java/com/stripe/net/LiveStripeResponseGetter.java +++ b/src/main/java/com/stripe/net/LiveStripeResponseGetter.java @@ -106,7 +106,7 @@ public InputStream requestStream( handleApiError(response); } - return responseStream.bodyStream(); + return responseStream.body(); } @Override diff --git a/src/main/java/com/stripe/net/RequestTelemetry.java b/src/main/java/com/stripe/net/RequestTelemetry.java index 679adc9c3cb..34a128c77d7 100644 --- a/src/main/java/com/stripe/net/RequestTelemetry.java +++ b/src/main/java/com/stripe/net/RequestTelemetry.java @@ -52,7 +52,7 @@ public Optional getHeaderValue(HttpHeaders headers) { * @param response the Stripe response * @param duration the request duration */ - public void maybeEnqueueMetrics(StripeResponseInterface response, Duration duration) { + public void maybeEnqueueMetrics(AbstractStripeResponse response, Duration duration) { if (!Stripe.enableTelemetry) { return; }