assits.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package iot
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. )
  6. /*
  7. assits.go
  8. Author: tobychui
  9. This script handle assistant functions for iot devices.
  10. The function implement here should have no effect to the core operation of the iot hub nor the iot pipeline.
  11. */
  12. //Handle the set and get nickname of a particular IoT device
  13. func (m *Manager) HandleNickName(w http.ResponseWriter, r *http.Request) {
  14. opr, err := mv(r, "opr", true)
  15. if err != nil {
  16. sendErrorResponse(w, "Invalid operation mode")
  17. return
  18. }
  19. uuid, err := mv(r, "uuid", true)
  20. if err != nil {
  21. sendErrorResponse(w, "Invalid uuid given")
  22. return
  23. }
  24. //Check if the device with the given uuid exists
  25. deviceExist := false
  26. for _, dev := range m.cachedDeviceList {
  27. if dev.DeviceUUID == uuid {
  28. //Device found. Create a new object and make the pointer point to it
  29. deviceExist = true
  30. }
  31. }
  32. //Reject operation if device not exists
  33. if deviceExist == false {
  34. sendErrorResponse(w, "Target device UUID not exists")
  35. return
  36. }
  37. //Process the required operation
  38. if opr == "get" {
  39. if m.db.KeyExists("iot", uuid) {
  40. deviceNickname := ""
  41. err := m.db.Read("iot", uuid, &deviceNickname)
  42. if err != nil {
  43. sendErrorResponse(w, "Unable to read nickname from database")
  44. return
  45. }
  46. js, _ := json.Marshal(deviceNickname)
  47. sendJSONResponse(w, string(js))
  48. } else {
  49. sendErrorResponse(w, "Nickname not exists")
  50. }
  51. } else if opr == "set" {
  52. //Get name from paramter
  53. name, err := mv(r, "name", true)
  54. if err != nil {
  55. sendErrorResponse(w, "No nickname was given to the device")
  56. return
  57. }
  58. //Set the name in database
  59. err = m.db.Write("iot", uuid, name)
  60. if err != nil {
  61. sendErrorResponse(w, err.Error())
  62. return
  63. }
  64. sendOK(w)
  65. } else {
  66. sendErrorResponse(w, "Unknown operation mode")
  67. return
  68. }
  69. }