
com.squareup.square.webhooks.AsyncSubscriptionsClient Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of square Show documentation
Show all versions of square Show documentation
Java client library for the Square API
The newest version!
/**
* This file was auto-generated by Fern from our API Definition.
*/
package com.squareup.square.webhooks;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.squareup.square.core.ClientOptions;
import com.squareup.square.core.MediaTypes;
import com.squareup.square.core.ObjectMappers;
import com.squareup.square.core.QueryStringMapper;
import com.squareup.square.core.RequestOptions;
import com.squareup.square.core.SquareApiException;
import com.squareup.square.core.SquareException;
import com.squareup.square.core.SyncPagingIterable;
import com.squareup.square.types.CreateWebhookSubscriptionResponse;
import com.squareup.square.types.DeleteWebhookSubscriptionResponse;
import com.squareup.square.types.GetWebhookSubscriptionResponse;
import com.squareup.square.types.ListWebhookSubscriptionsResponse;
import com.squareup.square.types.TestWebhookSubscriptionResponse;
import com.squareup.square.types.UpdateWebhookSubscriptionResponse;
import com.squareup.square.types.UpdateWebhookSubscriptionSignatureKeyResponse;
import com.squareup.square.types.WebhookSubscription;
import com.squareup.square.webhooks.types.CreateWebhookSubscriptionRequest;
import com.squareup.square.webhooks.types.DeleteSubscriptionsRequest;
import com.squareup.square.webhooks.types.GetSubscriptionsRequest;
import com.squareup.square.webhooks.types.ListSubscriptionsRequest;
import com.squareup.square.webhooks.types.TestWebhookSubscriptionRequest;
import com.squareup.square.webhooks.types.UpdateWebhookSubscriptionRequest;
import com.squareup.square.webhooks.types.UpdateWebhookSubscriptionSignatureKeyRequest;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Headers;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.ResponseBody;
import org.jetbrains.annotations.NotNull;
public class AsyncSubscriptionsClient {
protected final ClientOptions clientOptions;
public AsyncSubscriptionsClient(ClientOptions clientOptions) {
this.clientOptions = clientOptions;
}
/**
* Lists all webhook subscriptions owned by your application.
*/
public CompletableFuture> list() {
return list(ListSubscriptionsRequest.builder().build());
}
/**
* Lists all webhook subscriptions owned by your application.
*/
public CompletableFuture> list(ListSubscriptionsRequest request) {
return list(request, null);
}
/**
* Lists all webhook subscriptions owned by your application.
*/
public CompletableFuture> list(
ListSubscriptionsRequest request, RequestOptions requestOptions) {
HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
.newBuilder()
.addPathSegments("v2/webhooks/subscriptions");
if (request.getCursor().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl, "cursor", request.getCursor().get(), false);
}
if (request.getIncludeDisabled().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl,
"include_disabled",
request.getIncludeDisabled().get().toString(),
false);
}
if (request.getSortOrder().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl, "sort_order", request.getSortOrder().get().toString(), false);
}
if (request.getLimit().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl, "limit", request.getLimit().get().toString(), false);
}
Request.Builder _requestBuilder = new Request.Builder()
.url(httpUrl.build())
.method("GET", null)
.headers(Headers.of(clientOptions.headers(requestOptions)))
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json");
Request okhttpRequest = _requestBuilder.build();
OkHttpClient client = clientOptions.httpClient();
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
client = clientOptions.httpClientWithTimeout(requestOptions);
}
CompletableFuture> future = new CompletableFuture<>();
client.newCall(okhttpRequest).enqueue(new Callback() {
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
try (ResponseBody responseBody = response.body()) {
if (response.isSuccessful()) {
ListWebhookSubscriptionsResponse parsedResponse = ObjectMappers.JSON_MAPPER.readValue(
responseBody.string(), ListWebhookSubscriptionsResponse.class);
Optional startingAfter = parsedResponse.getCursor();
ListSubscriptionsRequest nextRequest = ListSubscriptionsRequest.builder()
.from(request)
.cursor(startingAfter)
.build();
List result =
parsedResponse.getSubscriptions().orElse(Collections.emptyList());
future.complete(
new SyncPagingIterable(startingAfter.isPresent(), result, () -> {
try {
return list(nextRequest, requestOptions).get();
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}));
return;
}
String responseBodyString = responseBody != null ? responseBody.string() : "{}";
future.completeExceptionally(new SquareApiException(
"Error with status code " + response.code(),
response.code(),
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class)));
return;
} catch (IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
}
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
});
return future;
}
/**
* Creates a webhook subscription.
*/
public CompletableFuture create(CreateWebhookSubscriptionRequest request) {
return create(request, null);
}
/**
* Creates a webhook subscription.
*/
public CompletableFuture create(
CreateWebhookSubscriptionRequest request, RequestOptions requestOptions) {
HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
.newBuilder()
.addPathSegments("v2/webhooks/subscriptions")
.build();
RequestBody body;
try {
body = RequestBody.create(
ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
} catch (JsonProcessingException e) {
throw new SquareException("Failed to serialize request", e);
}
Request okhttpRequest = new Request.Builder()
.url(httpUrl)
.method("POST", body)
.headers(Headers.of(clientOptions.headers(requestOptions)))
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.build();
OkHttpClient client = clientOptions.httpClient();
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
client = clientOptions.httpClientWithTimeout(requestOptions);
}
CompletableFuture future = new CompletableFuture<>();
client.newCall(okhttpRequest).enqueue(new Callback() {
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
try (ResponseBody responseBody = response.body()) {
if (response.isSuccessful()) {
future.complete(ObjectMappers.JSON_MAPPER.readValue(
responseBody.string(), CreateWebhookSubscriptionResponse.class));
return;
}
String responseBodyString = responseBody != null ? responseBody.string() : "{}";
future.completeExceptionally(new SquareApiException(
"Error with status code " + response.code(),
response.code(),
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class)));
return;
} catch (IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
}
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
});
return future;
}
/**
* Retrieves a webhook subscription identified by its ID.
*/
public CompletableFuture get(GetSubscriptionsRequest request) {
return get(request, null);
}
/**
* Retrieves a webhook subscription identified by its ID.
*/
public CompletableFuture get(
GetSubscriptionsRequest request, RequestOptions requestOptions) {
HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
.newBuilder()
.addPathSegments("v2/webhooks/subscriptions")
.addPathSegment(request.getSubscriptionId())
.build();
Request.Builder _requestBuilder = new Request.Builder()
.url(httpUrl)
.method("GET", null)
.headers(Headers.of(clientOptions.headers(requestOptions)))
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json");
Request okhttpRequest = _requestBuilder.build();
OkHttpClient client = clientOptions.httpClient();
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
client = clientOptions.httpClientWithTimeout(requestOptions);
}
CompletableFuture future = new CompletableFuture<>();
client.newCall(okhttpRequest).enqueue(new Callback() {
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
try (ResponseBody responseBody = response.body()) {
if (response.isSuccessful()) {
future.complete(ObjectMappers.JSON_MAPPER.readValue(
responseBody.string(), GetWebhookSubscriptionResponse.class));
return;
}
String responseBodyString = responseBody != null ? responseBody.string() : "{}";
future.completeExceptionally(new SquareApiException(
"Error with status code " + response.code(),
response.code(),
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class)));
return;
} catch (IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
}
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
});
return future;
}
/**
* Updates a webhook subscription.
*/
public CompletableFuture update(UpdateWebhookSubscriptionRequest request) {
return update(request, null);
}
/**
* Updates a webhook subscription.
*/
public CompletableFuture update(
UpdateWebhookSubscriptionRequest request, RequestOptions requestOptions) {
HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
.newBuilder()
.addPathSegments("v2/webhooks/subscriptions")
.addPathSegment(request.getSubscriptionId())
.build();
RequestBody body;
try {
body = RequestBody.create(
ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
} catch (JsonProcessingException e) {
throw new SquareException("Failed to serialize request", e);
}
Request okhttpRequest = new Request.Builder()
.url(httpUrl)
.method("PUT", body)
.headers(Headers.of(clientOptions.headers(requestOptions)))
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.build();
OkHttpClient client = clientOptions.httpClient();
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
client = clientOptions.httpClientWithTimeout(requestOptions);
}
CompletableFuture future = new CompletableFuture<>();
client.newCall(okhttpRequest).enqueue(new Callback() {
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
try (ResponseBody responseBody = response.body()) {
if (response.isSuccessful()) {
future.complete(ObjectMappers.JSON_MAPPER.readValue(
responseBody.string(), UpdateWebhookSubscriptionResponse.class));
return;
}
String responseBodyString = responseBody != null ? responseBody.string() : "{}";
future.completeExceptionally(new SquareApiException(
"Error with status code " + response.code(),
response.code(),
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class)));
return;
} catch (IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
}
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
});
return future;
}
/**
* Deletes a webhook subscription.
*/
public CompletableFuture delete(DeleteSubscriptionsRequest request) {
return delete(request, null);
}
/**
* Deletes a webhook subscription.
*/
public CompletableFuture delete(
DeleteSubscriptionsRequest request, RequestOptions requestOptions) {
HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
.newBuilder()
.addPathSegments("v2/webhooks/subscriptions")
.addPathSegment(request.getSubscriptionId())
.build();
Request.Builder _requestBuilder = new Request.Builder()
.url(httpUrl)
.method("DELETE", null)
.headers(Headers.of(clientOptions.headers(requestOptions)))
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json");
Request okhttpRequest = _requestBuilder.build();
OkHttpClient client = clientOptions.httpClient();
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
client = clientOptions.httpClientWithTimeout(requestOptions);
}
CompletableFuture future = new CompletableFuture<>();
client.newCall(okhttpRequest).enqueue(new Callback() {
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
try (ResponseBody responseBody = response.body()) {
if (response.isSuccessful()) {
future.complete(ObjectMappers.JSON_MAPPER.readValue(
responseBody.string(), DeleteWebhookSubscriptionResponse.class));
return;
}
String responseBodyString = responseBody != null ? responseBody.string() : "{}";
future.completeExceptionally(new SquareApiException(
"Error with status code " + response.code(),
response.code(),
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class)));
return;
} catch (IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
}
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
});
return future;
}
/**
* Updates a webhook subscription by replacing the existing signature key with a new one.
*/
public CompletableFuture updateSignatureKey(
UpdateWebhookSubscriptionSignatureKeyRequest request) {
return updateSignatureKey(request, null);
}
/**
* Updates a webhook subscription by replacing the existing signature key with a new one.
*/
public CompletableFuture updateSignatureKey(
UpdateWebhookSubscriptionSignatureKeyRequest request, RequestOptions requestOptions) {
HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
.newBuilder()
.addPathSegments("v2/webhooks/subscriptions")
.addPathSegment(request.getSubscriptionId())
.addPathSegments("signature-key")
.build();
RequestBody body;
try {
body = RequestBody.create(
ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
} catch (JsonProcessingException e) {
throw new SquareException("Failed to serialize request", e);
}
Request okhttpRequest = new Request.Builder()
.url(httpUrl)
.method("POST", body)
.headers(Headers.of(clientOptions.headers(requestOptions)))
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.build();
OkHttpClient client = clientOptions.httpClient();
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
client = clientOptions.httpClientWithTimeout(requestOptions);
}
CompletableFuture future = new CompletableFuture<>();
client.newCall(okhttpRequest).enqueue(new Callback() {
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
try (ResponseBody responseBody = response.body()) {
if (response.isSuccessful()) {
future.complete(ObjectMappers.JSON_MAPPER.readValue(
responseBody.string(), UpdateWebhookSubscriptionSignatureKeyResponse.class));
return;
}
String responseBodyString = responseBody != null ? responseBody.string() : "{}";
future.completeExceptionally(new SquareApiException(
"Error with status code " + response.code(),
response.code(),
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class)));
return;
} catch (IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
}
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
});
return future;
}
/**
* Tests a webhook subscription by sending a test event to the notification URL.
*/
public CompletableFuture test(TestWebhookSubscriptionRequest request) {
return test(request, null);
}
/**
* Tests a webhook subscription by sending a test event to the notification URL.
*/
public CompletableFuture test(
TestWebhookSubscriptionRequest request, RequestOptions requestOptions) {
HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
.newBuilder()
.addPathSegments("v2/webhooks/subscriptions")
.addPathSegment(request.getSubscriptionId())
.addPathSegments("test")
.build();
RequestBody body;
try {
body = RequestBody.create(
ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
} catch (JsonProcessingException e) {
throw new SquareException("Failed to serialize request", e);
}
Request okhttpRequest = new Request.Builder()
.url(httpUrl)
.method("POST", body)
.headers(Headers.of(clientOptions.headers(requestOptions)))
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.build();
OkHttpClient client = clientOptions.httpClient();
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
client = clientOptions.httpClientWithTimeout(requestOptions);
}
CompletableFuture future = new CompletableFuture<>();
client.newCall(okhttpRequest).enqueue(new Callback() {
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
try (ResponseBody responseBody = response.body()) {
if (response.isSuccessful()) {
future.complete(ObjectMappers.JSON_MAPPER.readValue(
responseBody.string(), TestWebhookSubscriptionResponse.class));
return;
}
String responseBodyString = responseBody != null ? responseBody.string() : "{}";
future.completeExceptionally(new SquareApiException(
"Error with status code " + response.code(),
response.code(),
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class)));
return;
} catch (IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
}
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
future.completeExceptionally(new SquareException("Network error executing HTTP request", e));
}
});
return future;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy