31 lines
627 B
Go
31 lines
627 B
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
"net/http"
|
|
)
|
|
|
|
func alertReceiver(w http.ResponseWriter, r *http.Request) {
|
|
cfg := LoadConfig()
|
|
if r.Method != http.MethodPost {
|
|
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
|
|
body, err := io.ReadAll(io.LimitReader(r.Body, 1<<20))
|
|
if err != nil {
|
|
http.Error(w, "Payload exceeded maximum size. Are you really sending alerts?", http.StatusBadRequest)
|
|
return
|
|
}
|
|
defer r.Body.Close()
|
|
|
|
if len(body) == 0 {
|
|
http.Error(w, "Empty payload", http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
payload := ParseAlert(body)
|
|
publish := sendAlerts(cfg, payload)
|
|
check(publish)
|
|
|
|
}
|