router.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. // jwt handler
  12. handler := New(Config{
  13. ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) {
  14. return []byte(SignedString), nil
  15. },
  16. SigningMethod: jwt.SigningMethodHS256,
  17. })
  18. // find a device by key
  19. m.Get("/application/v1/device/info", GetDeviceInfoByKey)
  20. // find a device by identifier
  21. m.Get("/application/v1/devices/:identifier/info", ApplicationAuthOnDeviceIdentifer, GetDeviceInfoByIdentifier)
  22. // get devie current status
  23. m.Get("/application/v1/devices/:identifier/status/current",
  24. ApplicationAuthOnDeviceIdentifer, CheckDeviceOnline, CheckProductConfig,
  25. GetDeviceCurrentStatus)
  26. // get devie latest status
  27. m.Get("/application/v1/devices/:identifier/status/latest",
  28. ApplicationAuthOnDeviceIdentifer, CheckDeviceOnline, CheckProductConfig,
  29. GetDeviceLatestStatus)
  30. // set device status
  31. m.Put("/application/v1/devices/:identifier/status",
  32. ApplicationAuthOnDeviceIdentifer, CheckDeviceOnline, CheckProductConfig,
  33. SetDeviceStatus)
  34. // send a command to device
  35. m.Post("/application/v1/devices/:identifier/commands",
  36. ApplicationAuthOnDeviceIdentifer, CheckDeviceOnline, CheckProductConfig,
  37. SendCommandToDevice)
  38. // and a rule to device
  39. m.Post("/application/v1/devices/:identifier/rules",
  40. ApplicationAuthOnDeviceIdentifer, CheckDeviceIdentifier,
  41. AddRule)
  42. // user login
  43. m.Post("/api/v1/login", binding.Bind(models.LoginRequest{}),
  44. UserLogin)
  45. // user register
  46. m.Post("/api/v1/reg", binding.Bind(models.Reqrequest{}),
  47. UserRegister)
  48. // user api group
  49. // jwt check and pass UserToken
  50. m.Group("/api/v1/user", func(r martini.Router) {
  51. // user modify password api
  52. r.Post("/modifypass", ModifyPassword)
  53. // user add a product
  54. r.Post("/product", binding.Bind(models.Product{}), SaveProduct)
  55. // delete a product
  56. r.Delete("/product", binding.Bind(models.Product{}), DeleteProduct)
  57. // get products
  58. r.Get("/product", GetProducts)
  59. }, handler.Serve)
  60. }