statping/handlers/integrations.go

54 lines
1.1 KiB
Go
Raw Normal View History

2020-01-03 06:10:25 +00:00
package handlers
import (
2020-02-01 03:53:00 +00:00
"encoding/json"
2020-01-03 06:10:25 +00:00
"github.com/gorilla/mux"
2020-03-04 10:29:00 +00:00
"github.com/hunterlong/statping/types/integrations"
2020-01-03 06:10:25 +00:00
"net/http"
)
2020-03-04 10:29:00 +00:00
func findIntegration(r *http.Request) (*integrations.Integration, string, error) {
vars := mux.Vars(r)
name := vars["name"]
intgr, err := integrations.Find(name)
if err != nil {
return nil, "", err
}
return intgr, name, nil
}
2020-01-03 06:10:25 +00:00
func apiAllIntegrationsHandler(w http.ResponseWriter, r *http.Request) {
2020-03-04 10:29:00 +00:00
inte := integrations.All()
returnJson(inte, w, r)
2020-01-03 06:10:25 +00:00
}
2020-02-01 03:53:00 +00:00
func apiIntegrationViewHandler(w http.ResponseWriter, r *http.Request) {
2020-03-04 10:29:00 +00:00
intgr, _, err := findIntegration(r)
2020-02-01 03:53:00 +00:00
if err != nil {
sendErrorJson(err, w, r)
return
2020-01-03 06:10:25 +00:00
}
2020-03-04 10:29:00 +00:00
returnJson(intgr, w, r)
2020-02-01 03:53:00 +00:00
}
2020-01-03 06:10:25 +00:00
2020-02-01 03:53:00 +00:00
func apiIntegrationHandler(w http.ResponseWriter, r *http.Request) {
2020-03-04 10:29:00 +00:00
intgr, _, err := findIntegration(r)
2020-01-03 06:10:25 +00:00
if err != nil {
sendErrorJson(err, w, r)
return
}
2020-02-01 03:53:00 +00:00
decoder := json.NewDecoder(r.Body)
2020-03-04 10:29:00 +00:00
if err := decoder.Decode(&intgr); err != nil {
2020-02-01 03:53:00 +00:00
sendErrorJson(err, w, r)
return
}
2020-03-04 10:29:00 +00:00
if err := intgr.Update(); err != nil {
2020-02-01 03:53:00 +00:00
sendErrorJson(err, w, r)
return
}
2020-03-04 10:29:00 +00:00
returnJson(intgr, w, r)
2020-01-03 06:10:25 +00:00
}