minor refactor
Marco Andronaco andronacomarco@gmail.com
Sun, 10 Nov 2024 17:03:11 +0100
2 files changed,
44 insertions(+),
31 deletions(-)
M
notify.go
→
notify.go
@@ -32,6 +32,9 @@ SleepDuration time.Duration
telegramToken string chatID string threadID string + + sendMessageUrl = fmt.Sprintf("%s%s/sendMessage", baseUrl, telegramToken) + pinMessageUrl = fmt.Sprintf("%s%s/pinChatMessage", baseUrl, telegramToken) ) func sendPostRequest(url string, payload map[string]interface{}) (*http.Response, error) {@@ -55,18 +58,7 @@
return resp, nil } -func notifyTelegram(occurrence Occurrence, soft bool) error { - log.Println("Sending notification for occurrence", occurrence.ID) - var message string - if occurrence.Year != nil { - years := time.Now().Year() - int(*occurrence.Year) - message = fmt.Sprintf(msgFormatYear, occurrence.Day, occurrence.Month, *occurrence.Year, years, occurrence.Name, occurrence.Description) - } else { - message = fmt.Sprintf(msgFormat, occurrence.Day, occurrence.Month, occurrence.Name, occurrence.Description) - } - - url := fmt.Sprintf("%s%s/sendMessage", baseUrl, telegramToken) - +func sendTelegramMessage(message string) (messageID int, err error) { // Create the payload payload := map[string]interface{}{ "chat_id": chatID,@@ -77,63 +69,84 @@ "disable_notification": true,
} // Send the POST request - resp, err := sendPostRequest(url, payload) + resp, err := sendPostRequest(sendMessageUrl, payload) if err != nil { log.Printf("Failed to send notification: %v", err) - return err + return } defer resp.Body.Close() bodyBytes, err := io.ReadAll(resp.Body) if err != nil { log.Printf("Failed to read response body: %v", err) - return err + return } log.Printf("Notification sent: %s, Response: %s", message, string(bodyBytes)) // Decode the JSON response var r Response - if err := json.Unmarshal(bodyBytes, &r); err != nil { + err = json.Unmarshal(bodyBytes, &r) + if err != nil { log.Printf("Failed to decode response: %v", err) - return err + return } if !r.Ok { log.Printf("Telegram API returned an error: %v", r) - return fmt.Errorf("telegram API error: %v", r) + err = fmt.Errorf("telegram API error: %v", r) + return } - if soft { - return nil - } + return r.Result.MessageID, nil +} - msgId := r.Result.MessageID - +func pinTelegramMessage(messageID int) (err error) { // Prepare the request to pin the message - url = fmt.Sprintf("%s%s/pinChatMessage", baseUrl, telegramToken) - payload = map[string]interface{}{ + payload := map[string]interface{}{ "chat_id": chatID, - "message_id": msgId, + "message_id": messageID, "disable_notification": false, } // Send the POST request to pin the message - resp, err = sendPostRequest(url, payload) + resp, err := sendPostRequest(pinMessageUrl, payload) if err != nil { log.Printf("Failed to pin message: %v", err) return err } defer resp.Body.Close() - bodyBytes, err = io.ReadAll(resp.Body) + bodyBytes, err := io.ReadAll(resp.Body) if err != nil { log.Printf("Failed to read response body: %v", err) return err } - log.Printf("Message pinned: %s, Response: %s", message, string(bodyBytes)) - return nil + log.Printf("Message pinned: %d, Response: %s", messageID, string(bodyBytes)) + return +} + +func notifyTelegram(occurrence Occurrence, soft bool) error { + log.Println("Sending notification for occurrence", occurrence.ID) + var message string + if occurrence.Year != nil { + years := time.Now().Year() - int(*occurrence.Year) + message = fmt.Sprintf(msgFormatYear, occurrence.Day, occurrence.Month, *occurrence.Year, years, occurrence.Name, occurrence.Description) + } else { + message = fmt.Sprintf(msgFormat, occurrence.Day, occurrence.Month, occurrence.Name, occurrence.Description) + } + + if soft { + return nil + } + + msgId, err := sendTelegramMessage(message) + if err != nil { + return err + } + + return pinTelegramMessage(msgId) } func resetNotifications(notified_column string) (err error) {
M
templates/index.html
→
templates/index.html
@@ -117,7 +117,7 @@ </style>
</head> <body> - <h1>Ricorrenzes</h1> + <h1>Ricorrenze</h1> <table id="main-table"> <tr> <th data-field="name">Nome</th>