@@ -13,6 +13,7 @@ import com.github.smaugfm.mono.MonoApi.Companion.setupWebhookAll
13
13
import com.github.smaugfm.settings.Settings
14
14
import com.github.smaugfm.telegram.TelegramApi
15
15
import com.github.smaugfm.telegram.handlers.TelegramHandler
16
+ import com.github.smaugfm.telegram.handlers.errorHandler
16
17
import com.github.smaugfm.ynab.YnabApi
17
18
import com.github.smaugfm.ynab.YnabHandler
18
19
import kotlinx.coroutines.asCoroutineDispatcher
@@ -25,7 +26,7 @@ import java.util.concurrent.Executors
25
26
private val logger = KotlinLogging .logger {}
26
27
27
28
class YnabMono : CliktCommand () {
28
- val dontSetWebhook by option().flag(default = false )
29
+ val setWebhook by option().flag(default = true )
29
30
val monoWebhookUrl by option().convert { URI (it) }.required()
30
31
val monoWebhookPort by option().int()
31
32
val settings by option(" --settings" ).convert { Settings .load(Paths .get(it)) }.default(Settings .loadDefault())
@@ -38,56 +39,53 @@ class YnabMono : CliktCommand() {
38
39
" ${this ::settings.name} : $settings \n\t " +
39
40
" ${this ::monoWebhookUrl.name} : $monoWebhookUrl \n\t " +
40
41
" ${this ::monoWebhookPort.name} : $monoWebhookPort \n\t " +
41
- " ${this ::dontSetWebhook .name} : $dontSetWebhook " ,
42
+ " ${this ::setWebhook .name} : $setWebhook " ,
42
43
)
43
44
44
- try {
45
- runBlocking {
46
- val monoApis = settings.monoTokens.map(::MonoApi )
47
- logger.info(" Created monobank apis. " )
48
- val telegramApi = TelegramApi (
49
- settings.telegramBotUsername,
50
- settings.telegramBotToken,
51
- )
52
- logger.info(" Created telegram api." )
53
- val ynabApi = YnabApi (settings.ynabToken, settings.ynabBudgetId)
54
- logger.info(" Created ynab api." )
45
+ runBlocking {
46
+ val monoApis = settings.monoTokens.map(::MonoApi )
47
+ logger.info(" Created monobank apis. " )
48
+ val telegramApi = TelegramApi (
49
+ settings.telegramBotUsername,
50
+ settings.telegramBotToken,
51
+ )
52
+ logger.info(" Created telegram api." )
53
+ val ynabApi = YnabApi (settings.ynabToken, settings.ynabBudgetId)
54
+ logger.info(" Created ynab api." )
55
55
56
- if (! dontSetWebhook ) {
57
- monoApis.setupWebhookAll(monoWebhookUrl, monoWebhookPort ? : monoWebhookUrl.port )
58
- logger.info( " Mono webhook setup successful. $ monoWebhookUrl" )
59
- } else {
60
- logger.info(" Skipping mono webhook setup." )
61
- }
56
+ if (setWebhook ) {
57
+ logger.info( " Setting up mono webhooks. " )
58
+ monoApis.setupWebhookAll(monoWebhookUrl, monoWebhookPort ? : monoWebhookUrl.port )
59
+ } else {
60
+ logger.info(" Skipping mono webhook setup." )
61
+ }
62
62
63
- val dispatcher = EventDispatcher (
64
- YnabHandler (ynabApi, settings.mappings),
65
- TelegramHandler (telegramApi, settings.mappings)
66
- )
63
+ val dispatcher = EventDispatcher (
64
+ { dispatcher, _, _ ->
65
+ errorHandler(dispatcher, settings.mappings)
66
+ },
67
+ YnabHandler (ynabApi, settings.mappings),
68
+ TelegramHandler (telegramApi, settings.mappings)
69
+ )
67
70
68
- logger.info(" Events dispatcher created." )
71
+ logger.info(" Events dispatcher created." )
69
72
70
- val telegramServerJob = telegramApi
71
- .startServer(serversCoroutinesContext, dispatcher)
73
+ val telegramServerJob = telegramApi
74
+ .startServer(serversCoroutinesContext, dispatcher)
72
75
73
- logger.info(" Telegram bot started." )
74
- val monoWebhookServer =
75
- MonoApi .startMonoWebhookServerAsync(
76
- serversCoroutinesContext,
77
- monoWebhookUrl,
78
- monoWebhookPort ? : monoWebhookUrl.port,
79
- dispatcher
80
- )
81
- logger.info(" Mono webhook listener started." )
82
- logger.info(" Setup completed. Listening...\n " )
76
+ logger.info(" Telegram bot started." )
77
+ val monoWebhookServer =
78
+ MonoApi .startMonoWebhookServerAsync(
79
+ serversCoroutinesContext,
80
+ monoWebhookUrl,
81
+ monoWebhookPort ? : monoWebhookUrl.port,
82
+ dispatcher
83
+ )
84
+ logger.info(" Mono webhook listener started." )
85
+ logger.info(" Setup completed. Listening...\n " )
83
86
84
- telegramServerJob.join()
85
- monoWebhookServer.join()
86
- }
87
- } catch (e: Throwable ) {
88
- logger.error(e) {
89
- " Unhandled exception"
90
- }
87
+ telegramServerJob.join()
88
+ monoWebhookServer.join()
91
89
}
92
90
}
93
91
}
0 commit comments