Files
openpdu/source/webjson.go
2019-10-27 22:56:24 +01:00

130 lines
2.5 KiB
Go

package main
import (
"fmt"
"net/http"
"strconv"
"gopkg.in/macaron.v1"
)
func jsonStatus(ctx *macaron.Context) {
out := [][]string{}
for num, o := range TheConfig.Outlets {
pwr, _ := o.PowerStatus()
pwrstr := "0"
if pwr {
pwrstr = "1"
}
out = append(out, []string{fmt.Sprintf("%d", num), o.Name, pwrstr})
}
ctx.JSON(http.StatusOK, Dictionary{
"data": out,
})
}
func jsonOutletPowerToggle(ctx *macaron.Context) {
var outletnum64 uint64
var err error
outletnum64, err = strconv.ParseUint(ctx.Params(":outlet"), 10, 32)
if err != nil {
ctx.JSON(http.StatusOK, Dictionary{
"data": "error",
"error": "No outlet specified",
})
}
outletnum := uint(outletnum64)
outlet, exists := TheConfig.Outlets[outletnum]
if !exists {
// error: outlet doesn't exists
ctx.JSON(http.StatusOK, Dictionary{
"data": "error",
"error": "Outlet doesn't exists",
})
}
err = outlet.PowerToggle()
if err != nil {
ctx.JSON(http.StatusOK, Dictionary{
"data": "error",
"error": "Can't toggle power",
})
}
ctx.JSON(http.StatusOK, Dictionary{
"data": "ok",
})
}
func jsonOutletPowerON(ctx *macaron.Context) {
var outletnum64 uint64
var err error
outletnum64, err = strconv.ParseUint(ctx.Params(":outlet"), 10, 32)
if err != nil {
ctx.JSON(http.StatusOK, Dictionary{
"data": "error",
"error": "No outlet specified",
})
}
outletnum := uint(outletnum64)
outlet, exists := TheConfig.Outlets[outletnum]
if !exists {
// error: outlet doesn't exists
ctx.JSON(http.StatusOK, Dictionary{
"data": "error",
"error": "Outlet doesn't exists",
})
}
err = outlet.PowerON()
if err != nil {
ctx.JSON(http.StatusOK, Dictionary{
"data": "error",
"error": "Can't toggle power",
})
}
ctx.JSON(http.StatusOK, Dictionary{
"data": "ok",
})
}
func jsonOutletPowerOFF(ctx *macaron.Context) {
var outletnum64 uint64
var err error
outletnum64, err = strconv.ParseUint(ctx.Params(":outlet"), 10, 32)
if err != nil {
ctx.JSON(http.StatusOK, Dictionary{
"data": "error",
"error": "No outlet specified",
})
}
outletnum := uint(outletnum64)
outlet, exists := TheConfig.Outlets[outletnum]
if !exists {
// error: outlet doesn't exists
ctx.JSON(http.StatusOK, Dictionary{
"data": "error",
"error": "Outlet doesn't exists",
})
}
err = outlet.PowerOFF()
if err != nil {
ctx.JSON(http.StatusOK, Dictionary{
"data": "error",
"error": "Can't toggle power",
})
}
ctx.JSON(http.StatusOK, Dictionary{
"data": "ok",
})
}