package rest

import (
	"io"

	"git.ali33.ru/fcg-xvii/go-tools/json"
)

type IResponse interface {
	IsError() bool
	KeySet(key string, val any)
	FileSet(name string, file io.ReadCloser)
	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
}