| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- # frozen_string_literal: true
- require_relative 'concerns/serializable'
- class Embed
- attr_accessor :title,
- :description,
- :url,
- :color,
- :timestamp,
- :footer,
- :thumbnail,
- :image,
- :author,
- :fields
- include Serializable
- class Footer
- attr_accessor :icon_url, :text
- include Serializable
- def to_hash
- {
- icon_url: icon_url,
- text: text
- }
- end
- end
- class Image
- attr_accessor :url
- include Serializable
- def to_hash
- {
- url: url
- }
- end
- end
- class Author
- attr_accessor :name, :url, :icon_url
- include Serializable
- def to_hash
- {
- name: name,
- url: url,
- icon_url: icon_url
- }
- end
- end
- class Field
- attr_accessor :name, :value, :inline
- include Serializable
- def to_hash
- {
- name: name,
- value: value,
- inline: inline
- }
- end
- end
- def to_hash
- hash = {
- title: title,
- description: description,
- url: url,
- color: int_color,
- timestamp: timestamp
- }
- hash[:footer] = footer if footer
- hash[:thumbnail] = thumbnail if thumbnail
- hash[:image] = image if image
- hash[:author] = author if author
- hash[:fields] = fields if fields
- hash
- end
- def int_color
- return nil unless color
- hex = color.to_s.sub(/\A#/, '0x')
- Integer(hex)
- end
- end
|