server.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package main
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "io/ioutil"
  7. "log"
  8. "math/rand"
  9. "net/http"
  10. "time"
  11. )
  12. func alert(w http.ResponseWriter, req *http.Request) {
  13. buf, bodyErr := ioutil.ReadAll(req.Body)
  14. if bodyErr != nil {
  15. log.Print("bodyErr ", bodyErr.Error())
  16. http.Error(w, bodyErr.Error(), http.StatusInternalServerError)
  17. return
  18. }
  19. rdr1 := ioutil.NopCloser(bytes.NewBuffer(buf))
  20. log.Printf("BODY: %q", rdr1)
  21. }
  22. var count = 0
  23. type Sensor struct {
  24. Temperature int `json: "temperature""`
  25. Humidity int `json: "humidiy"`
  26. }
  27. var s = &Sensor{}
  28. func pullSrv(w http.ResponseWriter, req *http.Request) {
  29. buf, bodyErr := ioutil.ReadAll(req.Body)
  30. if bodyErr != nil {
  31. log.Print("bodyErr ", bodyErr.Error())
  32. http.Error(w, bodyErr.Error(), http.StatusInternalServerError)
  33. return
  34. } else {
  35. fmt.Println(string(buf))
  36. }
  37. if count%2 == 0 {
  38. rand.Seed(time.Now().UnixNano())
  39. s.Temperature = rand.Intn(100)
  40. s.Humidity = rand.Intn(100)
  41. }
  42. fmt.Printf("%v\n", s)
  43. count++
  44. sd, err := json.Marshal(s)
  45. if err != nil {
  46. fmt.Println(err)
  47. return
  48. } else {
  49. if _, e := fmt.Fprintf(w, "%s", sd); e != nil {
  50. fmt.Println(e)
  51. }
  52. }
  53. }
  54. func main() {
  55. http.Handle("/", http.FileServer(http.Dir("web")))
  56. http.HandleFunc("/alert", alert)
  57. http.HandleFunc("/pull", pullSrv)
  58. http.ListenAndServe(":9090", nil)
  59. }