rest

package module
v1.7.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2024 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	OperatorEqual     = "="
	OperatorNotEqual  = "!="
	OperatorMore      = ">"
	OperatorLess      = "<"
	OperatorMoreEqual = ">="
	OperatorLessEqual = "<="
	OperatorLike      = "like"
)
View Source
const (
	LogicEmpty = ""
	LogicOR    = "or"
	LogicAND   = "and"
)

Variables

This section is empty.

Functions

func BytesToInt64 added in v1.3.0

func BytesToInt64(bytes []byte) int64

BytesToInt64 конвертирует срез байтов в int64

func Int64ToBytes added in v1.3.0

func Int64ToBytes(num int64, byteCount int) []byte

Int64ToBytes упаковывает int64 в срез байтов заданной длины

func NewTemporaryFile added in v1.3.0

func NewTemporaryFile(size int64, r io.Reader) (IReadCloserLen, IErrorArgs)

func ObjectFieldKeys added in v1.6.1

func ObjectFieldKeys(l []any) (res json.Map)

ObjectFieldKeys позволяет рекурсивно получить список вложенных объектов запроса для предварительного формирования их в контексте ответа

func ReadRequestStream added in v1.3.0

func ReadRequestStream(r io.Reader) (*RequestStream, IErrorArgs)

Types

type Command

type Command struct {
	// contains filtered or unexported fields
}

func NewCommand

func NewCommand(validator IValidator, executer IExecuter) *Command

func (*Command) Execute

func (s *Command) Execute(r IRequestIn) IRequestOut

func (*Command) Validate

func (s *Command) Validate(r IRequestIn) IRequestOut

type Condition added in v1.6.3

type Condition struct {
	Field    string
	Logic    ConditionLogic
	Operator ConditionOperator
	Value    any
}

func (*Condition) IsValid added in v1.6.3

func (s *Condition) IsValid() bool

type ConditionList added in v1.6.40

type ConditionList []*Condition

func (*ConditionList) FieldExists added in v1.6.40

func (s *ConditionList) FieldExists(name string) bool

func (*ConditionList) FieldsRemove added in v1.6.40

func (s *ConditionList) FieldsRemove(toRemove []string)

type ConditionLogic added in v1.6.3

type ConditionLogic string

func (ConditionLogic) IsValid added in v1.6.3

func (s ConditionLogic) IsValid() bool

type ConditionOperator added in v1.6.3

type ConditionOperator string

func (ConditionOperator) IsValid added in v1.6.3

func (s ConditionOperator) IsValid() bool

type Error

type Error struct {
	// contains filtered or unexported fields
}

func (*Error) Args added in v1.1.0

func (s *Error) Args() json.Map

func (*Error) Error

func (s *Error) Error() string

func (*Error) Map

func (s *Error) Map() json.Map

func (*Error) Name added in v1.1.0

func (s *Error) Name() string

type Executer

type Executer struct {
	// contains filtered or unexported fields
}

func NewExecuter

func NewExecuter(method func(r IRequestIn) IRequestOut) *Executer

func (*Executer) Execute

func (s *Executer) Execute(r IRequestIn) IRequestOut

type Field added in v1.1.0

type Field struct {
	Name  string
	Names []any
}

Field реализует ...

type FieldList added in v1.1.0

type FieldList []*Field

func (FieldList) Field added in v1.1.0

func (s FieldList) Field(name string) (*Field, bool)

type FieldNamesList added in v1.6.3

type FieldNamesList []string

func FieldNames added in v1.6.3

func FieldNames(s any) (FieldNamesList, error)

GetStructFields возвращает список полей структуры

func (FieldNamesList) Exists added in v1.6.3

func (s FieldNamesList) Exists(name string) bool

type IApplication added in v1.1.0

type IApplication interface {
	Executer(r IRequestIn) (IExecuter, bool)
}

type IApplicationStream added in v1.3.0

type IApplicationStream interface {
	IApplication
	Connect() chan<- IStream
}

type ICommand

type ICommand interface {
	IValidator
	IExecuter
}

type IErrorArgs

type IErrorArgs interface {
	Name() string
	Args() json.Map
	Error() string
	Map() json.Map
}

func ErrorFiled added in v1.1.0

func ErrorFiled(field, message string) IErrorArgs

func ErrorMessage added in v1.2.0

func ErrorMessage(name, text string) IErrorArgs

func Fields added in v1.1.0

func Fields(obj any, files RequestFiles, names ...any) (json.Map, IErrorArgs)

Fields позволяет получить значения объекта в json

func FieldsAny added in v1.3.411

func FieldsAny(obj any, files RequestFiles, names ...any) (any, IErrorArgs)

func NewError

func NewError(name string, args json.Map) IErrorArgs

func ReadBuf added in v1.3.0

func ReadBuf(r io.Reader, size int, field string) ([]byte, IErrorArgs)

ReadBuf считывает срез заданного колличества байт и возвращает его

func ReadBufSize added in v1.3.0

func ReadBufSize(r io.Reader, lenSize int, field string) ([]byte, IErrorArgs)

ReadBufSize считывает размер байтового среза, затем сам срез и возвращает его. lenSize - количество байтов, которыми описывается размер основного среза (см. ReadInt64)

func ReadByte added in v1.3.0

func ReadByte(r io.Reader, field string, result *byte) IErrorArgs

ReadByte считывает 1 байт

func ReadInt64 added in v1.3.0

func ReadInt64(r io.Reader, size int, field string, result *int64) IErrorArgs

ReadInt64 Считывает срез заданного размера, который конвертируется в число типа int64. size - размер среза (может быть от 1 до 8 байт). Результат записывается в значение указателя result

func ReadString added in v1.3.0

func ReadString(r io.Reader, lenSize int, field string, result *string) IErrorArgs

ReadString считывает строку (длина строки, затем строку), см. ReadBufSize

func Serialize added in v1.2.0

func Serialize(from json.Map, to any) IErrorArgs

Serialize преобразует словарь from в объект произвольного типа

func WriteBuf added in v1.3.0

func WriteBuf(w io.Writer, buf []byte, field string) IErrorArgs

WriteBuf записывает срез байтов

func WriteBufSize added in v1.3.0

func WriteBufSize(w io.Writer, val []byte, lenSize int, field string) IErrorArgs

WriteBufSize записывает срез байтов в поток. Сначала записывается размер среза (lenSize - количество байт в срезе размера). Далее в поток записывается сам срез

func WriteByte added in v1.3.0

func WriteByte(w io.Writer, val byte, field string) IErrorArgs

WriteBuf записывает 1 байт в поток

func WriteInt64 added in v1.3.0

func WriteInt64(w io.Writer, val int64, size int, field string) IErrorArgs

WriteInt64 конвертирует число типа int64 в срез заданного размера и записывает его

func WriteString added in v1.3.0

func WriteString(w io.Writer, val, field string, lenSize int) IErrorArgs

WriteString записывает строку в поток. Сначала записывается размер строки (lenSize - количество байт в срезе размера). Далее строка конвертируется в байтовый срез и записывается в поток

type IExecuter

type IExecuter interface {
	Execute(r IRequestIn) IRequestOut
}

type IFielderPost added in v1.3.3

type IFielderPost interface {
	RestFieldsPost(result json.Map, files map[string]IReadCloserLen, names FieldList)
}

IFielder реализует интерфейс завершения формирования полей объекта в "ручном" режиме. RestFields будет вызван после завершения автматического формирования полей объекта result - массив с полями, сформированными автоматически, в него можно вносить правки files - глобальный массив файловых дескрипторов, который будет передан в ответе клиенту

type IOwner added in v1.3.0

type IOwner interface {
	IsStream() bool
}

type IReadCloser added in v1.3.0

type IReadCloser interface {
	io.ReadCloser
	Len() int64
}

type IReadCloserLen added in v1.3.0

type IReadCloserLen interface {
	io.ReadCloser
	Len() int64
}

func NewReadCloserLen added in v1.3.0

func NewReadCloserLen(rc io.ReadCloser, len int64) IReadCloserLen

type IRequest added in v1.2.0

type IRequest interface {
	RType() RequestType
	RCommand() string
	RData() json.Map
	RFiles() RequestFiles
	RFile(string) (IReadCloserLen, bool)
	RClose()
	Fields(any, RequestFiles) (json.Map, IErrorArgs)
}

type IRequestIn added in v1.3.0

type IRequestIn interface {
	IRequest
	Auth() json.Map
	SetAuth(json.Map)
	GenerateToken(data json.Map, expire int64) (string, error)
	ParseToken(token string) (json.Map, error)
	ROwner() IOwner
	RCore() any
	OutSuccess(data json.Map, files RequestFiles) IRequestOut
	OutError(err IErrorArgs) IRequestOut
	ClientData(key string) (any, bool)
	SetClientData(key string, data any)
}

type IRequestOut added in v1.3.0

type IRequestOut interface {
	IRequest
	Write(io.Writer) IErrorArgs
}

func OutFieldsReq added in v1.4.1

func OutFieldsReq(req IRequestIn, obj any, files RequestFiles, names ...any) IRequestOut

func OutFileds added in v1.4.1

func OutFileds(req IRequestIn, obj any, files RequestFiles, names ...any) IRequestOut

type IRestConverter added in v1.3.3

type IRestConverter interface {
	// RestFrom реализeт конвертацию из данных запроса в объект
	RestFrom(any) IErrorArgs
}

IRestConverter реализует пользовательский пасер из значения, полученного из запроса (см. пример из time.go)

type IRestFielder added in v1.3.3

type IRestFielder interface {
	RestFields(fieldName string, names ...any) (any, IErrorArgs)
}

type IServer added in v1.3.0

type IServer interface {
	// Addr возвращеат адрес, который сервер слушает
	Addr() string
	// Secret возвращает секретный ключ, при помощи которого генерируются токены авторизации пользователей
	Secret() []byte
	// HandleFunc устанавливает функцию обработчик, которая будет вызвана по обращению к URL, удовлетворяющему pattern
	HandleFunc(pattern string, handler func(http.ResponseWriter, *http.Request))
	// Listen запускает прослушивание сервера. Если не удалось успешно запустить прослушивание через
	// заданный временной интервал (timeout), будет возвращена ошибка
	Listen(timeout time.Duration, ctxParent context.Context) error
	// TokenGenerate - функция генерации токена авторизации
	TokenGenerate(m json.Map, expire int64) (string, error)
	// TokenParse - функция для расшифровки токена в карту значений
	TokenParse(token string) (json.Map, error)
	// Close останавливает прослушивание
	Close() error
	// Context возвращает контекст сервера
	Context() context.Context
}

IServer реализует интерфейс сервера для рест апи

func NewServer added in v1.3.0

func NewServer(addr string, secret []byte) IServer

NewServer создает сервер для реализации рест апи

func NewServerTLS added in v1.4.0

func NewServerTLS(addr string, secret []byte, tlsKey, tlsCert string) IServer

type IStream added in v1.3.0

type IStream interface {
	SetAuth(json.Map)
	Auth() json.Map
	SetClientData(key string, val any)
	ClientData(key string) (any, bool)
	Context() context.Context
	SendMessage(IRequestOut) (<-chan *RequestStream, error)
}

type IValidator

type IValidator interface {
	Validate(r IRequestIn) IRequestOut
}

type Order added in v1.6.3

type Order struct {
	Name  string
	IsAsc bool
}

type Request

type Request struct {
	Type    RequestType
	Command string
	Data    json.Map
	Files   RequestFiles
}

func (*Request) Fields added in v1.3.0

func (s *Request) Fields(obj any, files RequestFiles) (json.Map, IErrorArgs)

func (*Request) ParseLimit added in v1.6.0

func (s *Request) ParseLimit() int

func (*Request) ParseOffset added in v1.6.0

func (s *Request) ParseOffset() int

func (*Request) RClose added in v1.3.0

func (s *Request) RClose()

func (*Request) RCommand added in v1.3.0

func (s *Request) RCommand() string

func (*Request) RData added in v1.3.0

func (s *Request) RData() json.Map

func (*Request) RFile added in v1.3.0

func (s *Request) RFile(name string) (IReadCloserLen, bool)

func (*Request) RFiles added in v1.3.0

func (s *Request) RFiles() RequestFiles

func (*Request) RType added in v1.3.0

func (s *Request) RType() RequestType

type RequestFiles added in v1.3.0

type RequestFiles map[string]IReadCloserLen

RequestFiles - словарь файлов запроса

type RequestIn added in v1.3.0

type RequestIn struct {
	IRequest
	Owner          IOwner
	Core           any
	GeneratorToken TokenGenerateMethod
	ParserToken    TokenParseMethod
}

func (*RequestIn) Auth added in v1.3.0

func (s *RequestIn) Auth() json.Map

func (*RequestIn) ClientData added in v1.3.0

func (s *RequestIn) ClientData(key string) (any, bool)

func (*RequestIn) GenerateToken added in v1.3.0

func (s *RequestIn) GenerateToken(data json.Map, expire int64) (string, error)

func (*RequestIn) OutError added in v1.3.410

func (s *RequestIn) OutError(err IErrorArgs) IRequestOut

func (*RequestIn) OutSuccess added in v1.3.410

func (s *RequestIn) OutSuccess(data json.Map, files RequestFiles) IRequestOut

func (*RequestIn) ParseToken added in v1.7.0

func (s *RequestIn) ParseToken(token string) (json.Map, error)

func (*RequestIn) RCore added in v1.3.0

func (s *RequestIn) RCore() any

func (*RequestIn) ROwner added in v1.3.0

func (s *RequestIn) ROwner() IOwner

func (*RequestIn) SetAuth added in v1.3.0

func (s *RequestIn) SetAuth(auth json.Map)

func (*RequestIn) SetClientData added in v1.3.0

func (s *RequestIn) SetClientData(key string, data any)

type RequestOut added in v1.3.410

type RequestOut struct {
	*Request
	Err IErrorArgs
}

func (*RequestOut) Write added in v1.3.410

func (s *RequestOut) Write(w io.Writer) IErrorArgs

type RequestStream added in v1.3.0

type RequestStream struct {
	ID      int64
	Timeout time.Time
	*Request
}

func NewRequestStream added in v1.3.0

func NewRequestStream(timeout time.Time, req *Request) *RequestStream

func (*RequestStream) Write added in v1.3.0

func (s *RequestStream) Write(w io.Writer) IErrorArgs

type RequestType added in v1.3.0

type RequestType byte

RequestType - тип запроса

const (
	RequestTypeIn RequestType = iota
	RequestTypeOut
	RequestTypeEvent
)

type Server added in v1.3.0

type Server struct {
	// contains filtered or unexported fields
}

Server реализует сервер для рест апи

func (*Server) Addr added in v1.3.0

func (s *Server) Addr() string

Addr возвращеат адрес, который сервер слушает

func (*Server) Close added in v1.3.0

func (s *Server) Close() error

Close останавливает прослушивание

func (*Server) Context added in v1.3.0

func (s *Server) Context() context.Context

Context возвращает контекст сервера

func (*Server) HandleFunc added in v1.3.0

func (s *Server) HandleFunc(pattern string, handler func(http.ResponseWriter, *http.Request))

HandleFunc устанавливает функцию обработчик, которая будет вызвана по обращению к URL, удовлетворяющему pattern

func (*Server) Listen added in v1.3.0

func (s *Server) Listen(timeout time.Duration, ctxParent context.Context) (err error)

Listen запускает прослушивание сервера. Если не удалось успешно запустить прослушивание через заданный временной интервал (timeout), будет возвращена ошибка

func (*Server) Secret added in v1.3.0

func (s *Server) Secret() []byte

Secret возвращает секретный ключ, при помощи которого генерируются токены авторизации пользователей

func (*Server) TokenGenerate added in v1.3.0

func (s *Server) TokenGenerate(m json.Map, expire int64) (string, error)

TokenGenerate - функция генерации токена авторизации

func (*Server) TokenParse added in v1.7.0

func (s *Server) TokenParse(tokenString string) (json.Map, error)

type TemporaryFile added in v1.3.0

type TemporaryFile struct {
	*os.File
	// contains filtered or unexported fields
}

func (*TemporaryFile) Close added in v1.3.0

func (s *TemporaryFile) Close() error

func (*TemporaryFile) Len added in v1.3.0

func (s *TemporaryFile) Len() int64

type Time added in v1.3.3

type Time time.Time

Time используется для формирования объекта времени из формата UnixMilli, а так же выгрузки в этот формат в результирующем объекте

func (*Time) RestFields added in v1.3.3

func (s *Time) RestFields(fieldName string, names ...any) (any, IErrorArgs)

RestFields выгружает объект в результирующий объект в формат UnixMilli

func (*Time) RestFrom added in v1.3.3

func (s *Time) RestFrom(source any) (err IErrorArgs)

RestFrom формирует из поля типа int64 объект времени

func (*Time) Time added in v1.3.4

func (s *Time) Time() time.Time

Time возвращает объект времени типа time.Time

type TokenGenerateMethod added in v1.3.0

type TokenGenerateMethod func(data json.Map, expire int64) (string, error)

TokenGenerateMethod - функция генерации токена авторизации

type TokenGenerator added in v1.3.4

type TokenGenerator struct {
	// contains filtered or unexported fields
}

func NewTokenGenerator added in v1.3.4

func NewTokenGenerator(secret string) *TokenGenerator

func (*TokenGenerator) Generate added in v1.3.4

func (s *TokenGenerator) Generate(m json.Map, expire int64) (string, error)

type TokenParseMethod added in v1.7.0

type TokenParseMethod func(token string) (json.Map, error)

TokenParseMethod - функция для расшифровки токена

type Validator

type Validator struct {
	// contains filtered or unexported fields
}

func NewValidator

func NewValidator(method func(r IRequestIn) IRequestOut) *Validator

func (*Validator) Validate

func (s *Validator) Validate(r IRequestIn) IRequestOut

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL