package handlers

import (
	"encoding/json"
	"github.com/gorilla/mux"
	"github.com/hunterlong/statping/core/integrations"
	"github.com/hunterlong/statping/types"
	"net/http"
)

func apiAllIntegrationsHandler(w http.ResponseWriter, r *http.Request) {
	integrations := integrations.Integrations
	returnJson(integrations, w, r)
}

func apiIntegrationViewHandler(w http.ResponseWriter, r *http.Request) {
	vars := mux.Vars(r)
	intgr, err := integrations.Find(vars["name"])
	if err != nil {
		sendErrorJson(err, w, r)
		return
	}
	returnJson(intgr.Get(), w, r)
}

func apiIntegrationHandler(w http.ResponseWriter, r *http.Request) {
	vars := mux.Vars(r)
	intgr, err := integrations.Find(vars["name"])
	if err != nil {
		sendErrorJson(err, w, r)
		return
	}

	var intJson *types.Integration
	decoder := json.NewDecoder(r.Body)
	if err := decoder.Decode(&intJson); err != nil {
		sendErrorJson(err, w, r)
		return
	}

	integration := intgr.Get()
	integration.Enabled = intJson.Enabled
	integration.Fields = intJson.Fields

	if err := integrations.Update(integration); err != nil {
		sendErrorJson(err, w, r)
		return
	}

	list, err := intgr.List()
	if err != nil {
		sendErrorJson(err, w, r)
		return
	}
	returnJson(list, w, r)
}