Sha256: 227e2deee251a098eb16088ba55daa96f9c355e17c0480a2dbc6bad0c49f5052
Contents?: true
Size: 1.1 KB
Versions: 2
Compression:
Stored size: 1.1 KB
Contents
require "addressable/uri" require "rest_client" require "json" module FreebaseImporters class Query include Enumerable def initialize(mql, cursor = nil) @mql, @cursor = mql, cursor end def response @response ||= json_query end def result json_query['result'] end # https://developers.google.com/freebase/v1/mql-overview#querying-with-cursor-paging-results def next if (new_cursor = response["cursor"]) self.class.new(mql, new_cursor) end end def each(*args, &block) return enum_for(__callee__) unless block_given? result.each(*args, &block) end private attr_reader :mql, :cursor def base_url Addressable::URI.parse('https://www.googleapis.com/freebase/v1/mqlread') end def query puts "About to mql: #{mql.inspect}" if ENV['FREEBASE_IMPORTS_DEBUG'] url = base_url url.query_values = { 'query' => [mql].to_json, 'cursor' => cursor } RestClient.get url.normalize.to_s, format: :json end def json_query JSON.parse(query) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
freebase-importers-0.0.4 | lib/freebase_importers/query.rb |
freebase-importers-0.0.3 | lib/freebase_importers/query.rb |