diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d9f8f33 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.exe +.idea/* \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..95ec7d4 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# gateway-server +This is a commit of skeleton code for the gateway server \ No newline at end of file diff --git a/data-types.go b/data-types.go new file mode 100644 index 0000000..580dff5 --- /dev/null +++ b/data-types.go @@ -0,0 +1,6 @@ +package main + +type StampedReading struct { + Timestamp int + Value interface{} +} diff --git a/gateway.go b/gateway.go new file mode 100644 index 0000000..3c6e063 --- /dev/null +++ b/gateway.go @@ -0,0 +1,27 @@ +package main + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/http" +) + +func main() { + http.HandleFunc("/data", dataHandler) + if err := http.ListenAndServe(":8081", nil); err != nil { + fmt.Printf("Error serving 8081: %v", err) + } +} + +func dataHandler(w http.ResponseWriter, r *http.Request) { + fmt.Printf("Got data from: %+v at %v\n", r.Header.Get("uuid"), r.Header.Get("time")) + body, _ := ioutil.ReadAll(r.Body) + var data map[string][]StampedReading + if err := json.Unmarshal(body, &data); err != nil { + fmt.Printf("Error unmarshalling body: %v\n", err) + } else { + fmt.Printf("Data received: %v\n", data) + } + w.WriteHeader(200) +}