handler.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "net/http"
  6. "strconv"
  7. )
  8. func httpHandle() {
  9. http.HandleFunc("/", IndexHandler)
  10. http.HandleFunc("/api/client/get", selectAllClientHandler)
  11. http.HandleFunc("/api/cpu/get", selectCPUPercentHandler)
  12. http.HandleFunc("/api/memory/get", selectMemoryHandler)
  13. }
  14. func cors(w http.ResponseWriter) {
  15. w.Header().Set("Access-Control-Allow-Origin", "*")
  16. w.Header().Add("Access-Control-Allow-Headers", "*")
  17. //w.Header().Set("content-type","application/json")
  18. }
  19. func IndexHandler(w http.ResponseWriter, r *http.Request) {
  20. cors(w)
  21. _, _ = fmt.Fprint(w, "Hello, world!")
  22. }
  23. func selectCPUPercentHandler(w http.ResponseWriter, r *http.Request) {
  24. cors(w)
  25. id := r.FormValue("id")
  26. t := r.FormValue("time")
  27. if t == "" {
  28. t = "0"
  29. }
  30. time, err := strconv.Atoi(t)
  31. if err != nil {
  32. _, _ = fmt.Fprint(w, "Bad params!")
  33. return
  34. }
  35. limit, err := strconv.Atoi(r.FormValue("limit"))
  36. if err != nil {
  37. _, _ = fmt.Fprint(w, "Bad params!")
  38. return
  39. }
  40. data, last, err := getCPUPercent(id, int64(time), limit)
  41. if err != nil {
  42. _, _ = fmt.Fprint(w, "Could not get data!")
  43. return
  44. }
  45. type result struct {
  46. Data []CPUPercentDB `json:"data"`
  47. Last int64 `json:"last"`
  48. }
  49. res := result{
  50. Data: *data,
  51. Last: last,
  52. }
  53. j, err := json.Marshal(res)
  54. if err != nil {
  55. _, _ = fmt.Fprint(w, "Could not get data!")
  56. return
  57. }
  58. w.Header().Set("content-type", "application/json")
  59. _, _ = fmt.Fprintf(w, "%s", j)
  60. }
  61. func selectMemoryHandler(w http.ResponseWriter, r *http.Request) {
  62. cors(w)
  63. id := r.FormValue("id")
  64. t := r.FormValue("time")
  65. if t == "" {
  66. t = "0"
  67. }
  68. time, err := strconv.Atoi(t)
  69. if err != nil {
  70. _, _ = fmt.Fprint(w, "Bad params!")
  71. return
  72. }
  73. limit, err := strconv.Atoi(r.FormValue("limit"))
  74. if err != nil {
  75. _, _ = fmt.Fprint(w, "Bad params!")
  76. return
  77. }
  78. data, last, err := getMemory(id, int64(time), limit)
  79. if err != nil {
  80. _, _ = fmt.Fprint(w, "Could not get data!")
  81. return
  82. }
  83. type result struct {
  84. Data []MemoryDB `json:"data"`
  85. Last int64 `json:"last"`
  86. }
  87. res := result{
  88. Data: *data,
  89. Last: last,
  90. }
  91. j, err := json.Marshal(res)
  92. if err != nil {
  93. _, _ = fmt.Fprint(w, "Could not get data!")
  94. return
  95. }
  96. w.Header().Set("content-type", "application/json")
  97. _, _ = fmt.Fprintf(w, "%s", j)
  98. }
  99. func selectAllClientHandler(w http.ResponseWriter, r *http.Request) {
  100. cors(w)
  101. data, err := getClient()
  102. if err != nil {
  103. fmt.Println(err)
  104. _, _ = fmt.Fprint(w, "Could not get data!")
  105. return
  106. }
  107. j, err := json.Marshal(data)
  108. if err != nil {
  109. _, _ = fmt.Fprint(w, "Could not get data!")
  110. return
  111. }
  112. w.Header().Set("content-type", "application/json")
  113. _, _ = fmt.Fprintf(w, "%s", j)
  114. }