Browse Source

request and response

0x4a52466c696e74 1 year ago
parent
commit
241b53802d
2 changed files with 130 additions and 0 deletions
  1. 83 0
      request.go
  2. 47 0
      response.go

+ 83 - 0
request.go

@@ -18,3 +18,86 @@ type IRequest interface {
 	ResponseSuccess(data json.Map, files map[string]io.ReadCloser) IResponse
 	ResponseError(code int, err IErrorArgs) IResponse
 }
+
+type Request struct {
+	auth          json.Map `json:"auth"`
+	command       string   `json:"command"`
+	data          json.Map `json:"data"`
+	fileKeys      []string `json:"file_keys"`
+	files         map[string]io.Reader
+	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) 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]io.Reader) {
+	s.files = files
+}
+
+func (s *Request) SetRoot(root any) {
+	s.root = root
+}
+
+func (s *Request) SetGenerateToken(generateToken func(data json.Map, expire int64) (string, error)) {
+	s.generateToken = generateToken
+}
+
+// методы интерфейса
+
+func (s *Request) IsAuth() bool {
+	return s.auth != nil
+}
+
+func (s *Request) Data() json.Map {
+	return s.data
+}
+
+func (s *Request) FileKeys() []string {
+	keys := make([]string, len(s.files))
+	for key, _ := range s.files {
+		keys[0] = 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) ResponseSuccess(data json.Map, files map[string]io.ReadCloser) IResponse {
+	return &Response{
+		code:  200,
+		data:  data,
+		files: files,
+	}
+}
+
+func (s *Request) ResponseError(code int, err IErrorArgs) IResponse {
+	return &Response{
+		code: code,
+		err:  err,
+	}
+}

+ 47 - 0
response.go

@@ -2,6 +2,8 @@ package rest
 
 import (
 	"io"
+
+	"git.ali33.ru/fcg-xvii/go-tools/json"
 )
 
 type IResponse interface {
@@ -11,3 +13,48 @@ type IResponse interface {
 	Close()
 	Send(writer any) IErrorArgs
 }
+
+type Response struct {
+	code  int
+	err   IErrorArgs
+	data  json.Map
+	files map[string]io.ReadCloser
+}
+
+func (s *Response) IsError() bool {
+	return s.code != 200
+}
+
+func (s *Response) KeySet(key string, val any) {
+	s.data[key] = val
+}
+
+func (s *Response) FileSet(name string, file io.ReadCloser) {
+	s.files[name] = file
+}
+
+func (s *Response) Close() {
+	for _, file := range s.files {
+		file.Close()
+	}
+}
+
+func (s *Response) Send(writer any) IErrorArgs {
+	return nil
+}
+
+func (s *Response) Code() int {
+	return s.code
+}
+
+func (s *Response) Data() json.Map {
+	return s.data
+}
+
+func (s *Response) Files() map[string]io.ReadCloser {
+	return s.files
+}
+
+func (s *Response) Err() IErrorArgs {
+	return s.err
+}