Добавил моментальный ответ в WebhookController
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Struchkov Mark 2023-05-17 18:49:24 +03:00
parent 796519cb1f
commit f7c6a9099b
Signed by: upagge
GPG Key ID: D3018BE7BA428CA6
3 changed files with 25 additions and 22 deletions

10
pom.xml
View File

@ -38,13 +38,13 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<godfather.core.ver>0.0.66</godfather.core.ver>
<godfather.core.ver>0.0.67-SNAPSHOT</godfather.core.ver>
<!-- https://mvnrepository.com/artifact/org.telegram/telegrambots -->
<telegrambots.ver>6.5.0</telegrambots.ver>
<!-- https://mvnrepository.com/artifact/io.smallrye.reactive/smallrye-mutiny-vertx-core -->
<smallrye.mutiny.vertx.core.version>2.30.1</smallrye.mutiny.vertx.core.version>
<smallrye.mutiny.vertx.core.version>3.3.0</smallrye.mutiny.vertx.core.version>
<haiti.version>2.7.2</haiti.version>
@ -251,9 +251,9 @@
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.ws.rs</groupId>
<artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
<version>2.0.1.Final</version>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-web-api</artifactId>
<version>10.0.0</version>
</dependency>
<dependency>

View File

@ -25,9 +25,10 @@
<artifactId>smallrye-mutiny-vertx-core</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.ws.rs</groupId>
<artifactId>jboss-jaxrs-api_2.1_spec</artifactId>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-web-api</artifactId>
</dependency>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots-meta</artifactId>

View File

@ -3,19 +3,18 @@ package dev.struchkov.godfather.telegram.webhook;
import dev.struchkov.godfather.telegram.domain.config.TelegramBotConfig;
import dev.struchkov.godfather.telegram.quarkus.context.service.EventDistributor;
import io.smallrye.mutiny.Uni;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.HeaderParam;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import lombok.extern.slf4j.Slf4j;
import org.telegram.telegrambots.meta.api.objects.Update;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import static dev.struchkov.haiti.context.exception.AccessException.accessException;
import static dev.struchkov.haiti.utils.Inspector.isTrue;
@ -38,17 +37,20 @@ public class WebhookController {
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Uni<Response> updateReceived(@PathParam("webhookPath") String botPath, @HeaderParam("X-Telegram-Bot-Api-Secret-Token") String secretTokenFromTelegram, Update update) {
return Uni.createFrom().voidItem()
Uni.createFrom().voidItem()
.invoke(() -> {
log.trace("Получено webhook событие: {}", update);
isTrue(PATH_KEY.equals(botPath), accessException(ERROR_ACCESS));
isTrue(secretToken.equals(secretTokenFromTelegram), accessException(ERROR_ACCESS));
})
.call(() -> eventDistributor.processing(update))
.onFailure().invoke(th -> log.error("При обработке webhook события произошла ошибка. Идентификатор события: " + update.getUpdateId(), th))
.onFailure().recoverWithNull()
.invoke(() -> log.trace("Сообщили Telegram, что вебхук событие обработано. Идентификатор события: {}", update.getUpdateId()))
.map(ignored -> Response.ok().build());
.subscribe().with(
v -> log.trace("Webhook событие обработано. Идентификатор: {}", update.getUpdateId()),
fail -> log.error("При обработке webhook события произошла ошибка. Идентификатор события: " + update.getUpdateId(), fail)
);
return Uni.createFrom().item(Response.ok().build())
.invoke(() -> log.trace("Сообщили Telegram, что вебхук событие принято. Идентификатор события: {}", update.getUpdateId()));
}
@GET