diff --git a/src/main/java/com/twilio/base/ResourceDeleter.java b/src/main/java/com/twilio/base/ResourceDeleter.java new file mode 100644 index 0000000000..3c5d2f8778 --- /dev/null +++ b/src/main/java/com/twilio/base/ResourceDeleter.java @@ -0,0 +1,37 @@ +package com.twilio.base; + +import com.twilio.Twilio; +import com.twilio.http.TwilioRestClient; + +import java.util.concurrent.CompletableFuture; + +/** + * Executor for deletes of a resource that return a response object. + * + * @param type of the resource + * @param type of the delete response + */ +public abstract class ResourceDeleter { + + public CompletableFuture deleteAsync() { + return deleteAsync(Twilio.getRestClient()); + } + + public CompletableFuture deleteAsync(final TwilioRestClient client) { + return CompletableFuture.supplyAsync(() -> delete(client), Twilio.getExecutorService()); + } + + public R delete() { + return delete(Twilio.getRestClient()); + } + + public abstract R delete(final TwilioRestClient client); + + public TwilioResponse deleteWithResponse() { + return deleteWithResponse(Twilio.getRestClient()); + } + + public TwilioResponse deleteWithResponse(final TwilioRestClient client) { + throw new UnsupportedOperationException("deleteWithResponse is not supported for this resource."); + } +} diff --git a/src/main/java/com/twilio/rest/numbers/v3/HostedNumberOrder.java b/src/main/java/com/twilio/rest/numbers/v3/HostedNumberOrder.java index d66bdf1b9e..041841b9e5 100644 --- a/src/main/java/com/twilio/rest/numbers/v3/HostedNumberOrder.java +++ b/src/main/java/com/twilio/rest/numbers/v3/HostedNumberOrder.java @@ -30,6 +30,7 @@ import java.io.IOException; import java.io.IOException; import java.io.InputStream; +import java.util.Objects; import lombok.ToString; @JsonIgnoreProperties(ignoreUnknown = true) @@ -104,6 +105,47 @@ public int hashCode() { } } + @JsonIgnoreProperties(ignoreUnknown = true) + static class DeleteHostedNumberOrderResponse extends Resource { + + @JsonCreator + private DeleteHostedNumberOrderResponse() {} + + public static DeleteHostedNumberOrderResponse fromJson( + final InputStream json, + final ObjectMapper objectMapper + ) { + // Convert all checked exceptions to Runtime + try { + return objectMapper.readValue( + json, + DeleteHostedNumberOrderResponse.class + ); + } catch (final JsonMappingException | JsonParseException e) { + throw new ApiException(e.getMessage(), e); + } catch (final IOException e) { + throw new ApiConnectionException(e.getMessage(), e); + } + } + + @Override + public boolean equals(final Object o) { + if (this == o) { + return true; + } + + if (o == null || getClass() != o.getClass()) { + return false; + } + return true; + } + + @Override + public int hashCode() { + return Objects.hash(); + } + } + @JsonIgnoreProperties(ignoreUnknown = true) static class ListHostedNumberOrderResponse extends Resource { diff --git a/src/main/java/com/twilio/rest/studio/v2/flow/ExecutionReader.java b/src/main/java/com/twilio/rest/studio/v2/flow/ExecutionReader.java index 0004f9dd6e..62cb6a5fc0 100644 --- a/src/main/java/com/twilio/rest/studio/v2/flow/ExecutionReader.java +++ b/src/main/java/com/twilio/rest/studio/v2/flow/ExecutionReader.java @@ -37,6 +37,7 @@ public class ExecutionReader extends Reader { private String pathFlowSid; + private Execution.Status status; private ZonedDateTime dateCreatedFrom; private ZonedDateTime dateCreatedTo; private Long pageSize; @@ -45,6 +46,11 @@ public ExecutionReader(final String pathFlowSid) { this.pathFlowSid = pathFlowSid; } + public ExecutionReader setStatus(final Execution.Status status) { + this.status = status; + return this; + } + public ExecutionReader setDateCreatedFrom( final ZonedDateTime dateCreatedFrom ) { @@ -206,6 +212,10 @@ public Page getPage( } private void addQueryParams(final Request request) { + if (status != null) { + Serializer.toString(request, "status", status, ParameterType.QUERY); + } + if (dateCreatedFrom != null) { Serializer.toString( request,