From 40ded2435b4f1fd9604ebab3f7619bdf192baf55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Brod=C3=A9n?= Date: Fri, 9 Feb 2024 15:08:31 +0100 Subject: [PATCH] Fix how to update notification --- api/notifications.go | 78 ++++++++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 31 deletions(-) diff --git a/api/notifications.go b/api/notifications.go index 3489836..12ab273 100644 --- a/api/notifications.go +++ b/api/notifications.go @@ -1,17 +1,19 @@ package api import ( - "errors" "fmt" "log" "strconv" ) func (api *API) CreateNotification(instanceID int, params map[string]interface{}) (map[string]interface{}, error) { - data := make(map[string]interface{}) - failed := make(map[string]interface{}) - log.Printf("[DEBUG] go-api::notification::create instance ID: %v, params: %v", instanceID, params) - path := fmt.Sprintf("/api/instances/%d/alarms/recipients", instanceID) + var ( + data map[string]interface{} + failed map[string]interface{} + path = fmt.Sprintf("/api/instances/%d/alarms/recipients", instanceID) + ) + + log.Printf("[DEBUG] go-api::notification::create path: %s", path) response, err := api.sling.New().Post(path).BodyJSON(params).Receive(&data, &failed) log.Printf("[DEBUG] go-api::notification::create data: %v", data) @@ -19,26 +21,27 @@ func (api *API) CreateNotification(instanceID int, params map[string]interface{} return nil, err } if response.StatusCode != 201 { - return nil, fmt.Errorf("CreateNotification failed, status: %v, message: %s", response.StatusCode, failed) + return nil, fmt.Errorf("create notification failed, status: %d, message: %s", + response.StatusCode, failed) } if v, ok := data["id"]; ok { data["id"] = strconv.FormatFloat(v.(float64), 'f', 0, 64) - log.Printf("[DEBUG] go-api::notification::create id set: %v", data["id"]) } else { - msg := fmt.Sprintf("go-api::notification::create Invalid notification identifier: %v", data["id"]) - log.Printf("[ERROR] %s", msg) - return nil, errors.New(msg) + return nil, fmt.Errorf("create notification invalid identifier: %v", data["id"]) } return data, err } func (api *API) ReadNotification(instanceID int, recipientID string) (map[string]interface{}, error) { - data := make(map[string]interface{}) - failed := make(map[string]interface{}) - log.Printf("[DEBUG] go-api::notification::read instance ID: %v, recipient ID: %v", instanceID, recipientID) - path := fmt.Sprintf("/api/instances/%v/alarms/recipients/%v", instanceID, recipientID) + var ( + data map[string]interface{} + failed map[string]interface{} + path = fmt.Sprintf("/api/instances/%d/alarms/recipients/%s", instanceID, recipientID) + ) + + log.Printf("[DEBUG] go-api::notification::read path: %s", path) response, err := api.sling.New().Path(path).Receive(&data, &failed) log.Printf("[DEBUG] go-api::notification::read data: %v", data) @@ -46,17 +49,21 @@ func (api *API) ReadNotification(instanceID int, recipientID string) (map[string return nil, err } if response.StatusCode != 200 { - return nil, fmt.Errorf("ReadNotification failed, status: %v, message: %s", response.StatusCode, failed) + return nil, fmt.Errorf("read notification failed, status: %v, message: %s", + response.StatusCode, failed) } return data, err } func (api *API) ReadNotifications(instanceID int) ([]map[string]interface{}, error) { - var data []map[string]interface{} - failed := make(map[string]interface{}) - log.Printf("[DEBUG] go-api::ReadNotifications::read instance ID: %v", instanceID) - path := fmt.Sprintf("/api/instances/%d/alarms/recipients", instanceID) + var ( + data []map[string]interface{} + failed map[string]interface{} + path = fmt.Sprintf("/api/instances/%d/alarms/recipients", instanceID) + ) + + log.Printf("[DEBUG] go-api::ReadNotifications::read path: %s", path) response, err := api.sling.New().Path(path).Receive(&data, &failed) log.Printf("[DEBUG] go-api::ReadNotifications::read data: %v", data) @@ -64,33 +71,42 @@ func (api *API) ReadNotifications(instanceID int) ([]map[string]interface{}, err return nil, err } if response.StatusCode != 200 { - return nil, fmt.Errorf("ReadNotifications failed, status: %v, message: %s", response.StatusCode, failed) + return nil, fmt.Errorf("read notification failed, status: %d, message: %s", + response.StatusCode, failed) } return data, err } -func (api *API) UpdateNotification(instanceID int, params map[string]interface{}) error { - failed := make(map[string]interface{}) - log.Printf("[DEBUG] go-api::notification::update instance id: %v, params: %v", instanceID, params) - path := fmt.Sprintf("/api/instances/%d/alarms/recipients/%v", instanceID, params["id"]) +func (api *API) UpdateNotification(instanceID int, recipientID string, params map[string]interface{}) error { + var ( + failed map[string]interface{} + path = fmt.Sprintf("/api/instances/%d/alarms/recipients/%s", instanceID, recipientID) + ) + + log.Printf("[DEBUG] go-api::notification::update path: %s", path) response, err := api.sling.New().Put(path).BodyJSON(params).Receive(nil, &failed) if response.StatusCode != 200 { - return fmt.Errorf("UpdateNotification failed, status: %v, message: %s", response.StatusCode, failed) + return fmt.Errorf("update notification failed, status: %d, message: %s", + response.StatusCode, failed) } return err } -func (api *API) DeleteNotification(instanceID int, params map[string]interface{}) error { - failed := make(map[string]interface{}) - log.Printf("[DEBUG] go-api::notification::delete instance id: %v, params: %v", instanceID, params) - path := fmt.Sprintf("/api/instances/%v/alarms/recipients/%v", instanceID, params["id"]) - response, err := api.sling.New().Delete(path).BodyJSON(params).Receive(nil, &failed) +func (api *API) DeleteNotification(instanceID int, recipientID string) error { + var ( + failed map[string]interface{} + path = fmt.Sprintf("/api/instances/%d/alarms/recipients/%s", instanceID, recipientID) + ) + + log.Printf("[DEBUG] go-api::notification::delete path: %s", path) + response, err := api.sling.New().Delete(path).Receive(nil, &failed) if response.StatusCode != 204 { - return fmt.Errorf("DeleteNotification failed, status: %v, message: %s", response.StatusCode, failed) + return fmt.Errorf("delete notification failed, status: %d, message: %s", + response.StatusCode, failed) } return err