Kylie Jo Swistak před 6 roky
rodič
revize
f4ef9441d9
1 změnil soubory, kde provedl 91 přidání a 0 odebrání
  1. 91 0
      app/models/embed.rb

+ 91 - 0
app/models/embed.rb

@@ -0,0 +1,91 @@
+# 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