123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package rest
- import (
- "io"
- "git.ali33.ru/fcg-xvii/go-tools/json"
- )
- type RequestType byte
- const (
- RequestTypeMessage RequestType = iota
- RequestTypeEvent
- RequestTypeAnswer
- )
- type IRequest interface {
- Type() RequestType
- IsAuth() bool
- SetAuth(auth json.Map)
- Command() string
- Auth() json.Map
- Data() json.Map
- FileKeys() []string
- File(name string) (IReadCloserLen, bool)
- GenerateToken(data json.Map, expire int64) (string, error)
- Root() any
- Core() any
- ResponseSuccess(data json.Map, files map[string]IReadCloserLen) IResponse
- ResponseError(code int, err IErrorArgs) IResponse
- Close()
- }
- type Request struct {
- rType RequestType
- auth json.Map
- command string
- data json.Map
- files map[string]IReadCloserLen
- core any
- root any
- generateToken func(data json.Map, expire int64) (string, error)
- //Response func(data json.Map, files map[string]io.ReadCloser) IResponse
- }
- // сеттеры
- func (s *Request) SetType(rType RequestType) {
- s.rType = rType
- }
- func (s *Request) SetAuth(auth json.Map) {
- s.auth = auth
- }
- func (s *Request) SetCommand(command string) {
- s.command = command
- }
- func (s *Request) SetData(data json.Map) {
- s.data = data
- }
- func (s *Request) SetFiles(files map[string]IReadCloserLen) {
- s.files = files
- }
- func (s *Request) SetRoot(root any) {
- s.root = root
- }
- func (s *Request) SetCore(core any) {
- s.core = core
- }
- func (s *Request) SetGenerateToken(generateToken func(data json.Map, expire int64) (string, error)) {
- s.generateToken = generateToken
- }
- // методы интерфейса
- func (s *Request) Type() RequestType {
- return RequestTypeMessage
- }
- func (s *Request) IsAuth() bool {
- return s.auth != nil
- }
- func (s *Request) Command() string {
- return s.command
- }
- func (s *Request) Auth() json.Map {
- return s.auth
- }
- func (s *Request) Data() json.Map {
- return s.data
- }
- func (s *Request) FileKeys() []string {
- keys := make([]string, 0, len(s.files))
- for key := range s.files {
- keys = append(keys, key)
- }
- return keys
- }
- func (s *Request) File(name string) (io.Reader, bool) {
- file, ok := s.files[name]
- return file, ok
- }
- func (s *Request) GenerateToken(data json.Map, expire int64) (string, error) {
- return s.generateToken(data, expire)
- }
- func (s *Request) Root() any {
- return s.root
- }
- func (s *Request) Core() any {
- return s.core
- }
- func (s *Request) ResponseSuccess(data json.Map, files map[string]IReadCloserLen) IResponse {
- return &Response{
- code: 200,
- data: data,
- files: files,
- }
- }
- func (s *Request) ResponseError(code int, err IErrorArgs) IResponse {
- return &Response{
- code: code,
- err: err,
- }
- }
|