Implement processed requests count
This commit is contained in:
parent
134f32d03e
commit
d24eecca2b
|
@ -1,14 +1,7 @@
|
|||
package org.telegram.telegrambots.updatesreceivers;
|
||||
|
||||
import java.util.List;
|
||||
import javax.ws.rs.core.Response.Status;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.telegram.telegrambots.Constants;
|
||||
import org.telegram.telegrambots.meta.api.methods.BotApiMethod;
|
||||
import org.telegram.telegrambots.meta.api.objects.Update;
|
||||
import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException;
|
||||
import org.telegram.telegrambots.meta.generics.WebhookBot;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.POST;
|
||||
|
@ -17,7 +10,13 @@ import javax.ws.rs.PathParam;
|
|||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import javax.ws.rs.core.Response.Status;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.telegram.telegrambots.Constants;
|
||||
import org.telegram.telegrambots.meta.api.methods.BotApiMethod;
|
||||
import org.telegram.telegrambots.meta.api.objects.Update;
|
||||
import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException;
|
||||
import org.telegram.telegrambots.meta.generics.WebhookBot;
|
||||
|
||||
/**
|
||||
* @author Ruben Bermudez
|
||||
|
@ -51,7 +50,14 @@ public class RestApi {
|
|||
}
|
||||
return Response.ok(response).build();
|
||||
} catch (TooManyRequestsException e) {
|
||||
return Response.status(Status.TOO_MANY_REQUESTS).build();
|
||||
if (e.getProcessedRequestsCount().isPresent()) {
|
||||
return Response
|
||||
.status(Status.TOO_MANY_REQUESTS)
|
||||
.header("X-Processed-Requests", e.getProcessedRequestsCount().getAsInt())
|
||||
.build();
|
||||
} else {
|
||||
return Response.status(Status.TOO_MANY_REQUESTS).build();
|
||||
}
|
||||
} catch (TelegramApiValidationException e) {
|
||||
log.error(e.getLocalizedMessage(), e);
|
||||
return Response.serverError().build();
|
||||
|
@ -78,7 +84,14 @@ public class RestApi {
|
|||
}
|
||||
return Response.ok(responses).build();
|
||||
} catch (TooManyRequestsException e) {
|
||||
return Response.status(Status.TOO_MANY_REQUESTS).build();
|
||||
if (e.getProcessedRequestsCount().isPresent()) {
|
||||
return Response
|
||||
.status(Status.TOO_MANY_REQUESTS)
|
||||
.header("X-Processed-Requests", e.getProcessedRequestsCount().getAsInt())
|
||||
.build();
|
||||
} else {
|
||||
return Response.status(Status.TOO_MANY_REQUESTS).build();
|
||||
}
|
||||
} catch (TelegramApiValidationException e) {
|
||||
log.error(e.getLocalizedMessage(), e);
|
||||
return Response.serverError().build();
|
||||
|
|
|
@ -1,3 +1,33 @@
|
|||
package org.telegram.telegrambots.updatesreceivers;
|
||||
|
||||
public class TooManyRequestsException extends RuntimeException {}
|
||||
import java.util.OptionalInt;
|
||||
import java.util.StringJoiner;
|
||||
|
||||
public class TooManyRequestsException extends RuntimeException {
|
||||
|
||||
private final int processedRequestsCount;
|
||||
|
||||
public TooManyRequestsException(int processedRequestsCount) {
|
||||
if (processedRequestsCount < 0) {
|
||||
throw new ArrayIndexOutOfBoundsException(processedRequestsCount);
|
||||
}
|
||||
this.processedRequestsCount = processedRequestsCount;
|
||||
}
|
||||
|
||||
public TooManyRequestsException() {
|
||||
this.processedRequestsCount = -1;
|
||||
}
|
||||
|
||||
public OptionalInt getProcessedRequestsCount() {
|
||||
if (processedRequestsCount == -1) {
|
||||
return OptionalInt.empty();
|
||||
} else {
|
||||
return OptionalInt.of(processedRequestsCount);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Too many requests. " + processedRequestsCount + " requests have been processed.";
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue