tools

package
v0.14.2 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2024 License: MIT Imports: 28 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrTokenNotFound = errors.New("token not found")
	ErrExpiredToken  = errors.New("token is expired")
)
View Source
var (
	ErrEmptySetting = errors.New("load settings failed")
)
View Source
var (
	ErrIncorrectLink = errors.New("incorrect file link")
)
View Source
var (
	ErrRateLimited = errors.New("rate limited")
)

Functions

This section is empty.

Types

type Cache

type Cache[T any] struct {
	// contains filtered or unexported fields
}

func NewCache

func NewCache[T any]() *Cache[T]

func (*Cache[T]) Delete

func (c *Cache[T]) Delete(key string)

func (*Cache[T]) Get

func (c *Cache[T]) Get(key string) *T

func (*Cache[T]) Set

func (c *Cache[T]) Set(key string, value *T)

type CodeGenerator

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

func NewCodeGenerator

func NewCodeGenerator(ttl int, len int, numbers, letters bool) *CodeGenerator

Функция создает генератор кодов валидации

ttl - время жизни кода в минутах len - длинна кода numbers, letters - указывает на то, какие символы можно использовать в генерируемых кодах

func (*CodeGenerator) Generate

func (cg *CodeGenerator) Generate(input string) string

func (*CodeGenerator) GenerateForTime

func (cg *CodeGenerator) GenerateForTime(t time.Time, input string) string

func (*CodeGenerator) Validate

func (cg *CodeGenerator) Validate(input, code string) bool

func (*CodeGenerator) ValidateForTime

func (cg *CodeGenerator) ValidateForTime(t time.Time, input string, code string) bool

type ConfigStorage

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

func NewConfigStorageWithMongoDB

func NewConfigStorageWithMongoDB(mdb MDBConfigStorage) *ConfigStorage

func (*ConfigStorage) Load

func (cs *ConfigStorage) Load(module string, document interface{}) error

func (*ConfigStorage) Save

func (cs *ConfigStorage) Save(module string, document interface{}) error

type CycleTask

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

Структура для работы с циклической задачей

func NewCycleTask

func NewCycleTask(task func()) *CycleTask

Функция создает новую структуру для решения повторяющихся задач

func (*CycleTask) Once

func (r *CycleTask) Once()

Запуск задачи единоразово здесь и сейчас

func (*CycleTask) Run

func (r *CycleTask) Run(d time.Duration)

Запускает цикл выполнения задачи в случае если задача уже запущена

func (*CycleTask) Stop

func (r *CycleTask) Stop()

Останавливает цикл выполнения задачи

type Fifo added in v0.14.1

type Fifo[T any] struct {
	// contains filtered or unexported fields
}

func NewFifo added in v0.14.1

func NewFifo[T any]() *Fifo[T]

func (*Fifo[T]) Len added in v0.14.1

func (f *Fifo[T]) Len() int

func (*Fifo[T]) Pop added in v0.14.1

func (f *Fifo[T]) Pop() *T

func (*Fifo[T]) Push added in v0.14.1

func (f *Fifo[T]) Push(items ...T)

type File

type File interface {
	GetFilename() string
	GetData() io.Reader
	GetSize() int64
}

Интерфейс для сохранения файла на S3 Реализован по-умолчанию в структуре FileItem

type FileItem

type FileItem struct {
	Filename string
	Filesize int64
	Reader   io.Reader
	// contains filtered or unexported fields
}

func NewBytesFile

func NewBytesFile(filename string, data []byte) *FileItem

func NewReaderFile

func NewReaderFile(filename string, filesize int64, reader io.Reader) *FileItem

func (*FileItem) GetData

func (fi *FileItem) GetData() io.Reader

func (*FileItem) GetFilename

func (fi *FileItem) GetFilename() string

func (*FileItem) GetSize

func (fi *FileItem) GetSize() int64

type GetConfig

type GetConfig interface {
	Load(module string, document interface{}) error
}

type MDBConfigStorage

type MDBConfigStorage interface {
	Operation(op func(ctx context.Context, db *mongo.Database) error) error
}

type Randomizer

type Randomizer struct{}

func NewRandomizer

func NewRandomizer() *Randomizer

func (*Randomizer) PseudoString

func (r *Randomizer) PseudoString(seed int64, count int, alphabet, numbers, symbols bool) string

func (*Randomizer) String

func (r *Randomizer) String(count int, alphabet, numbers, symbols bool) string

type RateLimiter

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

func NewRateLimiter

func NewRateLimiter(seconds int64) *RateLimiter

func (*RateLimiter) Check

func (rl *RateLimiter) Check(key string) (err error)

func (*RateLimiter) Deinit

func (rl *RateLimiter) Deinit()

func (*RateLimiter) Set

func (rl *RateLimiter) Set(key string)

type RoutineLimiter added in v0.14.1

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

func NewRoutineLimiter added in v0.14.1

func NewRoutineLimiter(max int) *RoutineLimiter

NewRoutineLimiter Создает новую структуру для ограничения количества одновременно запущенных горутин

func (*RoutineLimiter) Run added in v0.14.1

func (r *RoutineLimiter) Run(task func())

Run запускает задачу в горутине в случае если доступных слотов нет, то ожидает освобождения слота перед запуском задачи

type SMTP

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

SMTP - структура для отправки писем.

func NewConfiguredSMTP

func NewConfiguredSMTP(host, port, name, email, login, password string) *SMTP

NewConfiguredSMTP - конструктор для создания SMTP с настроенными параметрами.

func NewSMTP

func NewSMTP(config GetConfig) *SMTP

NewSMTP - конструктор для создания SMTP с настройками из конфига.

func (*SMTP) SendHTMLEmail

func (s *SMTP) SendHTMLEmail(name, email, subject string, message []byte) error

Метод отправляет HTML письмо указанному адресату.

func (*SMTP) SendTextEmail

func (s *SMTP) SendTextEmail(name, email, subject, message string) error

Метод отправляет текстовое письмо указанному адресату.

type Scheduler added in v0.14.1

type Scheduler[I any, O any] struct {
	// contains filtered or unexported fields
}

func NewScheduler added in v0.14.1

func NewScheduler[I any, O any](parallel int, task func(I) O) *Scheduler[I, O]

func (*Scheduler[I, O]) Out added in v0.14.1

func (s *Scheduler[I, O]) Out() <-chan O

func (*Scheduler[I, O]) Push added in v0.14.1

func (s *Scheduler[I, O]) Push(items ...I)

func (*Scheduler[I, O]) Wait added in v0.14.1

func (s *Scheduler[I, O]) Wait()

type SetConfig

type SetConfig interface {
	Save(module string, document interface{}) error
}

type ShutdownFunc added in v0.14.1

type ShutdownFunc func(context.Context)

type ShutdownStack added in v0.14.1

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

ShutdownStack структура для плавного отключения приложения

Содержит стек функций которые необходимо выполнить перед завершением приложения и методы для их добавления и выполнения

func NewShutdownStack added in v0.14.1

func NewShutdownStack() *ShutdownStack

NewShutdownStack создает сруктуру для плавного отключения приложения

func (*ShutdownStack) Add added in v0.14.1

func (st *ShutdownStack) Add(fn ...ShutdownFunc)

Add добавляет функции которые необходимо выполнить перед завершением приложения в стек

func (*ShutdownStack) Wait added in v0.14.1

func (st *ShutdownStack) Wait(ctx context.Context, timeout time.Duration)

Wait подписывается на системные уведомления об отклбчении и производит запуск функции Shutdown после получения сигналов syscall.SIGTERM, syscall.SIGINT

type Storage

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

Структура для работы с бакетом на s3 совместимом хранилище

func NewStorage

func NewStorage(storageURL, bucket string, configurator GetConfig) *Storage

Функция для инициализации нового интерфейса к бакету на S3

func (*Storage) Client

func (s *Storage) Client() *minio.Client

Получение доступа к клиенту

func (*Storage) Remove

func (s *Storage) Remove(ctx context.Context, link string) error

Удаление файла из хранилища

func (*Storage) Upload

func (s *Storage) Upload(ctx context.Context, file File) (string, error)

Загрузка фйла в S3 хранилище

type Tokenizer

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

func NewTokenizer

func NewTokenizer(salt string) *Tokenizer

func (*Tokenizer) Authentificator

func (tokenizer *Tokenizer) Authentificator(action func(*http.Request, jwt.Token, error) *http.Request) func(http.Handler) http.Handler

Метод для создания Middleware, аутентификации пользователя

Предоставляет токен записанный в запросе одним из следующих методов: - Bearer <token> в заголовке Authorization - Query параметр token - Cookie с именем access_token

func (*Tokenizer) NewAccessToken

func (tokenizer *Tokenizer) NewAccessToken(values map[string]interface{}) (string, error)

Метод для создания нового access токена

метод добавляет дополнительные поля в карту в остальном идентичен NewToken для инвалидации токена спустя 10 минут после его создания

func (*Tokenizer) NewToken

func (tokenizer *Tokenizer) NewToken(values map[string]interface{}) (tokenString string, err error)

Метод для создания нового токена

func (*Tokenizer) ParseToken

func (tokenizer *Tokenizer) ParseToken(tokenString string) (jwt.Token, error)

Метод для проверки токена полученного от пользователя

Jump to

Keyboard shortcuts

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