Sha256: 9e107d020258f77749ebbd1daddfae9c915b6a8ec41b4b4ec3ae6fc31874d40d
Contents?: true
Size: 1.78 KB
Versions: 2
Compression:
Stored size: 1.78 KB
Contents
module FbGraph class Collection < Array attr_reader :previous, :next, :total_count, :unread_count, :updated_time, :cursors def initialize(collection = nil) collection = case collection when Array {:data => collection, :count => collection.size} when Hash collection[:data] ||= [] # Fix for AdImage response data: field not being an array if collection[:data].is_a? Hash collection[:data] = collection[:data].values end collection when nil collection = {:data => [], :count => 0} else raise ArgumentError.new("Invalid collection") end # NOTE: Graph API returns {"data":{"to":[null]}} sometimes... :( collection[:data].delete_if(&:nil?) replace collection[:data] if (summary = collection[:summary]).present? @total_count = summary[:total_count] @unread_count = summary[:unread_count] @updated_time = Time.parse(summary[:updated_time]) if summary[:updated_time] else @total_count = collection[:count] end @previous, @next, @cursors = {}, {}, {} if (paging = collection[:paging]) if paging[:previous] @previous = fetch_params(paging[:previous]) end if paging[:next] @next = fetch_params(paging[:next]) end if paging[:cursors] @cursors[:after] = paging[:cursors].try(:[], :after) @cursors[:before] = paging[:cursors].try(:[], :before) end end end private def fetch_params(url) query = Rack::Utils.parse_nested_query( URI.unescape(URI.parse(URI.encode(url)).query) ) params = {} query.each do |key, value| params[key.to_sym] = value end params end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
fb_graph-2.7.17 | lib/fb_graph/collection.rb |
fb_graph-2.7.16 | lib/fb_graph/collection.rb |