summaryrefslogtreecommitdiffstats
path: root/server/duty.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/duty.go')
-rw-r--r--server/duty.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/server/duty.go b/server/duty.go
new file mode 100644
index 0000000..ae32ecb
--- /dev/null
+++ b/server/duty.go
@@ -0,0 +1,36 @@
+package main
+
+import (
+ "fmt"
+ "log"
+ "net/http"
+ "strconv"
+ "sync"
+)
+
+type DutyCycle float32
+
+type DutyCycleHandler struct {
+ mu sync.Mutex
+ dc DutyCycle
+}
+
+func (h *DutyCycleHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+ log.Println(r.Method, r.URL)
+
+ if r.Method != http.MethodPost {
+ w.WriteHeader(http.StatusMethodNotAllowed)
+ fmt.Fprintf(w, "invalid method: '%s'", r.Method)
+ return
+ }
+
+ dc, err := strconv.ParseFloat(r.URL.RawQuery, 32)
+ if err != nil {
+ badRequest(w, "invalid duty cycle: '%s'", r.URL.RawQuery)
+ return
+ }
+
+ h.mu.Lock()
+ defer h.mu.Unlock()
+ h.dc = DutyCycle(dc)
+}