123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package rest
- import (
- "log"
- "sync"
- "time"
- )
- type ExampleGroup struct {
- ID int64
- Name string
- }
- type ExamplePermission struct {
- ID int64
- Name string
- }
- type ExampleUser struct {
- ID int64
- Name string
- Token string
- Group *ExampleGroup
- Permissions []*ExamplePermission
- }
- // ExapmleApp реализует интерфейс IApplication, который отдает серверу параметры подключения,
- // секретный ключ шифрования токена авторизации,
- // а так же обрабатывает поступающие запросы
- type ExampleApp struct {
- addr string
- secret []byte
- users *sync.Map
- groups *sync.Map
- permissions *sync.Map
- }
- func (s *ExampleApp) Addr() string {
- return s.addr
- }
- func (s *ExampleApp) Secret() []byte {
- return s.secret
- }
- func (s *ExampleApp) Executer(r *Request) (IExecuter, bool) {
- return nil, false
- }
- // ExampleNew показывает пример создания и запуска сервера с RestAPI
- func ExampleNew() {
- // создаем новый сервер с использованием приложения ExampleApp
- restServ := New(&ExampleApp{})
- // пробуем запустить его. Если через секунду запуск не удался, будет возвращена ошибка
- if err := restServ.Listen(time.Second); err != nil {
- // ошибка запуска
- log.Fatal(err)
- }
- }
- type ExampleRequestRegister struct {
- ID int64 `rest:"id"`
- Name string `rest:"name"`
- RoleIDS []int64 `rest:"role_ids"`
- GroupID int64
- }
- func (s *ExampleRequestRegister) Validate(req *Request) *Response {
- // вилидируем группу
- //group, check := req.
- return nil
- }
|