Sha256: ffdee629fc7f600909b9e708874d87e99ed8e0ee52aed233caae8c05e3bc48d4
Contents?: true
Size: 1.22 KB
Versions: 38
Compression:
Stored size: 1.22 KB
Contents
module FbGraph class Collection < Array attr_reader :previous, :next, :total_count def initialize(collection = nil) collection = case collection when Array {:data => collection, :count => collection.size} when Hash collection[:data] ||= [] 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?) result = replace(collection[:data]) @total_count = collection[:count] @previous, @next = {}, {} if (paging = collection[:paging]) if paging[:previous] @previous = fetch_params(paging[:previous]) end if paging[:next] @next = fetch_params(paging[:next]) end end end private def fetch_params(url) query = URI.parse(URI.encode(url)).query params = {} query.split('&').each do |q| key, value = q.split('=') if ['limit', 'offset', 'until', 'since'].include?(key) params[key.to_sym] = URI.unescape(value) end end params end end end
Version data entries
38 entries across 38 versions & 1 rubygems