mirror of
				https://github.com/optim-enterprises-bv/Xray-core.git
				synced 2025-11-04 04:28:00 +00:00 
			
		
		
		
	* Refactor log * Add new log methods * Fix logger test * Change all logging code * Clean up pathObj * Rebase to latest main * Remove invoking method name after the dot
		
			
				
	
	
		
			42 lines
		
	
	
		
			947 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			947 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package protocol
 | 
						|
 | 
						|
import "github.com/xtls/xray-core/common/errors"
 | 
						|
 | 
						|
func (u *User) GetTypedAccount() (Account, error) {
 | 
						|
	if u.GetAccount() == nil {
 | 
						|
		return nil, errors.New("Account missing").AtWarning()
 | 
						|
	}
 | 
						|
 | 
						|
	rawAccount, err := u.Account.GetInstance()
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	if asAccount, ok := rawAccount.(AsAccount); ok {
 | 
						|
		return asAccount.AsAccount()
 | 
						|
	}
 | 
						|
	if account, ok := rawAccount.(Account); ok {
 | 
						|
		return account, nil
 | 
						|
	}
 | 
						|
	return nil, errors.New("Unknown account type: ", u.Account.Type)
 | 
						|
}
 | 
						|
 | 
						|
func (u *User) ToMemoryUser() (*MemoryUser, error) {
 | 
						|
	account, err := u.GetTypedAccount()
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return &MemoryUser{
 | 
						|
		Account: account,
 | 
						|
		Email:   u.Email,
 | 
						|
		Level:   u.Level,
 | 
						|
	}, nil
 | 
						|
}
 | 
						|
 | 
						|
// MemoryUser is a parsed form of User, to reduce number of parsing of Account proto.
 | 
						|
type MemoryUser struct {
 | 
						|
	// Account is the parsed account of the protocol.
 | 
						|
	Account Account
 | 
						|
	Email   string
 | 
						|
	Level   uint32
 | 
						|
}
 |