start method
Apply webhook configuration on Telegram API, and start the webhook server.
Implementation
@override
Future<void> start() async {
if (await setWebhook()) {
_server.listen((io.HttpRequest request) {
var isPostRequest = request.method == 'POST';
var isAuthorised = secretToken == null ||
secretToken ==
request.headers.value('X-Telegram-Bot-Api-Secret-Token');
if (isPostRequest && isAuthorised) {
request.cast<List<int>>().transform(utf8.decoder).join().then((data) {
emitUpdate(Update.fromJson(jsonDecode(data)));
request.response
..write(jsonEncode({'ok': true}))
..close();
});
} else {
request.response
..statusCode = io.HttpStatus.methodNotAllowed
..write(jsonEncode({'ok': false}))
..close();
}
});
} else {
throw WebhookException(
'Telegram API returns an error while attempting to set the webhook.');
}
}