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