All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.squareup.square.AsyncSubscriptionsClient Maven / Gradle / Ivy

The newest version!
/**
 * This file was auto-generated by Fern from our API Definition.
 */
package com.squareup.square;

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.BulkSwapPlanRequest;
import com.squareup.square.types.BulkSwapPlanResponse;
import com.squareup.square.types.CancelSubscriptionResponse;
import com.squareup.square.types.CancelSubscriptionsRequest;
import com.squareup.square.types.ChangeBillingAnchorDateRequest;
import com.squareup.square.types.ChangeBillingAnchorDateResponse;
import com.squareup.square.types.CreateSubscriptionRequest;
import com.squareup.square.types.CreateSubscriptionResponse;
import com.squareup.square.types.DeleteActionSubscriptionsRequest;
import com.squareup.square.types.DeleteSubscriptionActionResponse;
import com.squareup.square.types.GetSubscriptionResponse;
import com.squareup.square.types.GetSubscriptionsRequest;
import com.squareup.square.types.ListEventsSubscriptionsRequest;
import com.squareup.square.types.ListSubscriptionEventsResponse;
import com.squareup.square.types.PauseSubscriptionRequest;
import com.squareup.square.types.PauseSubscriptionResponse;
import com.squareup.square.types.ResumeSubscriptionRequest;
import com.squareup.square.types.ResumeSubscriptionResponse;
import com.squareup.square.types.SearchSubscriptionsRequest;
import com.squareup.square.types.SearchSubscriptionsResponse;
import com.squareup.square.types.SubscriptionEvent;
import com.squareup.square.types.SwapPlanRequest;
import com.squareup.square.types.SwapPlanResponse;
import com.squareup.square.types.UpdateSubscriptionRequest;
import com.squareup.square.types.UpdateSubscriptionResponse;
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;
    }

    /**
     * Enrolls a customer in a subscription.
     * 

If you provide a card on file in the request, Square charges the card for * the subscription. Otherwise, Square sends an invoice to the customer's email * address. The subscription starts immediately, unless the request includes * the optional start_date. Each individual subscription is associated with a particular location.

*

For more information, see Create a subscription.

*/ public CompletableFuture create(CreateSubscriptionRequest request) { return create(request, null); } /** * Enrolls a customer in a subscription. *

If you provide a card on file in the request, Square charges the card for * the subscription. Otherwise, Square sends an invoice to the customer's email * address. The subscription starts immediately, unless the request includes * the optional start_date. Each individual subscription is associated with a particular location.

*

For more information, see Create a subscription.

*/ public CompletableFuture create( CreateSubscriptionRequest request, RequestOptions requestOptions) { HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) .newBuilder() .addPathSegments("v2/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(), CreateSubscriptionResponse.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; } /** * Schedules a plan variation change for all active subscriptions under a given plan * variation. For more information, see Swap Subscription Plan Variations. */ public CompletableFuture bulkSwapPlan(BulkSwapPlanRequest request) { return bulkSwapPlan(request, null); } /** * Schedules a plan variation change for all active subscriptions under a given plan * variation. For more information, see Swap Subscription Plan Variations. */ public CompletableFuture bulkSwapPlan( BulkSwapPlanRequest request, RequestOptions requestOptions) { HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) .newBuilder() .addPathSegments("v2/subscriptions/bulk-swap-plan") .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(), BulkSwapPlanResponse.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; } /** * Searches for subscriptions. *

Results are ordered chronologically by subscription creation date. If * the request specifies more than one location ID, * the endpoint orders the result * by location ID, and then by creation date within each location. If no locations are given * in the query, all locations are searched.

*

You can also optionally specify customer_ids to search by customer. * If left unset, all customers * associated with the specified locations are returned. * If the request specifies customer IDs, the endpoint orders results * first by location, within location by customer ID, and within * customer by subscription creation date.

*/ public CompletableFuture search() { return search(SearchSubscriptionsRequest.builder().build()); } /** * Searches for subscriptions. *

Results are ordered chronologically by subscription creation date. If * the request specifies more than one location ID, * the endpoint orders the result * by location ID, and then by creation date within each location. If no locations are given * in the query, all locations are searched.

*

You can also optionally specify customer_ids to search by customer. * If left unset, all customers * associated with the specified locations are returned. * If the request specifies customer IDs, the endpoint orders results * first by location, within location by customer ID, and within * customer by subscription creation date.

*/ public CompletableFuture search(SearchSubscriptionsRequest request) { return search(request, null); } /** * Searches for subscriptions. *

Results are ordered chronologically by subscription creation date. If * the request specifies more than one location ID, * the endpoint orders the result * by location ID, and then by creation date within each location. If no locations are given * in the query, all locations are searched.

*

You can also optionally specify customer_ids to search by customer. * If left unset, all customers * associated with the specified locations are returned. * If the request specifies customer IDs, the endpoint orders results * first by location, within location by customer ID, and within * customer by subscription creation date.

*/ public CompletableFuture search( SearchSubscriptionsRequest request, RequestOptions requestOptions) { HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) .newBuilder() .addPathSegments("v2/subscriptions/search") .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(), SearchSubscriptionsResponse.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 specific subscription. */ public CompletableFuture get(GetSubscriptionsRequest request) { return get(request, null); } /** * Retrieves a specific subscription. */ public CompletableFuture get( GetSubscriptionsRequest request, RequestOptions requestOptions) { HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) .newBuilder() .addPathSegments("v2/subscriptions") .addPathSegment(request.getSubscriptionId()); if (request.getInclude().isPresent()) { QueryStringMapper.addQueryParameter( httpUrl, "include", request.getInclude().get(), 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()) { future.complete(ObjectMappers.JSON_MAPPER.readValue( responseBody.string(), GetSubscriptionResponse.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 subscription by modifying or clearing subscription field values. * To clear a field, set its value to null. */ public CompletableFuture update(UpdateSubscriptionRequest request) { return update(request, null); } /** * Updates a subscription by modifying or clearing subscription field values. * To clear a field, set its value to null. */ public CompletableFuture update( UpdateSubscriptionRequest request, RequestOptions requestOptions) { HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) .newBuilder() .addPathSegments("v2/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(), UpdateSubscriptionResponse.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 scheduled action for a subscription. */ public CompletableFuture deleteAction(DeleteActionSubscriptionsRequest request) { return deleteAction(request, null); } /** * Deletes a scheduled action for a subscription. */ public CompletableFuture deleteAction( DeleteActionSubscriptionsRequest request, RequestOptions requestOptions) { HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) .newBuilder() .addPathSegments("v2/subscriptions") .addPathSegment(request.getSubscriptionId()) .addPathSegments("actions") .addPathSegment(request.getActionId()) .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(), DeleteSubscriptionActionResponse.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; } /** * Changes the billing anchor date * for a subscription. */ public CompletableFuture changeBillingAnchorDate( ChangeBillingAnchorDateRequest request) { return changeBillingAnchorDate(request, null); } /** * Changes the billing anchor date * for a subscription. */ public CompletableFuture changeBillingAnchorDate( ChangeBillingAnchorDateRequest request, RequestOptions requestOptions) { HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) .newBuilder() .addPathSegments("v2/subscriptions") .addPathSegment(request.getSubscriptionId()) .addPathSegments("billing-anchor") .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(), ChangeBillingAnchorDateResponse.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; } /** * Schedules a CANCEL action to cancel an active subscription. This * sets the canceled_date field to the end of the active billing period. After this date, * the subscription status changes from ACTIVE to CANCELED. */ public CompletableFuture cancel(CancelSubscriptionsRequest request) { return cancel(request, null); } /** * Schedules a CANCEL action to cancel an active subscription. This * sets the canceled_date field to the end of the active billing period. After this date, * the subscription status changes from ACTIVE to CANCELED. */ public CompletableFuture cancel( CancelSubscriptionsRequest request, RequestOptions requestOptions) { HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) .newBuilder() .addPathSegments("v2/subscriptions") .addPathSegment(request.getSubscriptionId()) .addPathSegments("cancel") .build(); Request.Builder _requestBuilder = new Request.Builder() .url(httpUrl) .method("POST", RequestBody.create("", 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(), CancelSubscriptionResponse.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; } /** * Lists all events for a specific subscription. */ public CompletableFuture> listEvents(ListEventsSubscriptionsRequest request) { return listEvents(request, null); } /** * Lists all events for a specific subscription. */ public CompletableFuture> listEvents( ListEventsSubscriptionsRequest request, RequestOptions requestOptions) { HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) .newBuilder() .addPathSegments("v2/subscriptions") .addPathSegment(request.getSubscriptionId()) .addPathSegments("events"); if (request.getCursor().isPresent()) { QueryStringMapper.addQueryParameter( httpUrl, "cursor", request.getCursor().get(), 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()) { ListSubscriptionEventsResponse parsedResponse = ObjectMappers.JSON_MAPPER.readValue( responseBody.string(), ListSubscriptionEventsResponse.class); Optional startingAfter = parsedResponse.getCursor(); ListEventsSubscriptionsRequest nextRequest = ListEventsSubscriptionsRequest.builder() .from(request) .cursor(startingAfter) .build(); List result = parsedResponse.getSubscriptionEvents().orElse(Collections.emptyList()); future.complete( new SyncPagingIterable(startingAfter.isPresent(), result, () -> { try { return listEvents(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; } /** * Schedules a PAUSE action to pause an active subscription. */ public CompletableFuture pause(PauseSubscriptionRequest request) { return pause(request, null); } /** * Schedules a PAUSE action to pause an active subscription. */ public CompletableFuture pause( PauseSubscriptionRequest request, RequestOptions requestOptions) { HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) .newBuilder() .addPathSegments("v2/subscriptions") .addPathSegment(request.getSubscriptionId()) .addPathSegments("pause") .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(), PauseSubscriptionResponse.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; } /** * Schedules a RESUME action to resume a paused or a deactivated subscription. */ public CompletableFuture resume(ResumeSubscriptionRequest request) { return resume(request, null); } /** * Schedules a RESUME action to resume a paused or a deactivated subscription. */ public CompletableFuture resume( ResumeSubscriptionRequest request, RequestOptions requestOptions) { HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) .newBuilder() .addPathSegments("v2/subscriptions") .addPathSegment(request.getSubscriptionId()) .addPathSegments("resume") .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(), ResumeSubscriptionResponse.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; } /** * Schedules a SWAP_PLAN action to swap a subscription plan variation in an existing subscription. * For more information, see Swap Subscription Plan Variations. */ public CompletableFuture swapPlan(SwapPlanRequest request) { return swapPlan(request, null); } /** * Schedules a SWAP_PLAN action to swap a subscription plan variation in an existing subscription. * For more information, see Swap Subscription Plan Variations. */ public CompletableFuture swapPlan(SwapPlanRequest request, RequestOptions requestOptions) { HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) .newBuilder() .addPathSegments("v2/subscriptions") .addPathSegment(request.getSubscriptionId()) .addPathSegments("swap-plan") .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(), SwapPlanResponse.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