Implement Webhook without server
This commit is contained in:
parent
db8aa6ac3e
commit
9cb206b14b
|
@ -0,0 +1,55 @@
|
||||||
|
package org.telegram.telegrambots.updatesreceivers;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.telegram.telegrambots.meta.api.methods.BotApiMethod;
|
||||||
|
import org.telegram.telegrambots.meta.api.objects.Update;
|
||||||
|
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
|
||||||
|
import org.telegram.telegrambots.meta.exceptions.TelegramApiValidationException;
|
||||||
|
import org.telegram.telegrambots.meta.generics.Webhook;
|
||||||
|
import org.telegram.telegrambots.meta.generics.WebhookBot;
|
||||||
|
|
||||||
|
import java.util.NoSuchElementException;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class ServerlessWebhook implements Webhook {
|
||||||
|
|
||||||
|
private final ConcurrentHashMap<String, WebhookBot> callbacks = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
public BotApiMethod<?> updateReceived(String botPath, Update update) throws TelegramApiValidationException {
|
||||||
|
if (callbacks.containsKey(botPath)) {
|
||||||
|
try {
|
||||||
|
BotApiMethod<?> response = callbacks.get(botPath).onWebhookUpdateReceived(update);
|
||||||
|
if (response != null) {
|
||||||
|
response.validate();
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
} catch (TelegramApiValidationException e) {
|
||||||
|
log.error(e.getLocalizedMessage(), e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new NoSuchElementException(String.format("Callback '%s' not exist", botPath));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void startServer() throws TelegramApiException {
|
||||||
|
// Do nothing, because there is no abstraction for webhook without server
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerWebhook(WebhookBot callback) {
|
||||||
|
callbacks.putIfAbsent(callback.getBotPath(), callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setInternalUrl(String internalUrl) {
|
||||||
|
throw new UnsupportedOperationException("Not implemented for Serverless Webhook");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setKeyStore(String keyStore, String keyStorePassword) throws TelegramApiException {
|
||||||
|
throw new UnsupportedOperationException("Not implemented for Serverless Webhook");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user