@@ -136,20 +136,16 @@ func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *alert.Alert, r
136136 if err != nil {
137137 return err
138138 }
139-
140139 if resolved {
141140 return provider .CloseTask (cfg , ep )
142141 }
143-
144142 // Replace placeholders
145143 name := strings .ReplaceAll (cfg .Name , "[ENDPOINT_GROUP]" , ep .Group )
146144 name = strings .ReplaceAll (name , "[ENDPOINT_NAME]" , ep .Name )
147-
148145 markdownContent := strings .ReplaceAll (cfg .MarkdownContent , "[ENDPOINT_GROUP]" , ep .Group )
149146 markdownContent = strings .ReplaceAll (markdownContent , "[ENDPOINT_NAME]" , ep .Name )
150147 markdownContent = strings .ReplaceAll (markdownContent , "[ALERT_DESCRIPTION]" , alert .GetDescription ())
151148 markdownContent = strings .ReplaceAll (markdownContent , "[RESULT_ERRORS]" , strings .Join (result .Errors , ", " ))
152-
153149 body := map [string ]interface {}{
154150 "name" : name ,
155151 "markdown_content" : markdownContent ,
@@ -160,7 +156,6 @@ func (provider *AlertProvider) Send(ep *endpoint.Endpoint, alert *alert.Alert, r
160156 if cfg .Priority != "none" {
161157 body ["priority" ] = priorityMap [cfg .Priority ]
162158 }
163-
164159 return provider .CreateTask (cfg , body )
165160}
166161
@@ -169,49 +164,41 @@ func (provider *AlertProvider) CreateTask(cfg *Config, body map[string]interface
169164 if err != nil {
170165 return err
171166 }
172-
173167 createURL := fmt .Sprintf ("%s/list/%s/task" , cfg .APIURL , cfg .ListID )
174168 req , err := http .NewRequest ("POST" , createURL , bytes .NewBuffer (jsonBody ))
175169 if err != nil {
176170 return err
177171 }
178172 req .Header .Set ("Content-Type" , "application/json" )
179173 req .Header .Set ("Authorization" , cfg .Token )
180-
181174 httpClient := client .GetHTTPClient (nil )
182175 resp , err := httpClient .Do (req )
183176 if err != nil {
184177 return err
185178 }
186179 defer resp .Body .Close ()
187-
188180 if resp .StatusCode >= 400 {
189181 return fmt .Errorf ("failed to create task, status: %d" , resp .StatusCode )
190182 }
191-
192183 return nil
193184}
194185
195186func (provider * AlertProvider ) CloseTask (cfg * Config , ep * endpoint.Endpoint ) error {
196187 fetchURL := fmt .Sprintf ("%s/list/%s/task?include_closed=false" , cfg .APIURL , cfg .ListID )
197-
198188 req , err := http .NewRequest ("GET" , fetchURL , nil )
199189 if err != nil {
200190 return err
201191 }
202192 req .Header .Set ("Authorization" , cfg .Token )
203-
204193 httpClient := client .GetHTTPClient (nil )
205194 resp , err := httpClient .Do (req )
206195 if err != nil {
207196 return err
208197 }
209198 defer resp .Body .Close ()
210-
211199 if resp .StatusCode >= 400 {
212200 return fmt .Errorf ("failed to fetch tasks, status: %d" , resp .StatusCode )
213201 }
214-
215202 var fetchResponse struct {
216203 Tasks []struct {
217204 ID string `json:"id"`
@@ -221,54 +208,45 @@ func (provider *AlertProvider) CloseTask(cfg *Config, ep *endpoint.Endpoint) err
221208 if err := json .NewDecoder (resp .Body ).Decode (& fetchResponse ); err != nil {
222209 return err
223210 }
224-
225211 var matchingTaskIDs []string
226212 for _ , task := range fetchResponse .Tasks {
227213 if strings .Contains (task .Name , ep .Group ) && strings .Contains (task .Name , ep .Name ) {
228214 matchingTaskIDs = append (matchingTaskIDs , task .ID )
229215 }
230216 }
231-
232217 if len (matchingTaskIDs ) == 0 {
233218 return fmt .Errorf ("no matching tasks found for %s:%s" , ep .Group , ep .Name )
234219 }
235-
236220 for _ , taskID := range matchingTaskIDs {
237221 if err := provider .UpdateTaskStatus (cfg , taskID , "closed" ); err != nil {
238222 return fmt .Errorf ("failed to close task %s: %v" , taskID , err )
239223 }
240224 }
241-
242225 return nil
243226}
244227
245228func (provider * AlertProvider ) UpdateTaskStatus (cfg * Config , taskID , status string ) error {
246229 updateURL := fmt .Sprintf ("%s/task/%s" , cfg .APIURL , taskID )
247230 body := map [string ]interface {}{"status" : status }
248-
249231 jsonBody , err := json .Marshal (body )
250232 if err != nil {
251233 return err
252234 }
253-
254235 req , err := http .NewRequest ("PUT" , updateURL , bytes .NewBuffer (jsonBody ))
255236 if err != nil {
256237 return err
257238 }
258239 req .Header .Set ("Content-Type" , "application/json" )
259240 req .Header .Set ("Authorization" , cfg .Token )
260-
261241 httpClient := client .GetHTTPClient (nil )
262242 resp , err := httpClient .Do (req )
263243 if err != nil {
264244 return err
265245 }
266246 defer resp .Body .Close ()
267-
268247 if resp .StatusCode >= 400 {
269248 return fmt .Errorf ("failed to update task %s, status: %d" , taskID , resp .StatusCode )
270249 }
271-
272250 return nil
273251}
274252
0 commit comments