class DataGov::Client
Public Instance Methods
get(path, params = {})
click to toggle source
@return [Hash] a parsed JSON hash
# File lib/data_gov/client.rb, line 8 def get(path, params = {}) response = connection.get(path) do |req| req.params = params end puts "#{response.status} #{response.env.url}" response.body end
paginated_get(path, accessor, options = {})
click to toggle source
# File lib/data_gov/client.rb, line 16 def paginated_get(path, accessor, options = {}) Enumerator.new do |yielder| params = options.dup rows = params.delete(:rows) { 5 } start = params.delete(:start) { 1 } max = params.delete(:max) { 10 } total = 0 loop do data = get(path, { rows: rows, start: start }.merge(params)) total += data['result'][accessor].length data['result'][accessor].each do |element| yielder.yield element end start += rows puts "total: #{total}, max: #{max}, count: #{data['result']['count']}" break if total >= data['result']['count'] || total >= max end end end
Private Instance Methods
connection()
click to toggle source
# File lib/data_gov/client.rb, line 42 def connection @connection ||= begin conn = Faraday.new(url: 'https://catalog.data.gov') do |faraday| faraday.adapter Faraday.default_adapter faraday.response :json end conn.options.timeout = 60 conn.options.open_timeout = 10 conn end end