Documentation ¶
Index ¶
- Constants
- func BytesToInt64(bytes []byte) int64
- func Int64ToBytes(num int64, byteCount int) []byte
- func NewTemporaryFile(size int64, r io.Reader) (IReadCloserLen, IErrorArgs)
- func ObjectFieldKeys(l []any) (res json.Map)
- func ReadRequestStream(r io.Reader) (*RequestStream, IErrorArgs)
- type Command
- type Condition
- type ConditionList
- type ConditionLogic
- type ConditionOperator
- type Error
- type Executer
- type Field
- type FieldList
- type FieldNamesList
- type IApplication
- type IApplicationStream
- type ICommand
- type IErrorArgs
- func ErrorFiled(field, message string) IErrorArgs
- func ErrorMessage(name, text string) IErrorArgs
- func Fields(obj any, files RequestFiles, names ...any) (json.Map, IErrorArgs)
- func FieldsAny(obj any, files RequestFiles, names ...any) (any, IErrorArgs)
- func NewError(name string, args json.Map) IErrorArgs
- func ReadBuf(r io.Reader, size int, field string) ([]byte, IErrorArgs)
- func ReadBufSize(r io.Reader, lenSize int, field string) ([]byte, IErrorArgs)
- func ReadByte(r io.Reader, field string, result *byte) IErrorArgs
- func ReadInt64(r io.Reader, size int, field string, result *int64) IErrorArgs
- func ReadString(r io.Reader, lenSize int, field string, result *string) IErrorArgs
- func Serialize(from json.Map, to any) IErrorArgs
- func WriteBuf(w io.Writer, buf []byte, field string) IErrorArgs
- func WriteBufSize(w io.Writer, val []byte, lenSize int, field string) IErrorArgs
- func WriteByte(w io.Writer, val byte, field string) IErrorArgs
- func WriteInt64(w io.Writer, val int64, size int, field string) IErrorArgs
- func WriteString(w io.Writer, val, field string, lenSize int) IErrorArgs
- type IExecuter
- type IFielderPost
- type IOwner
- type IReadCloser
- type IReadCloserLen
- type IRequest
- type IRequestIn
- type IRequestOut
- type IRestConverter
- type IRestFielder
- type IServer
- type IStream
- type IValidator
- type Order
- type Request
- func (s *Request) Fields(obj any, files RequestFiles) (json.Map, IErrorArgs)
- func (s *Request) ParseLimit() int
- func (s *Request) ParseOffset() int
- func (s *Request) RClose()
- func (s *Request) RCommand() string
- func (s *Request) RData() json.Map
- func (s *Request) RFile(name string) (IReadCloserLen, bool)
- func (s *Request) RFiles() RequestFiles
- func (s *Request) RType() RequestType
- type RequestFiles
- type RequestIn
- func (s *RequestIn) Auth() json.Map
- func (s *RequestIn) ClientData(key string) (any, bool)
- func (s *RequestIn) GenerateToken(data json.Map, expire int64) (string, error)
- func (s *RequestIn) OutError(err IErrorArgs) IRequestOut
- func (s *RequestIn) OutSuccess(data json.Map, files RequestFiles) IRequestOut
- func (s *RequestIn) ParseToken(token string) (json.Map, error)
- func (s *RequestIn) RCore() any
- func (s *RequestIn) ROwner() IOwner
- func (s *RequestIn) SetAuth(auth json.Map)
- func (s *RequestIn) SetClientData(key string, data any)
- type RequestOut
- type RequestStream
- type RequestType
- type Server
- func (s *Server) Addr() string
- func (s *Server) Close() error
- func (s *Server) Context() context.Context
- func (s *Server) HandleFunc(pattern string, handler func(http.ResponseWriter, *http.Request))
- func (s *Server) Listen(timeout time.Duration, ctxParent context.Context) (err error)
- func (s *Server) Secret() []byte
- func (s *Server) TokenGenerate(m json.Map, expire int64) (string, error)
- func (s *Server) TokenParse(tokenString string) (json.Map, error)
- type TemporaryFile
- type Time
- type TokenGenerateMethod
- type TokenGenerator
- type TokenParseMethod
- type Validator
Constants ¶
const ( OperatorEqual = "=" OperatorNotEqual = "!=" OperatorMore = ">" OperatorLess = "<" OperatorMoreEqual = ">=" OperatorLessEqual = "<=" OperatorLike = "like" )
const ( LogicEmpty = "" LogicOR = "or" LogicAND = "and" )
Variables ¶
This section is empty.
Functions ¶
func BytesToInt64 ¶ added in v1.3.0
BytesToInt64 конвертирует срез байтов в int64
func Int64ToBytes ¶ added in v1.3.0
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
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 }
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 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 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 ¶
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 ReadBufSize ¶ added in v1.3.0
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
ReadInt64 Считывает срез заданного размера, который конвертируется в число типа int64. size - размер среза (может быть от 1 до 8 байт). Результат записывается в значение указателя result
func ReadString ¶ added in v1.3.0
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
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
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 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 реализует интерфейс сервера для рест апи
type IValidator ¶
type IValidator interface {
Validate(r IRequestIn) IRequestOut
}
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 (*Request) ParseOffset ¶ added in v1.6.0
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) ClientData ¶ added in v1.3.0
func (*RequestIn) GenerateToken ¶ added in v1.3.0
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 (*RequestIn) SetClientData ¶ added in v1.3.0
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
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) HandleFunc ¶ added in v1.3.0
HandleFunc устанавливает функцию обработчик, которая будет вызвана по обращению к URL, удовлетворяющему pattern
func (*Server) Listen ¶ added in v1.3.0
Listen запускает прослушивание сервера. Если не удалось успешно запустить прослушивание через заданный временной интервал (timeout), будет возвращена ошибка
func (*Server) Secret ¶ added in v1.3.0
Secret возвращает секретный ключ, при помощи которого генерируются токены авторизации пользователей
func (*Server) TokenGenerate ¶ added in v1.3.0
TokenGenerate - функция генерации токена авторизации
type TemporaryFile ¶ added in v1.3.0
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
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 объект времени
type TokenGenerateMethod ¶ added in v1.3.0
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
type TokenParseMethod ¶ added in v1.7.0
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