class MijDiscord::Data::Game
Constants
- PLAYING_TYPE
Attributes
application[R]
details[R]
end_time[R]
large_image[R]
large_text[R]
name[R]
small_image[R]
small_text[R]
start_time[R]
state[R]
url[R]
Public Class Methods
construct(data)
click to toggle source
# File lib/mij-discord/data/user.rb, line 86 def self.construct(data) data = {name: data} if data.is_a?(String) times = { 'start' => data.try_keys(:start_time, 'start_time')&.to_i, 'end' => data.try_keys(:end_time, 'end_time')&.to_i, }.delete_if {|_,v| v.nil? } assets = { 'large_image' => data.try_keys(:large_image, 'large_image')&.to_s, 'large_text' => data.try_keys(:large_text, 'large_text')&.to_s, 'small_image' => data.try_keys(:small_image, 'small_image')&.to_s, 'small_text' => data.try_keys(:small_text, 'small_text')&.to_s, }.delete_if {|_,v| v.nil? } game = { 'type' => PLAYING_TYPE.index(data.try_keys(:type, 'type')).to_i, 'name' => data.try_keys(:name, 'name')&.to_s, 'url' => data.try_keys(:url, 'url')&.to_s, 'details' => data.try_keys(:details, 'details')&.to_s, 'state' => data.try_keys(:state, 'state')&.to_s, 'application_id' => data.try_keys(:application, 'application')&.to_s, 'timestamps' => times.empty? ? nil : times, 'assets' => assets.empty? ? nil : assets, }.delete_if {|_,v| v.nil? } game end
new(data)
click to toggle source
# File lib/mij-discord/data/user.rb, line 38 def initialize(data) @type = data['type'] @name = data['name'] @url = data['url'] @details = data['details'] @state = data['state'] @application = data['application_id'] if (start_time = data.dig('timestamps', 'start')) @start_time = Time.at(start_time.to_i).utc end if (end_time = data.dig('timestamps', 'end')) @end_time = Time.at(end_time.to_i).utc end if (assets = data['assets']) @large_image = assets['large_image'] @large_text = assets['large_text'] @small_image = assets['small_image'] @small_text = assets['small_text'] end end
Public Instance Methods
inspect()
click to toggle source
# File lib/mij-discord/data/user.rb, line 80 def inspect MijDiscord.make_inspect(self, :type, :name, :url, :details, :state, :start_time, :end_time, :application, :large_image, :large_text, :small_image, :small_text) end
to_hash()
click to toggle source
# File lib/mij-discord/data/user.rb, line 61 def to_hash self.class.construct({ start_time: @start_time, end_time: @end_time, large_image: @large_image, large_text: @large_text, small_image: @small_image, small_text: @small_text, type: @type, name: @name, url: @url, details: @details, state: @state, application: @application, }) end
type()
click to toggle source
# File lib/mij-discord/data/user.rb, line 34 def type PLAYING_TYPE[@type] end