From fcf046cbe8b7dc36824d8655bf74a908be61accd Mon Sep 17 00:00:00 2001 From: Jonah Date: Sat, 5 Mar 2022 21:44:11 +0100 Subject: [PATCH] feat(alerting): Add support for custom Telegram API URL (#257) --- README.md | 13 +++++++------ alerting/provider/telegram/telegram.go | 13 ++++++++++--- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index d6e7e3ed..0e32bd7f 100644 --- a/README.md +++ b/README.md @@ -643,12 +643,13 @@ Here's an example of what the notifications look like: ![Teams notifications](.github/assets/teams-alerts.png) #### Configuring Telegram alerts -| Parameter | Description | Default | -|:----------------------------------|:-------------------------------------------------------------------------------------------|:--------------| -| `alerting.telegram` | Configuration for alerts of type `telegram` | `{}` | -| `alerting.telegram.token` | Telegram Bot Token | Required `""` | -| `alerting.telegram.id` | Telegram User ID | Required `""` | -| `alerting.telegram.default-alert` | Default alert configuration.
See [Setting a default alert](#setting-a-default-alert) | N/A | +| Parameter | Description | Default | +|:----------------------------------|:-------------------------------------------------------------------------------------------|:---------------------------| +| `alerting.telegram` | Configuration for alerts of type `telegram` | `{}` | +| `alerting.telegram.token` | Telegram Bot Token | Required `""` | +| `alerting.telegram.id` | Telegram User ID | Required `""` | +| `alerting.telegram.api-url` | Telegram API URL | `https://api.telegram.org` | +| `alerting.telegram.default-alert` | Default alert configuration.
See [Setting a default alert](#setting-a-default-alert) | N/A | ```yaml alerting: diff --git a/alerting/provider/telegram/telegram.go b/alerting/provider/telegram/telegram.go index 54488d59..b3b1f4f0 100644 --- a/alerting/provider/telegram/telegram.go +++ b/alerting/provider/telegram/telegram.go @@ -11,10 +11,13 @@ import ( "github.com/TwiN/gatus/v3/core" ) +const defaultAPIURL = "https://api.telegram.org" + // AlertProvider is the configuration necessary for sending an alert using Telegram type AlertProvider struct { - Token string `yaml:"token"` - ID string `yaml:"id"` + Token string `yaml:"token"` + ID string `yaml:"id"` + APIURL string `yaml:"api-url"` // DefaultAlert is the default alert configuration to use for endpoints with an alert of the appropriate type DefaultAlert *alert.Alert `yaml:"default-alert,omitempty"` @@ -28,7 +31,11 @@ func (provider *AlertProvider) IsValid() bool { // Send an alert using the provider func (provider *AlertProvider) Send(endpoint *core.Endpoint, alert *alert.Alert, result *core.Result, resolved bool) error { buffer := bytes.NewBuffer([]byte(provider.buildRequestBody(endpoint, alert, result, resolved))) - request, err := http.NewRequest(http.MethodPost, fmt.Sprintf("https://api.telegram.org/bot%s/sendMessage", provider.Token), buffer) + apiURL := provider.APIURL + if apiURL == "" { + apiURL = defaultAPIURL + } + request, err := http.NewRequest(http.MethodPost, fmt.Sprintf("%s/bot%s/sendMessage", apiURL, provider.Token), buffer) if err != nil { return err }