Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

type_duration.go 742B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package config
  2. import (
  3. "fmt"
  4. "strings"
  5. "time"
  6. )
  7. type TypeDuration struct {
  8. value time.Duration
  9. }
  10. func (c *TypeDuration) UnmarshalText(data []byte) error {
  11. if len(data) == 0 {
  12. return nil
  13. }
  14. dur, err := time.ParseDuration(strings.ToLower(string(data)))
  15. if err != nil {
  16. return fmt.Errorf("incorrect duration: %w", err)
  17. }
  18. if dur < 0 {
  19. return fmt.Errorf("%s should be positive duration", dur)
  20. }
  21. c.value = dur
  22. return nil
  23. }
  24. func (c TypeDuration) MarshalText() ([]byte, error) {
  25. return []byte(c.value.String()), nil
  26. }
  27. func (c TypeDuration) String() string {
  28. return c.value.String()
  29. }
  30. func (c TypeDuration) Value(defaultValue time.Duration) time.Duration {
  31. if c.value == 0 {
  32. return defaultValue
  33. }
  34. return c.value
  35. }