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