user.go 916 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package protocol
  2. import (
  3. "errors"
  4. "github.com/golang/protobuf/proto"
  5. "github.com/golang/protobuf/ptypes"
  6. )
  7. var (
  8. ErrUserMissing = errors.New("User is not specified.")
  9. ErrAccountMissing = errors.New("Account is not specified.")
  10. ErrNonMessageType = errors.New("Not a protobuf message.")
  11. )
  12. func (this *User) GetTypedAccount(account AsAccount) (Account, error) {
  13. anyAccount := this.GetAccount()
  14. if anyAccount == nil {
  15. return nil, ErrAccountMissing
  16. }
  17. protoAccount, ok := account.(proto.Message)
  18. if !ok {
  19. return nil, ErrNonMessageType
  20. }
  21. err := ptypes.UnmarshalAny(anyAccount, protoAccount)
  22. if err != nil {
  23. return nil, err
  24. }
  25. return account.AsAccount()
  26. }
  27. func (this *User) GetSettings() UserSettings {
  28. settings := UserSettings{
  29. PayloadReadTimeout: 120,
  30. }
  31. if this.Level > 0 {
  32. settings.PayloadReadTimeout = 0
  33. }
  34. return settings
  35. }
  36. type UserSettings struct {
  37. PayloadReadTimeout uint32
  38. }