statping/handlers/integrations.go

54 lines
1.1 KiB
Go

package handlers
import (
"encoding/json"
"github.com/gorilla/mux"
"github.com/hunterlong/statping/types/integrations"
"net/http"
)
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
}
func apiAllIntegrationsHandler(w http.ResponseWriter, r *http.Request) {
inte := integrations.All()
returnJson(inte, w, r)
}
func apiIntegrationViewHandler(w http.ResponseWriter, r *http.Request) {
intgr, _, err := findIntegration(r)
if err != nil {
sendErrorJson(err, w, r)
return
}
returnJson(intgr, w, r)
}
func apiIntegrationHandler(w http.ResponseWriter, r *http.Request) {
intgr, _, err := findIntegration(r)
if err != nil {
sendErrorJson(err, w, r)
return
}
decoder := json.NewDecoder(r.Body)
if err := decoder.Decode(&intgr); err != nil {
sendErrorJson(err, w, r)
return
}
if err := intgr.Update(); err != nil {
sendErrorJson(err, w, r)
return
}
returnJson(intgr, w, r)
}