router.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package main
  2. import (
  3. "sparrow/pkg/models"
  4. jwt "github.com/dgrijalva/jwt-go"
  5. "github.com/go-martini/martini"
  6. "github.com/martini-contrib/binding"
  7. "github.com/xyproto/permissionsql"
  8. )
  9. // martini router
  10. func route(m *martini.ClassicMartini, perm *permissionsql.Permissions) {
  11. handler := New(Config{
  12. ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) {
  13. return []byte(SignedString), nil
  14. },
  15. SigningMethod: jwt.SigningMethodHS256,
  16. })
  17. // find a device by key
  18. m.Get("/application/v1/device/info", GetDeviceInfoByKey)
  19. // find a device by identifier
  20. m.Get("/application/v1/devices/:identifier/info", ApplicationAuthOnDeviceIdentifer, GetDeviceInfoByIdentifier)
  21. // get devie current status
  22. m.Get("/application/v1/devices/:identifier/status/current",
  23. ApplicationAuthOnDeviceIdentifer, CheckDeviceOnline, CheckProductConfig,
  24. GetDeviceCurrentStatus)
  25. // get devie latest status
  26. m.Get("/application/v1/devices/:identifier/status/latest",
  27. ApplicationAuthOnDeviceIdentifer, CheckDeviceOnline, CheckProductConfig,
  28. GetDeviceLatestStatus)
  29. // set device status
  30. m.Put("/application/v1/devices/:identifier/status",
  31. ApplicationAuthOnDeviceIdentifer, CheckDeviceOnline, CheckProductConfig,
  32. SetDeviceStatus)
  33. // send a command to device
  34. m.Post("/application/v1/devices/:identifier/commands",
  35. ApplicationAuthOnDeviceIdentifer, CheckDeviceOnline, CheckProductConfig,
  36. SendCommandToDevice)
  37. // and a rule to device
  38. m.Post("/application/v1/devices/:identifier/rules",
  39. ApplicationAuthOnDeviceIdentifer, CheckDeviceIdentifier,
  40. AddRule)
  41. // user login
  42. m.Post("/api/v1/login", binding.Bind(models.LoginRequest{}),
  43. UserLogin)
  44. // user register
  45. m.Post("/api/v1/reg", binding.Bind(models.Reqrequest{}),
  46. UserRegister)
  47. // user api group
  48. // jwt check and pass UserToken
  49. m.Group("/api/v1/user", func(r martini.Router) {
  50. // 修改密码
  51. r.Post("/modifypass", ModifyPassword)
  52. }, handler.Serve)
  53. }