Skip to content

Commit fca0b01

Browse files
authored
Update notification to use recipient ID parameter (#45)
### WHY are these changes introduced? When updating the notification recipient, we previously used the params to identify the recipient. Make it more clear and use recipient ID input parameter instead. ### WHAT is this pull request doing? - Adds recipientID as input parameter for update and delete - Cleans up the code
1 parent c716948 commit fca0b01

File tree

1 file changed

+47
-31
lines changed

1 file changed

+47
-31
lines changed

api/notifications.go

Lines changed: 47 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,112 @@
11
package api
22

33
import (
4-
"errors"
54
"fmt"
65
"log"
76
"strconv"
87
)
98

109
func (api *API) CreateNotification(instanceID int, params map[string]interface{}) (map[string]interface{}, error) {
11-
data := make(map[string]interface{})
12-
failed := make(map[string]interface{})
13-
log.Printf("[DEBUG] go-api::notification::create instance ID: %v, params: %v", instanceID, params)
14-
path := fmt.Sprintf("/api/instances/%d/alarms/recipients", instanceID)
10+
var (
11+
data map[string]interface{}
12+
failed map[string]interface{}
13+
path = fmt.Sprintf("/api/instances/%d/alarms/recipients", instanceID)
14+
)
15+
16+
log.Printf("[DEBUG] go-api::notification::create path: %s", path)
1517
response, err := api.sling.New().Post(path).BodyJSON(params).Receive(&data, &failed)
1618
log.Printf("[DEBUG] go-api::notification::create data: %v", data)
1719

1820
if err != nil {
1921
return nil, err
2022
}
2123
if response.StatusCode != 201 {
22-
return nil, fmt.Errorf("CreateNotification failed, status: %v, message: %s", response.StatusCode, failed)
24+
return nil, fmt.Errorf("create notification failed, status: %d, message: %s",
25+
response.StatusCode, failed)
2326
}
2427

2528
if v, ok := data["id"]; ok {
2629
data["id"] = strconv.FormatFloat(v.(float64), 'f', 0, 64)
27-
log.Printf("[DEBUG] go-api::notification::create id set: %v", data["id"])
2830
} else {
29-
msg := fmt.Sprintf("go-api::notification::create Invalid notification identifier: %v", data["id"])
30-
log.Printf("[ERROR] %s", msg)
31-
return nil, errors.New(msg)
31+
return nil, fmt.Errorf("create notification invalid identifier: %v", data["id"])
3232
}
3333

3434
return data, err
3535
}
3636

3737
func (api *API) ReadNotification(instanceID int, recipientID string) (map[string]interface{}, error) {
38-
data := make(map[string]interface{})
39-
failed := make(map[string]interface{})
40-
log.Printf("[DEBUG] go-api::notification::read instance ID: %v, recipient ID: %v", instanceID, recipientID)
41-
path := fmt.Sprintf("/api/instances/%v/alarms/recipients/%v", instanceID, recipientID)
38+
var (
39+
data map[string]interface{}
40+
failed map[string]interface{}
41+
path = fmt.Sprintf("/api/instances/%d/alarms/recipients/%s", instanceID, recipientID)
42+
)
43+
44+
log.Printf("[DEBUG] go-api::notification::read path: %s", path)
4245
response, err := api.sling.New().Path(path).Receive(&data, &failed)
4346
log.Printf("[DEBUG] go-api::notification::read data: %v", data)
4447

4548
if err != nil {
4649
return nil, err
4750
}
4851
if response.StatusCode != 200 {
49-
return nil, fmt.Errorf("ReadNotification failed, status: %v, message: %s", response.StatusCode, failed)
52+
return nil, fmt.Errorf("read notification failed, status: %v, message: %s",
53+
response.StatusCode, failed)
5054
}
5155

5256
return data, err
5357
}
5458

5559
func (api *API) ReadNotifications(instanceID int) ([]map[string]interface{}, error) {
56-
var data []map[string]interface{}
57-
failed := make(map[string]interface{})
58-
log.Printf("[DEBUG] go-api::ReadNotifications::read instance ID: %v", instanceID)
59-
path := fmt.Sprintf("/api/instances/%d/alarms/recipients", instanceID)
60+
var (
61+
data []map[string]interface{}
62+
failed map[string]interface{}
63+
path = fmt.Sprintf("/api/instances/%d/alarms/recipients", instanceID)
64+
)
65+
66+
log.Printf("[DEBUG] go-api::ReadNotifications::read path: %s", path)
6067
response, err := api.sling.New().Path(path).Receive(&data, &failed)
6168
log.Printf("[DEBUG] go-api::ReadNotifications::read data: %v", data)
6269

6370
if err != nil {
6471
return nil, err
6572
}
6673
if response.StatusCode != 200 {
67-
return nil, fmt.Errorf("ReadNotifications failed, status: %v, message: %s", response.StatusCode, failed)
74+
return nil, fmt.Errorf("read notification failed, status: %d, message: %s",
75+
response.StatusCode, failed)
6876
}
6977

7078
return data, err
7179
}
7280

73-
func (api *API) UpdateNotification(instanceID int, params map[string]interface{}) error {
74-
failed := make(map[string]interface{})
75-
log.Printf("[DEBUG] go-api::notification::update instance id: %v, params: %v", instanceID, params)
76-
path := fmt.Sprintf("/api/instances/%d/alarms/recipients/%v", instanceID, params["id"])
81+
func (api *API) UpdateNotification(instanceID int, recipientID string, params map[string]interface{}) error {
82+
var (
83+
failed map[string]interface{}
84+
path = fmt.Sprintf("/api/instances/%d/alarms/recipients/%s", instanceID, recipientID)
85+
)
86+
87+
log.Printf("[DEBUG] go-api::notification::update path: %s", path)
7788
response, err := api.sling.New().Put(path).BodyJSON(params).Receive(nil, &failed)
7889

7990
if response.StatusCode != 200 {
80-
return fmt.Errorf("UpdateNotification failed, status: %v, message: %s", response.StatusCode, failed)
91+
return fmt.Errorf("update notification failed, status: %d, message: %s",
92+
response.StatusCode, failed)
8193
}
8294

8395
return err
8496
}
8597

86-
func (api *API) DeleteNotification(instanceID int, params map[string]interface{}) error {
87-
failed := make(map[string]interface{})
88-
log.Printf("[DEBUG] go-api::notification::delete instance id: %v, params: %v", instanceID, params)
89-
path := fmt.Sprintf("/api/instances/%v/alarms/recipients/%v", instanceID, params["id"])
90-
response, err := api.sling.New().Delete(path).BodyJSON(params).Receive(nil, &failed)
98+
func (api *API) DeleteNotification(instanceID int, recipientID string) error {
99+
var (
100+
failed map[string]interface{}
101+
path = fmt.Sprintf("/api/instances/%d/alarms/recipients/%s", instanceID, recipientID)
102+
)
103+
104+
log.Printf("[DEBUG] go-api::notification::delete path: %s", path)
105+
response, err := api.sling.New().Delete(path).Receive(nil, &failed)
91106

92107
if response.StatusCode != 204 {
93-
return fmt.Errorf("DeleteNotification failed, status: %v, message: %s", response.StatusCode, failed)
108+
return fmt.Errorf("delete notification failed, status: %d, message: %s",
109+
response.StatusCode, failed)
94110
}
95111

96112
return err

0 commit comments

Comments
 (0)