module Openaq::Networking

Constants

PARAMS

Public Instance Methods

get(path, params = PARAMS) click to toggle source

@raise [Openaq::Error] if the request is not successful

# File lib/openaq/networking.rb, line 11
def get(path, params = PARAMS)
  uri             = build_uri(path, params)
  response        = Net::HTTP.get_response(uri)
  parsed_response = JSON.parse(response.body)

  if not response.is_a?(Net::HTTPSuccess)
    err_msg = "#{parsed_response['error']}, #{parsed_response['message']}"
    raise Openaq::Error, err_msg
  end

  parsed_response['results']
end
paginated_get(path, params = PARAMS) click to toggle source

@raise [StopIteration] when there are no more results @raise [Openaq::Error] if the request is not successful

# File lib/openaq/networking.rb, line 26
def paginated_get(path, params = PARAMS)
  Enumerator.new do |yielder|
    page = 1
    params = { page: page }.merge(params)

    loop do
      response = get(path, params)
      if !response.empty?
        response.map { |item| yielder << item }
        params[:page] += 1
      else
        raise StopIteration
      end
    end
  end.lazy
end

Private Instance Methods

build_uri(path, params) click to toggle source
# File lib/openaq/networking.rb, line 45
def build_uri(path, params)
  uri = URI(Openaq.url + path)
  uri.query = URI.encode_www_form(params)
  uri
end