This commit is contained in:
parent
8f8b524b0e
commit
be8d9a3c82
@ -1,6 +1,7 @@
|
||||
package dev.struchkov.godfather.telegram.quarkus.core;
|
||||
|
||||
import dev.struchkov.godfather.telegram.domain.config.TelegramBotConfig;
|
||||
import dev.struchkov.godfather.telegram.domain.config.WebhookConfig;
|
||||
import dev.struchkov.godfather.telegram.quarkus.context.service.EventDistributor;
|
||||
import dev.struchkov.godfather.telegram.quarkus.context.service.TelegramConnect;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -18,16 +19,19 @@ public class TelegramWebhookConnect implements TelegramConnect {
|
||||
}
|
||||
|
||||
private void initWebHook(TelegramBotConfig telegramBotConfig) {
|
||||
// try {
|
||||
try {
|
||||
final TelegramWebhookBot bot = new TelegramWebhookBot(telegramBotConfig);
|
||||
final SetWebhook setWebhook = SetWebhook.builder()
|
||||
.url(telegramBotConfig.getWebHookUrl())
|
||||
.build();
|
||||
// bot.setWebhook(setWebhook);
|
||||
webhookBot = bot;
|
||||
// } catch (TelegramApiException e) {
|
||||
// log.error(e.getMessage());
|
||||
// }
|
||||
final WebhookConfig webhookConfig = telegramBotConfig.getWebhookConfig();
|
||||
if (webhookConfig.isEnable()) {
|
||||
final SetWebhook setWebhook = SetWebhook.builder()
|
||||
.url(webhookConfig.getRootUrl() + "/" + webhookConfig.getRootUrl() + "?webhookAccessKey=" + webhookConfig.getAccessKey())
|
||||
.build();
|
||||
bot.setWebhook(setWebhook);
|
||||
webhookBot = bot;
|
||||
}
|
||||
} catch (TelegramApiException e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,6 +1,7 @@
|
||||
package dev.struchkov.godfather.telegram.simple.core;
|
||||
|
||||
import dev.struchkov.godfather.telegram.domain.config.TelegramBotConfig;
|
||||
import dev.struchkov.godfather.telegram.domain.config.WebhookConfig;
|
||||
import dev.struchkov.godfather.telegram.simple.context.service.EventDistributor;
|
||||
import dev.struchkov.godfather.telegram.simple.context.service.TelegramConnect;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -20,11 +21,14 @@ public class TelegramWebhookConnect implements TelegramConnect {
|
||||
private void initWebHook(TelegramBotConfig telegramBotConfig) {
|
||||
try {
|
||||
final TelegramWebhookBot bot = new TelegramWebhookBot(telegramBotConfig);
|
||||
final SetWebhook setWebhook = SetWebhook.builder()
|
||||
.url(telegramBotConfig.getWebHookUrl())
|
||||
.build();
|
||||
bot.setWebhook(setWebhook);
|
||||
webhookBot = bot;
|
||||
final WebhookConfig webhookConfig = telegramBotConfig.getWebhookConfig();
|
||||
if (webhookConfig.isEnable()) {
|
||||
final SetWebhook setWebhook = SetWebhook.builder()
|
||||
.url(webhookConfig.getRootUrl() + "/" + webhookConfig.getRootUrl() + "?webhookAccessKey=" + webhookConfig.getAccessKey())
|
||||
.build();
|
||||
bot.setWebhook(setWebhook);
|
||||
webhookBot = bot;
|
||||
}
|
||||
} catch (TelegramApiException e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
|
@ -1,67 +1,24 @@
|
||||
package dev.struchkov.godfather.telegram.domain.config;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* TODO: Добавить описание класса.
|
||||
*
|
||||
* @author upagge [30.01.2020]
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class ProxyConfig {
|
||||
|
||||
private boolean enable = true;
|
||||
private boolean enable = false;
|
||||
private String host;
|
||||
private Integer port;
|
||||
private String user;
|
||||
private String password;
|
||||
private Type type;
|
||||
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
public Integer getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
public void setPort(Integer port) {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public String getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
public void setUser(String user) {
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public Type getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(Type type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public boolean isEnable() {
|
||||
return enable;
|
||||
}
|
||||
|
||||
public void setEnable(boolean enable) {
|
||||
this.enable = enable;
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
SOCKS5, SOCKS4, HTTP
|
||||
}
|
||||
|
@ -16,9 +16,9 @@ public class TelegramBotConfig {
|
||||
|
||||
private String username;
|
||||
private String token;
|
||||
private String webHookUrl;
|
||||
|
||||
private ProxyConfig proxyConfig;
|
||||
private WebhookConfig webhookConfig;
|
||||
|
||||
public TelegramBotConfig(String username, String token) {
|
||||
this.username = username;
|
||||
|
@ -0,0 +1,15 @@
|
||||
package dev.struchkov.godfather.telegram.domain.config;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class WebhookConfig {
|
||||
|
||||
private boolean enable = false;
|
||||
private String rootUrl;
|
||||
private String path;
|
||||
private String accessKey;
|
||||
|
||||
}
|
@ -12,38 +12,49 @@ import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
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;
|
||||
|
||||
@Slf4j
|
||||
@Path("callback")
|
||||
public class WebhookController {
|
||||
|
||||
private final String pathKey;
|
||||
private final String accessKey;
|
||||
private final EventDistributor eventDistributor;
|
||||
|
||||
public WebhookController(TelegramBotConfig telegramBotConfig, EventDistributor eventDistributor) {
|
||||
this.accessKey = telegramBotConfig.getWebhookConfig().getAccessKey();
|
||||
this.eventDistributor = eventDistributor;
|
||||
this.pathKey = telegramBotConfig.getWebHookUrl().split("callback")[1];
|
||||
this.pathKey = telegramBotConfig.getWebhookConfig().getPath();
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/{botPath}")
|
||||
@Path("{webhookPath}")
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public Uni<Response> updateReceived(@PathParam("botPath") String botPath, Update update) {
|
||||
public Uni<Response> updateReceived(@PathParam("webhookPath") String botPath, @QueryParam("webhookAccessKey") String webhookAccessKey, Update update) {
|
||||
return Uni.createFrom().voidItem()
|
||||
// .onItem().invoke(() -> isTrue(pathKey.equals(botPath), accessException("В доступе отказано!")))
|
||||
.onItem().invoke(() -> {
|
||||
isTrue(pathKey.equals(botPath), accessException("В доступе отказано!"));
|
||||
isTrue(accessKey.equals(webhookAccessKey), accessException("В доступе отказано!"));
|
||||
})
|
||||
.onItem().ignore().andSwitchTo(() -> eventDistributor.processing(update))
|
||||
.onItem().transform(ignore -> Response.ok().build());
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{botPath}")
|
||||
@Path("{webhookPath}")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public Uni<String> testReceived(@PathParam("botPath") String botPath) {
|
||||
public Uni<String> testReceived(@PathParam("webhookPath") String botPath, @QueryParam("webhookAccessKey") String webhookAccessKey) {
|
||||
return Uni.createFrom().voidItem()
|
||||
// .onItem().invoke(() -> isTrue(pathKey.equals(botPath), accessException("В доступе отказано!")))
|
||||
.onItem().invoke(() -> {
|
||||
isTrue(pathKey.equals(botPath), accessException("В доступе отказано!"));
|
||||
isTrue(accessKey.equals(webhookAccessKey), accessException("В доступе отказано!"));
|
||||
})
|
||||
.onItem().transform(ignore -> "Hi there " + botPath + "!");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user