lib/flayyer.rb in flayyer-1.1.0 vs lib/flayyer.rb in flayyer-1.2.0

- old
+ new

@@ -3,29 +3,44 @@ module Flayyer class Error < StandardError; end class FlayyerURL - attr_accessor :version, :tenant, :deck, :template, :extension, :variables + attr_accessor :version, :tenant, :deck, :template, :extension, :variables, :meta def self.create(&block) self.new(&block) end - def initialize(tenant = nil, deck = nil, template = nil, version = nil, extension = 'jpeg', variables = {}) + def initialize(tenant = nil, deck = nil, template = nil, version = nil, extension = 'jpeg', variables = {}, meta = {}) @tenant = tenant @deck = deck @template = template @version = version @extension = extension @variables = variables + @meta = meta yield(self) if block_given? end def querystring + # Allow accesing the keys of @meta with symbols and strings + # https://stackoverflow.com/a/10786575 + @meta.default_proc = proc do |h, k| + case k + when String then sym = k.to_sym; h[sym] if h.key?(sym) + when Symbol then str = k.to_s; h[str] if h.key?(str) + end + end + defaults = { - __v: Time.now.to_i, # This forces crawlers to refresh the image + __v: @meta[:v] || Time.now.to_i, # This forces crawlers to refresh the image + __id: @meta[:id] || nil, + _w: @meta[:width] || nil, + _h: @meta[:height] || nil, + _res: @meta[:resolution] || nil, + _ua: @meta[:agent] || nil, } result = FlayyerHash.new(@variables.nil? ? defaults : defaults.merge(@variables)) result.to_query end @@ -55,9 +70,11 @@ @hash.reduce({}) do |h, (k, v)| new_key = key.nil? ? k : "#{key}[#{k}]" v = Hash[v.each_with_index.to_a.map(&:reverse)] if v.is_a?(Array) if v.is_a?(Hash) h.merge!(FlayyerHash.new(v).to_query_hash(new_key)) + elsif v.nil? + # skip null values else h[new_key] = v end h end