class NasaEarth

Constants

VALIDATORS

Attributes

api_key[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/nasa_earth.rb, line 19
def initialize options = {}
  @api_key = options[:api_key]
end

Public Instance Methods

assets(params) click to toggle source
# File lib/nasa_earth.rb, line 31
def assets params
  params[:api_key] = @api_key unless @api_key.nil?
  _check_params params
  uri = URI('https://api.nasa.gov/planetary/earth/assets')
  uri.query = URI.encode_www_form(params)
  return _get_response uri
end
imagery(params) click to toggle source
# File lib/nasa_earth.rb, line 23
def imagery params
  params[:api_key] = @api_key unless @api_key.nil?
  _check_params params
  uri = URI('https://api.nasa.gov/planetary/earth/imagery')
  uri.query = URI.encode_www_form(params)
  return _get_response uri
end

Private Instance Methods

_check_params(params) click to toggle source
# File lib/nasa_earth.rb, line 52
def _check_params params
  VALIDATORS.each do |name, conditions|
    if params.has_key? name
      unless params[name].is_a? conditions[:type]
        raise ArgumentError, "'#{name}' should be a #{conditions[:type].to_s}"
      end
    elsif conditions[:mandatory]
      raise ArgumentError, "Argument '#{name}' is mandatory"
    end
  end
end
_get_response(uri) click to toggle source
# File lib/nasa_earth.rb, line 40
def _get_response uri
  res = Net::HTTP.get_response(uri)
  response = {
    'code'  => res.code,
    'message' => res.message
  }
  if res.is_a? Net::HTTPSuccess
    response['content'] = JSON.load(res.body)
  end
  return response
end