user.go 978 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package protocol
  2. import "time"
  3. var (
  4. ErrAccountMissing = newError("Account is not specified.")
  5. ErrNonMessageType = newError("Not a protobuf message.")
  6. ErrUnknownAccountType = newError("Unknown account type.")
  7. )
  8. func (v *User) GetTypedAccount() (Account, error) {
  9. if v.GetAccount() == nil {
  10. return nil, ErrAccountMissing
  11. }
  12. rawAccount, err := v.Account.GetInstance()
  13. if err != nil {
  14. return nil, err
  15. }
  16. if asAccount, ok := rawAccount.(AsAccount); ok {
  17. return asAccount.AsAccount()
  18. }
  19. if account, ok := rawAccount.(Account); ok {
  20. return account, nil
  21. }
  22. return nil, newError("Unknown account type: ", v.Account.Type)
  23. }
  24. func (v *User) GetSettings() UserSettings {
  25. settings := UserSettings{}
  26. switch v.Level {
  27. case 0:
  28. settings.PayloadTimeout = time.Second * 30
  29. case 1:
  30. settings.PayloadTimeout = time.Minute * 2
  31. default:
  32. settings.PayloadTimeout = time.Minute * 5
  33. }
  34. return settings
  35. }
  36. type UserSettings struct {
  37. PayloadTimeout time.Duration
  38. }