wow: implement spaceapi
Change-Id: I4b9f08801ae37d2b85de9b089bf09731cfd7dbe6
diff --git a/personal/q3k/wow/lib.libsonnet b/personal/q3k/wow/lib.libsonnet
index 4a9517b..8828b49 100644
--- a/personal/q3k/wow/lib.libsonnet
+++ b/personal/q3k/wow/lib.libsonnet
@@ -9,7 +9,7 @@
prefix: "",
images: {
acore: "registry.k0.hswaw.net/q3k/azerothcore-wowtlk:1606950998",
- panel: "registry.k0.hswaw.net/q3k/panel:1607033741-f18a531f9b84c5b33653c8db5d64aaa0af337541",
+ panel: "registry.k0.hswaw.net/q3k/panel:1607075221-54d0e977e57cc2c8d949c3a7ecf2ff21abd9d143",
},
db: {
local mkConfig = function(name) {
diff --git a/personal/q3k/wow/panel/BUILD.bazel b/personal/q3k/wow/panel/BUILD.bazel
index 44162a4..743e3e2 100644
--- a/personal/q3k/wow/panel/BUILD.bazel
+++ b/personal/q3k/wow/panel/BUILD.bazel
@@ -7,6 +7,7 @@
srcs = [
"main.go",
"soap.go",
+ "spaceapi.go",
],
importpath = "code.hackerspace.pl/hscloud/personal/q3k/wow/panel",
visibility = ["//visibility:private"],
diff --git a/personal/q3k/wow/panel/main.go b/personal/q3k/wow/panel/main.go
index cd1f586..aefbd1a 100644
--- a/personal/q3k/wow/panel/main.go
+++ b/personal/q3k/wow/panel/main.go
@@ -115,6 +115,7 @@
http.HandleFunc("/setup", s.viewOauthSetup)
http.HandleFunc("/reset", s.viewReset)
http.HandleFunc("/logout", s.viewLogout)
+ http.HandleFunc("/spaceapi", s.viewSpaceAPI)
err = http.ListenAndServe(flagListen, nil)
if err != nil {
diff --git a/personal/q3k/wow/panel/spaceapi.go b/personal/q3k/wow/panel/spaceapi.go
new file mode 100644
index 0000000..94923d2
--- /dev/null
+++ b/personal/q3k/wow/panel/spaceapi.go
@@ -0,0 +1,35 @@
+package main
+
+import (
+ "encoding/json"
+ "net/http"
+)
+
+type PeopleNowPresent struct {
+ Names []string `json:"names"`
+ Value int `json:"value"`
+}
+
+type SpaceAPI struct {
+ Sensors struct {
+ PeopleNowPresent []PeopleNowPresent `json:"people_now_present"`
+ } `json:"sensors"`
+}
+
+func (s *server) viewSpaceAPI(w http.ResponseWriter, r *http.Request) {
+ res := &SpaceAPI{}
+
+ names := []string{}
+ for _, p := range s.online(r.Context()) {
+ names = append(names, p.Character)
+ }
+ res.Sensors.PeopleNowPresent = []PeopleNowPresent{
+ {
+ Names: names,
+ Value: len(names),
+ },
+ }
+
+ w.Header().Set("Content-Type", "application/json")
+ json.NewEncoder(w).Encode(res)
+}