tools

package
v0.0.11 Latest Latest
Warning

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

Go to latest
Published: May 6, 2024 License: MIT Imports: 22 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrRateLimited = errors.New("rate limited")
)

Functions

func AnyKeyToExit added in v0.0.9

func AnyKeyToExit(log Logger, cancel context.CancelFunc)

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

https://stackoverflow.com/questions/15159118/read-a-character-from-standard-input-in-go-without-pressing-enter

func NewID added in v0.0.7

func NewID() string

func NewIDFromTimestamp added in v0.0.7

func NewIDFromTimestamp(timestamp time.Time) string

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 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 ErrorsMap

type ErrorsMap map[string]error

func NewErrorsMap

func NewErrorsMap() ErrorsMap

ErrorsMap is a map of errors

func (ErrorsMap) Error

func (e ErrorsMap) Error() string

Error returns a string representation of the errors map

func (ErrorsMap) IsError

func (e ErrorsMap) IsError() error

IsError returns nil if there are no errors

type Fifo

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

func NewFifo

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

func (*Fifo[T]) Len

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

func (*Fifo[T]) Pop

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

func (*Fifo[T]) Push

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

type Logger

type Logger interface {
	Logf(format string, args ...interface{})
}

Logger is a simple interface for logging

func BaseLogger

func BaseLogger() Logger

BaseLogger is a simple implementation of Logger

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 Retry added in v0.0.7

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

func NewRetry added in v0.0.7

func NewRetry(log Logger, max int, delay time.Duration) *Retry

NewRetry Создает новую структуру для повторения задачи в случае ошибки

func (*Retry) Do added in v0.0.7

func (r *Retry) Do(task func() error) error

Do выполняет задачу и в случае ошибки повторяет ее max раз с задержкой delay

type RoutineLimiter

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

func NewRoutineLimiter

func NewRoutineLimiter(max int) *RoutineLimiter

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

func (*RoutineLimiter) Run

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 SMTPConfig) *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 SMTPConfig

type SMTPConfig struct {
	Host     string `long:"host" env:"HOST" description:"smtp host value"`
	Port     string `long:"port" env:"PORT" description:"smtp port value"`
	Name     string `long:"name" env:"NAME" description:"smtp name value"`
	Email    string `long:"email" env:"EMAIL" description:"smtp email value"`
	Login    string `long:"login" env:"LOGIN" description:"smtp login value"`
	Password string `long:"password" env:"PASSWORD" description:"smtp password value"`
}

type SafeSlice added in v0.0.5

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

func NewSafeSlice added in v0.0.5

func NewSafeSlice[T any]() *SafeSlice[T]

func (*SafeSlice[T]) Delete added in v0.0.5

func (ss *SafeSlice[T]) Delete(i int)

func (*SafeSlice[T]) Get added in v0.0.5

func (ss *SafeSlice[T]) Get(i int) T

func (*SafeSlice[T]) Len added in v0.0.5

func (ss *SafeSlice[T]) Len() int

func (*SafeSlice[T]) Push added in v0.0.5

func (ss *SafeSlice[T]) Push(v ...T)

type Scheduler

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

func NewScheduler

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

func NewSchedulerWRoutineLimiter added in v0.0.7

func NewSchedulerWRoutineLimiter[I any, O any](rl *RoutineLimiter, task func(I) O) *Scheduler[I, O]

func (*Scheduler[I, O]) Out

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

func (*Scheduler[I, O]) Push

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

func (*Scheduler[I, O]) QueryLen added in v0.0.7

func (s *Scheduler[I, O]) QueryLen() int

func (*Scheduler[I, O]) Wait

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

type ShutdownFunc

type ShutdownFunc func(context.Context)

type ShutdownStack

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

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

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

func NewShutdownStack

func NewShutdownStack(logger Logger) *ShutdownStack

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

func (*ShutdownStack) Add

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

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

func (*ShutdownStack) Wait

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

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

Jump to

Keyboard shortcuts

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