diff --git a/src/main/java/com/stripe/exception/RateLimitException.java b/src/main/java/com/stripe/exception/RateLimitException.java index e74c6c18c65..78353fcd7e9 100644 --- a/src/main/java/com/stripe/exception/RateLimitException.java +++ b/src/main/java/com/stripe/exception/RateLimitException.java @@ -1,8 +1,17 @@ package com.stripe.exception; -public class RateLimitException extends InvalidRequestException { +import com.google.gson.JsonObject; +import com.stripe.model.StripeError; +import com.stripe.model.StripeObject; +import com.stripe.net.StripeResponseGetter; +import lombok.Getter; + +@Getter +public class RateLimitException extends ApiException { private static final long serialVersionUID = 2L; + private final String param; + public RateLimitException( String message, String param, @@ -10,6 +19,22 @@ public RateLimitException( String code, Integer statusCode, Throwable e) { - super(message, param, requestId, code, statusCode, e); + super(message, requestId, code, statusCode, e); + this.param = param; } + + static RateLimitException parse( + JsonObject body, int statusCode, String requestId, StripeResponseGetter responseGetter) { + RateLimitException.RateLimitError error = + (RateLimitException.RateLimitError) + StripeObject.deserializeStripeObject( + body, RateLimitException.RateLimitError.class, responseGetter); + RateLimitException exception = + new RateLimitException( + error.getMessage(), error.getParam(), requestId, error.getCode(), statusCode, null); + exception.setStripeError(error); + return exception; + } + + public static class RateLimitError extends StripeError {} }