Class: YiffSpace::Auth::UserInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/yiffspace/auth/user_info.rb,
lib/yiffspace/auth/user_info/anonymous.rb

Defined Under Namespace

Classes: Anonymous

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id:, user:, discord:) ⇒ UserInfo

Returns a new instance of UserInfo.

Parameters:

  • id

    String

  • user

    LogtoCore::UserInfoResponse

  • discord

    Hash

Raises:

  • (ArgumentError)


11
12
13
14
15
16
17
18
# File 'lib/yiffspace/auth/user_info.rb', line 11

def initialize(id:, user:, discord:)
  raise(ArgumentError, "no id provided") if id.blank?
  raise(ArgumentError, "no user provided") if user.blank?

  @id        = id
  @user      = user
  @discord   = DiscordInfo.from_json(discord)
end

Instance Attribute Details

#discordObject (readonly)

Returns the value of attribute discord.



6
7
8
# File 'lib/yiffspace/auth/user_info.rb', line 6

def discord
  @discord
end

#idObject (readonly)

Returns the value of attribute id.



6
7
8
# File 'lib/yiffspace/auth/user_info.rb', line 6

def id
  @id
end

#userObject (readonly)

Returns the value of attribute user.



6
7
8
# File 'lib/yiffspace/auth/user_info.rb', line 6

def user
  @user
end

Class Method Details

.from_json(data) ⇒ Object

Raises:

  • (ArgumentError)


67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/yiffspace/auth/user_info.rb', line 67

def self.from_json(data)
  raise(ArgumentError, "invalid data") if data.blank?

  data = JSON.parse(data) if data.is_a?(String)
  data = ::YiffSpace::Utils::OpenHash.from(data)

  new(
    id:      data.id,
    discord: data.discord,
    user:    data.user,
  )
end

.from_session(data) ⇒ Object



80
81
82
83
84
# File 'lib/yiffspace/auth/user_info.rb', line 80

def self.from_session(data)
  return nil if data.blank?

  from_json(data)
end

Instance Method Details

#anonymous?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/yiffspace/auth/user_info.rb', line 20

def anonymous?
  false
end

#avatar(type = nil) ⇒ Object



33
34
35
# File 'lib/yiffspace/auth/user_info.rb', line 33

def avatar(type = nil)
  type.present? ? Images::Avatar.get_for(id, type) : Images::Avatar.default_for(id)
end

#avatar_url(type = nil) ⇒ Object



37
38
39
# File 'lib/yiffspace/auth/user_info.rb', line 37

def avatar_url(type = nil)
  avatar(type).url
end


41
42
43
# File 'lib/yiffspace/auth/user_info.rb', line 41

def banner(type = nil)
  type.present? ? Images::Banner.get_for(id, type) : Images::Banner.default_for(id)
end


45
46
47
# File 'lib/yiffspace/auth/user_info.rb', line 45

def banner_url(type = nil)
  banner(type).url
end

#blank?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/yiffspace/auth/user_info.rb', line 29

def blank?
  false
end

#display_nameObject



51
52
53
# File 'lib/yiffspace/auth/user_info.rb', line 51

def display_name
  discord.global_name
end

#present?Boolean

this feels wrong, but it hopefully shouldn’t break anything

Returns:

  • (Boolean)


25
26
27
# File 'lib/yiffspace/auth/user_info.rb', line 25

def present?
  true
end

#serializable_hash(_options = {}) ⇒ Object



55
56
57
58
59
60
61
# File 'lib/yiffspace/auth/user_info.rb', line 55

def serializable_hash(_options = {})
  {
    "id"      => id,
    "discord" => discord.serializable_hash,
    "user"    => user.as_json,
  }
end

#to_sessionObject



63
64
65
# File 'lib/yiffspace/auth/user_info.rb', line 63

def to_session
  serializable_hash.without("discord").merge(discord: discord.to_session)
end