doc.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package rest
  2. import (
  3. "log"
  4. "sync"
  5. "time"
  6. )
  7. type ExampleGroup struct {
  8. ID int64
  9. Name string
  10. }
  11. type ExamplePermission struct {
  12. ID int64
  13. Name string
  14. }
  15. type ExampleUser struct {
  16. ID int64
  17. Name string
  18. Token string
  19. Group *ExampleGroup
  20. Permissions []*ExamplePermission
  21. }
  22. // ExapmleApp реализует интерфейс IApplication, который отдает серверу параметры подключения,
  23. // секретный ключ шифрования токена авторизации,
  24. // а так же обрабатывает поступающие запросы
  25. type ExampleApp struct {
  26. addr string
  27. secret []byte
  28. users *sync.Map
  29. groups *sync.Map
  30. permissions *sync.Map
  31. }
  32. func (s *ExampleApp) Addr() string {
  33. return s.addr
  34. }
  35. func (s *ExampleApp) Secret() []byte {
  36. return s.secret
  37. }
  38. func (s *ExampleApp) Executer(r *Request) (IExecuter, bool) {
  39. return nil, false
  40. }
  41. // ExampleNew показывает пример создания и запуска сервера с RestAPI
  42. func ExampleNew() {
  43. // создаем новый сервер с использованием приложения ExampleApp
  44. restServ := New(&ExampleApp{})
  45. // пробуем запустить его. Если через секунду запуск не удался, будет возвращена ошибка
  46. if err := restServ.Listen(time.Second); err != nil {
  47. // ошибка запуска
  48. log.Fatal(err)
  49. }
  50. }
  51. type ExampleRequestRegister struct {
  52. ID int64 `rest:"id"`
  53. Name string `rest:"name"`
  54. RoleIDS []int64 `rest:"role_ids"`
  55. GroupID int64
  56. }
  57. func (s *ExampleRequestRegister) Validate(req *Request) *Response {
  58. // вилидируем группу
  59. //group, check := req.
  60. return nil
  61. }