Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
configured_endpoints: 238
openapi_spec_hash: 7f33ff43b4b498d0954b28032669a1a6
config_hash: 2ae0d8aaecf01b38cbf9f9e112822c23
configured_endpoints: 239
openapi_spec_hash: ea35154a418c5a3cabaedc30f766fcac
config_hash: 1ca082e374ef7000e2a5971e8da740e0
48 changes: 48 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,54 @@ FileCreateParams params = FileCreateParams.builder()
File file = client.files().create(params);
```

## Binary responses

The SDK defines methods that return binary responses, which are used for API responses that shouldn't necessarily be parsed, like non-JSON data.

These methods return [`HttpResponse`](increase-java-core/src/main/kotlin/com/increase/api/core/http/HttpResponse.kt):

```java
import com.increase.api.core.http.HttpResponse;
import com.increase.api.models.files.FileContentsParams;

HttpResponse response = client.files().contents("file_makxrc67oh9l6sg7w9yc");
```

To save the response content to a file, use the [`Files.copy(...)`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#copy-java.io.InputStream-java.nio.file.Path-java.nio.file.CopyOption...-) method:

```java
import com.increase.api.core.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

try (HttpResponse response = client.files().contents(params)) {
Files.copy(
response.body(),
Paths.get(path),
StandardCopyOption.REPLACE_EXISTING
);
} catch (Exception e) {
System.out.println("Something went wrong!");
throw new RuntimeException(e);
}
```

Or transfer the response content to any [`OutputStream`](https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html):

```java
import com.increase.api.core.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Paths;

try (HttpResponse response = client.files().contents(params)) {
response.body().transferTo(Files.newOutputStream(Paths.get(path)));
} catch (Exception e) {
System.out.println("Something went wrong!");
throw new RuntimeException(e);
}
```

## Raw responses

The SDK defines methods that deserialize responses into instances of Java classes. However, these methods don't provide access to the response headers, status code, or the raw response body.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,23 +241,6 @@ private fun HttpRequest.toRequest(client: okhttp3.OkHttpClient?): Request {
val builder = Request.Builder().url(toUrl()).method(method.name, body)
headers.names().forEach { name -> headers.values(name).forEach { builder.addHeader(name, it) } }

if (client != null) {
if (
!headers.names().contains("X-Stainless-Read-Timeout") && client.readTimeoutMillis != 0
) {
builder.addHeader(
"X-Stainless-Read-Timeout",
Duration.ofMillis(client.readTimeoutMillis.toLong()).seconds.toString(),
)
}
if (!headers.names().contains("X-Stainless-Timeout") && client.callTimeoutMillis != 0) {
builder.addHeader(
"X-Stainless-Timeout",
Duration.ofMillis(client.callTimeoutMillis.toLong()).seconds.toString(),
)
}
}

return builder.build()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -504,14 +504,6 @@ private constructor(

val headers = Headers.builder()
val queryParams = QueryParams.builder()
headers.put("X-Stainless-Lang", "java")
headers.put("X-Stainless-Arch", getOsArch())
headers.put("X-Stainless-OS", getOsName())
headers.put("X-Stainless-OS-Version", getOsVersion())
headers.put("X-Stainless-Package-Version", getPackageVersion())
headers.put("X-Stainless-Runtime", "JRE")
headers.put("X-Stainless-Runtime-Version", getJavaVersion())
headers.put("X-Stainless-Kotlin-Version", KotlinVersion.CURRENT.toString())
// We replace after all the default headers to allow end-users to overwrite them.
headers.replaceAll(this.headers.build())
queryParams.replaceAll(this.queryParams.build())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,9 @@ private constructor(
override fun execute(request: HttpRequest, requestOptions: RequestOptions): HttpResponse {
var modifiedRequest = maybeAddIdempotencyHeader(request)

// Don't send the current retry count in the headers if the caller set their own value.
val shouldSendRetryCount =
!modifiedRequest.headers.names().contains("X-Stainless-Retry-Count")

var retries = 0

while (true) {
if (shouldSendRetryCount) {
modifiedRequest = setRetryCountHeader(modifiedRequest, retries)
}

if (!isRetryable(modifiedRequest)) {
return httpClient.execute(modifiedRequest, requestOptions)
}
Expand Down Expand Up @@ -79,21 +71,15 @@ private constructor(
): CompletableFuture<HttpResponse> {
val modifiedRequest = maybeAddIdempotencyHeader(request)

// Don't send the current retry count in the headers if the caller set their own value.
val shouldSendRetryCount =
!modifiedRequest.headers.names().contains("X-Stainless-Retry-Count")

var retries = 0

fun executeWithRetries(
request: HttpRequest,
requestOptions: RequestOptions,
): CompletableFuture<HttpResponse> {
val requestWithRetryCount =
if (shouldSendRetryCount) setRetryCountHeader(request, retries) else request

val responseFuture = httpClient.executeAsync(requestWithRetryCount, requestOptions)
if (!isRetryable(requestWithRetryCount)) {
val responseFuture = httpClient.executeAsync(request, requestOptions)
if (!isRetryable(request)) {
return responseFuture
}

Expand All @@ -119,7 +105,7 @@ private constructor(
// All responses must be closed, so close the failed one before retrying.
response?.close()
return sleeper.sleepAsync(backoffDuration).thenCompose {
executeWithRetries(requestWithRetryCount, requestOptions)
executeWithRetries(request, requestOptions)
}
}
) {
Expand All @@ -142,9 +128,6 @@ private constructor(
// the body data aren't available on subsequent attempts.
request.body?.repeatable() ?: true

private fun setRetryCountHeader(request: HttpRequest, retries: Int): HttpRequest =
request.toBuilder().replaceHeaders("X-Stainless-Retry-Count", retries.toString()).build()

private fun idempotencyKey(): String = "increase-java-retry-${UUID.randomUUID()}"

private fun maybeAddIdempotencyHeader(request: HttpRequest): HttpRequest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -705,6 +705,12 @@ private constructor(
/** Occurs whenever a Physical Check is updated. */
@JvmField val PHYSICAL_CHECK_UPDATED = of("physical_check.updated")

/** Occurs whenever a Physical Check Book is created. */
@JvmField val PHYSICAL_CHECK_BOOK_CREATED = of("physical_check_book.created")

/** Occurs whenever a Physical Check Book is updated. */
@JvmField val PHYSICAL_CHECK_BOOK_UPDATED = of("physical_check_book.updated")

/** Occurs whenever a Program is created. */
@JvmField val PROGRAM_CREATED = of("program.created")

Expand Down Expand Up @@ -1002,6 +1008,10 @@ private constructor(
PHYSICAL_CHECK_CREATED,
/** Occurs whenever a Physical Check is updated. */
PHYSICAL_CHECK_UPDATED,
/** Occurs whenever a Physical Check Book is created. */
PHYSICAL_CHECK_BOOK_CREATED,
/** Occurs whenever a Physical Check Book is updated. */
PHYSICAL_CHECK_BOOK_UPDATED,
/** Occurs whenever a Program is created. */
PROGRAM_CREATED,
/** Occurs whenever a Program is updated. */
Expand Down Expand Up @@ -1263,6 +1273,10 @@ private constructor(
PHYSICAL_CHECK_CREATED,
/** Occurs whenever a Physical Check is updated. */
PHYSICAL_CHECK_UPDATED,
/** Occurs whenever a Physical Check Book is created. */
PHYSICAL_CHECK_BOOK_CREATED,
/** Occurs whenever a Physical Check Book is updated. */
PHYSICAL_CHECK_BOOK_UPDATED,
/** Occurs whenever a Program is created. */
PROGRAM_CREATED,
/** Occurs whenever a Program is updated. */
Expand Down Expand Up @@ -1432,6 +1446,8 @@ private constructor(
PHYSICAL_CARD_PROFILE_UPDATED -> Value.PHYSICAL_CARD_PROFILE_UPDATED
PHYSICAL_CHECK_CREATED -> Value.PHYSICAL_CHECK_CREATED
PHYSICAL_CHECK_UPDATED -> Value.PHYSICAL_CHECK_UPDATED
PHYSICAL_CHECK_BOOK_CREATED -> Value.PHYSICAL_CHECK_BOOK_CREATED
PHYSICAL_CHECK_BOOK_UPDATED -> Value.PHYSICAL_CHECK_BOOK_UPDATED
PROGRAM_CREATED -> Value.PROGRAM_CREATED
PROGRAM_UPDATED -> Value.PROGRAM_UPDATED
PROOF_OF_AUTHORIZATION_REQUEST_CREATED ->
Expand Down Expand Up @@ -1575,6 +1591,8 @@ private constructor(
PHYSICAL_CARD_PROFILE_UPDATED -> Known.PHYSICAL_CARD_PROFILE_UPDATED
PHYSICAL_CHECK_CREATED -> Known.PHYSICAL_CHECK_CREATED
PHYSICAL_CHECK_UPDATED -> Known.PHYSICAL_CHECK_UPDATED
PHYSICAL_CHECK_BOOK_CREATED -> Known.PHYSICAL_CHECK_BOOK_CREATED
PHYSICAL_CHECK_BOOK_UPDATED -> Known.PHYSICAL_CHECK_BOOK_UPDATED
PROGRAM_CREATED -> Known.PROGRAM_CREATED
PROGRAM_UPDATED -> Known.PROGRAM_UPDATED
PROOF_OF_AUTHORIZATION_REQUEST_CREATED ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -730,6 +730,12 @@ private constructor(
/** Occurs whenever a Physical Check is updated. */
@JvmField val PHYSICAL_CHECK_UPDATED = of("physical_check.updated")

/** Occurs whenever a Physical Check Book is created. */
@JvmField val PHYSICAL_CHECK_BOOK_CREATED = of("physical_check_book.created")

/** Occurs whenever a Physical Check Book is updated. */
@JvmField val PHYSICAL_CHECK_BOOK_UPDATED = of("physical_check_book.updated")

/** Occurs whenever a Program is created. */
@JvmField val PROGRAM_CREATED = of("program.created")

Expand Down Expand Up @@ -1029,6 +1035,10 @@ private constructor(
PHYSICAL_CHECK_CREATED,
/** Occurs whenever a Physical Check is updated. */
PHYSICAL_CHECK_UPDATED,
/** Occurs whenever a Physical Check Book is created. */
PHYSICAL_CHECK_BOOK_CREATED,
/** Occurs whenever a Physical Check Book is updated. */
PHYSICAL_CHECK_BOOK_UPDATED,
/** Occurs whenever a Program is created. */
PROGRAM_CREATED,
/** Occurs whenever a Program is updated. */
Expand Down Expand Up @@ -1292,6 +1302,10 @@ private constructor(
PHYSICAL_CHECK_CREATED,
/** Occurs whenever a Physical Check is updated. */
PHYSICAL_CHECK_UPDATED,
/** Occurs whenever a Physical Check Book is created. */
PHYSICAL_CHECK_BOOK_CREATED,
/** Occurs whenever a Physical Check Book is updated. */
PHYSICAL_CHECK_BOOK_UPDATED,
/** Occurs whenever a Program is created. */
PROGRAM_CREATED,
/** Occurs whenever a Program is updated. */
Expand Down Expand Up @@ -1464,6 +1478,8 @@ private constructor(
PHYSICAL_CARD_PROFILE_UPDATED -> Value.PHYSICAL_CARD_PROFILE_UPDATED
PHYSICAL_CHECK_CREATED -> Value.PHYSICAL_CHECK_CREATED
PHYSICAL_CHECK_UPDATED -> Value.PHYSICAL_CHECK_UPDATED
PHYSICAL_CHECK_BOOK_CREATED -> Value.PHYSICAL_CHECK_BOOK_CREATED
PHYSICAL_CHECK_BOOK_UPDATED -> Value.PHYSICAL_CHECK_BOOK_UPDATED
PROGRAM_CREATED -> Value.PROGRAM_CREATED
PROGRAM_UPDATED -> Value.PROGRAM_UPDATED
PROOF_OF_AUTHORIZATION_REQUEST_CREATED ->
Expand Down Expand Up @@ -1608,6 +1624,8 @@ private constructor(
PHYSICAL_CARD_PROFILE_UPDATED -> Known.PHYSICAL_CARD_PROFILE_UPDATED
PHYSICAL_CHECK_CREATED -> Known.PHYSICAL_CHECK_CREATED
PHYSICAL_CHECK_UPDATED -> Known.PHYSICAL_CHECK_UPDATED
PHYSICAL_CHECK_BOOK_CREATED -> Known.PHYSICAL_CHECK_BOOK_CREATED
PHYSICAL_CHECK_BOOK_UPDATED -> Known.PHYSICAL_CHECK_BOOK_UPDATED
PROGRAM_CREATED -> Known.PROGRAM_CREATED
PROGRAM_UPDATED -> Known.PROGRAM_UPDATED
PROOF_OF_AUTHORIZATION_REQUEST_CREATED ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -705,6 +705,12 @@ private constructor(
/** Occurs whenever a Physical Check is updated. */
@JvmField val PHYSICAL_CHECK_UPDATED = of("physical_check.updated")

/** Occurs whenever a Physical Check Book is created. */
@JvmField val PHYSICAL_CHECK_BOOK_CREATED = of("physical_check_book.created")

/** Occurs whenever a Physical Check Book is updated. */
@JvmField val PHYSICAL_CHECK_BOOK_UPDATED = of("physical_check_book.updated")

/** Occurs whenever a Program is created. */
@JvmField val PROGRAM_CREATED = of("program.created")

Expand Down Expand Up @@ -1002,6 +1008,10 @@ private constructor(
PHYSICAL_CHECK_CREATED,
/** Occurs whenever a Physical Check is updated. */
PHYSICAL_CHECK_UPDATED,
/** Occurs whenever a Physical Check Book is created. */
PHYSICAL_CHECK_BOOK_CREATED,
/** Occurs whenever a Physical Check Book is updated. */
PHYSICAL_CHECK_BOOK_UPDATED,
/** Occurs whenever a Program is created. */
PROGRAM_CREATED,
/** Occurs whenever a Program is updated. */
Expand Down Expand Up @@ -1263,6 +1273,10 @@ private constructor(
PHYSICAL_CHECK_CREATED,
/** Occurs whenever a Physical Check is updated. */
PHYSICAL_CHECK_UPDATED,
/** Occurs whenever a Physical Check Book is created. */
PHYSICAL_CHECK_BOOK_CREATED,
/** Occurs whenever a Physical Check Book is updated. */
PHYSICAL_CHECK_BOOK_UPDATED,
/** Occurs whenever a Program is created. */
PROGRAM_CREATED,
/** Occurs whenever a Program is updated. */
Expand Down Expand Up @@ -1432,6 +1446,8 @@ private constructor(
PHYSICAL_CARD_PROFILE_UPDATED -> Value.PHYSICAL_CARD_PROFILE_UPDATED
PHYSICAL_CHECK_CREATED -> Value.PHYSICAL_CHECK_CREATED
PHYSICAL_CHECK_UPDATED -> Value.PHYSICAL_CHECK_UPDATED
PHYSICAL_CHECK_BOOK_CREATED -> Value.PHYSICAL_CHECK_BOOK_CREATED
PHYSICAL_CHECK_BOOK_UPDATED -> Value.PHYSICAL_CHECK_BOOK_UPDATED
PROGRAM_CREATED -> Value.PROGRAM_CREATED
PROGRAM_UPDATED -> Value.PROGRAM_UPDATED
PROOF_OF_AUTHORIZATION_REQUEST_CREATED ->
Expand Down Expand Up @@ -1575,6 +1591,8 @@ private constructor(
PHYSICAL_CARD_PROFILE_UPDATED -> Known.PHYSICAL_CARD_PROFILE_UPDATED
PHYSICAL_CHECK_CREATED -> Known.PHYSICAL_CHECK_CREATED
PHYSICAL_CHECK_UPDATED -> Known.PHYSICAL_CHECK_UPDATED
PHYSICAL_CHECK_BOOK_CREATED -> Known.PHYSICAL_CHECK_BOOK_CREATED
PHYSICAL_CHECK_BOOK_UPDATED -> Known.PHYSICAL_CHECK_BOOK_UPDATED
PROGRAM_CREATED -> Known.PROGRAM_CREATED
PROGRAM_UPDATED -> Known.PROGRAM_UPDATED
PROOF_OF_AUTHORIZATION_REQUEST_CREATED ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -999,6 +999,12 @@ private constructor(
/** Occurs whenever a Physical Check is updated. */
@JvmField val PHYSICAL_CHECK_UPDATED = of("physical_check.updated")

/** Occurs whenever a Physical Check Book is created. */
@JvmField val PHYSICAL_CHECK_BOOK_CREATED = of("physical_check_book.created")

/** Occurs whenever a Physical Check Book is updated. */
@JvmField val PHYSICAL_CHECK_BOOK_UPDATED = of("physical_check_book.updated")

/** Occurs whenever a Program is created. */
@JvmField val PROGRAM_CREATED = of("program.created")

Expand Down Expand Up @@ -1298,6 +1304,10 @@ private constructor(
PHYSICAL_CHECK_CREATED,
/** Occurs whenever a Physical Check is updated. */
PHYSICAL_CHECK_UPDATED,
/** Occurs whenever a Physical Check Book is created. */
PHYSICAL_CHECK_BOOK_CREATED,
/** Occurs whenever a Physical Check Book is updated. */
PHYSICAL_CHECK_BOOK_UPDATED,
/** Occurs whenever a Program is created. */
PROGRAM_CREATED,
/** Occurs whenever a Program is updated. */
Expand Down Expand Up @@ -1561,6 +1571,10 @@ private constructor(
PHYSICAL_CHECK_CREATED,
/** Occurs whenever a Physical Check is updated. */
PHYSICAL_CHECK_UPDATED,
/** Occurs whenever a Physical Check Book is created. */
PHYSICAL_CHECK_BOOK_CREATED,
/** Occurs whenever a Physical Check Book is updated. */
PHYSICAL_CHECK_BOOK_UPDATED,
/** Occurs whenever a Program is created. */
PROGRAM_CREATED,
/** Occurs whenever a Program is updated. */
Expand Down Expand Up @@ -1736,6 +1750,8 @@ private constructor(
PHYSICAL_CARD_PROFILE_UPDATED -> Value.PHYSICAL_CARD_PROFILE_UPDATED
PHYSICAL_CHECK_CREATED -> Value.PHYSICAL_CHECK_CREATED
PHYSICAL_CHECK_UPDATED -> Value.PHYSICAL_CHECK_UPDATED
PHYSICAL_CHECK_BOOK_CREATED -> Value.PHYSICAL_CHECK_BOOK_CREATED
PHYSICAL_CHECK_BOOK_UPDATED -> Value.PHYSICAL_CHECK_BOOK_UPDATED
PROGRAM_CREATED -> Value.PROGRAM_CREATED
PROGRAM_UPDATED -> Value.PROGRAM_UPDATED
PROOF_OF_AUTHORIZATION_REQUEST_CREATED ->
Expand Down Expand Up @@ -1880,6 +1896,8 @@ private constructor(
PHYSICAL_CARD_PROFILE_UPDATED -> Known.PHYSICAL_CARD_PROFILE_UPDATED
PHYSICAL_CHECK_CREATED -> Known.PHYSICAL_CHECK_CREATED
PHYSICAL_CHECK_UPDATED -> Known.PHYSICAL_CHECK_UPDATED
PHYSICAL_CHECK_BOOK_CREATED -> Known.PHYSICAL_CHECK_BOOK_CREATED
PHYSICAL_CHECK_BOOK_UPDATED -> Known.PHYSICAL_CHECK_BOOK_UPDATED
PROGRAM_CREATED -> Known.PROGRAM_CREATED
PROGRAM_UPDATED -> Known.PROGRAM_UPDATED
PROOF_OF_AUTHORIZATION_REQUEST_CREATED ->
Expand Down
Loading
Loading