class NasaNeo::CloseObj::Client
Constants
- ESTIMATED_DIAMETER_KEYS
- ESTIMATED_DIAMETER_OPTIONS
- HAZARDOUS_KEYS
- MISS_DISTANCE_KEYS
- MISS_DISTANCE_OPTIONS
- NEO_ID_KEYS
- NEO_NAME_KEYS
- VELOCITY_KEYS
- VELOCITY_OPTIONS
Attributes
date[RW]
key[R]
Public Class Methods
new(config)
click to toggle source
# File lib/nasa-neo/client.rb, line 24 def initialize(config) @config = config @calls_remaining = nil @key = config.api_key @date = parsed_date @full_url = nil @full_url_neo = nil @neo_id = nil @result = nil @result_neo = nil @neo_position = 0 end
Public Instance Methods
calls_remaining()
click to toggle source
# File lib/nasa-neo/client.rb, line 42 def calls_remaining @calls_remaining == nil ? error_feedback("make new API call first") : @calls_remaining end
estimated_diameter(measurement = nil, min_max = nil)
click to toggle source
# File lib/nasa-neo/client.rb, line 47 def estimated_diameter(measurement = nil, min_max = nil) retrieve_specific(ESTIMATED_DIAMETER_OPTIONS, ESTIMATED_DIAMETER_KEYS, measurement, min_max) end
hazardous?()
click to toggle source
# File lib/nasa-neo/client.rb, line 51 def hazardous? call_and_rescue { retrieve_neo(HAZARDOUS_KEYS) } end
key=(value)
click to toggle source
# File lib/nasa-neo/client.rb, line 37 def key=(value) @calls_remaining = nil @key = value end
miss_distance(measurement = nil)
click to toggle source
# File lib/nasa-neo/client.rb, line 55 def miss_distance(measurement = nil) retrieve_specific(MISS_DISTANCE_OPTIONS, MISS_DISTANCE_KEYS, measurement) end
neo_data()
click to toggle source
# File lib/nasa-neo/client.rb, line 63 def neo_data call_and_rescue { retrieve_neo } end
neo_data_verbose()
click to toggle source
# File lib/nasa-neo/client.rb, line 67 def neo_data_verbose call_and_rescue { retrieve_neo_verbose } end
neo_name()
click to toggle source
# File lib/nasa-neo/client.rb, line 59 def neo_name call_and_rescue { retrieve_neo(NEO_NAME_KEYS) } end
neo_select(n)
click to toggle source
# File lib/nasa-neo/client.rb, line 83 def neo_select(n) @neo_position = n - 1 end
neo_total()
click to toggle source
# File lib/nasa-neo/client.rb, line 71 def neo_total if @full_url != set_full_url call_and_rescue { get_api_data["element_count"]} else @result["element_count"] end end
update()
click to toggle source
# File lib/nasa-neo/client.rb, line 79 def update call_and_rescue { get_api_data } end
velocity(measurement = nil)
click to toggle source
# File lib/nasa-neo/client.rb, line 87 def velocity(measurement = nil) retrieve_specific(VELOCITY_OPTIONS, VELOCITY_KEYS, measurement) end
Private Instance Methods
buffer_url(url)
click to toggle source
# File lib/nasa-neo/client.rb, line 93 def buffer_url(url) api_data = open(url) @calls_remaining = api_data.meta['x-ratelimit-remaining'].to_i api_data.read end
call_and_rescue() { || ... }
click to toggle source
# File lib/nasa-neo/client.rb, line 99 def call_and_rescue yield if block_given? rescue OpenURI::HTTPError => e @full_url = nil @full_url_neo = nil error_feedback(e.io.status) end
error_feedback(error_info)
click to toggle source
# File lib/nasa-neo/client.rb, line 152 def error_feedback(error_info) { 'error': error_info } end
get_api_data()
click to toggle source
# File lib/nasa-neo/client.rb, line 107 def get_api_data @full_url = set_full_url @neo_position = 0 buffer = JSON.parse(buffer_url(@full_url)) @result = buffer end
parsed_date()
click to toggle source
# File lib/nasa-neo/client.rb, line 114 def parsed_date Time.now.strftime("%Y-%m-%d") end
retrieve_neo(keys = [])
click to toggle source
# File lib/nasa-neo/client.rb, line 118 def retrieve_neo(keys = []) get_api_data if @full_url != set_full_url root_keys = ["near_earth_objects", "#{@date}", @neo_position] @result.dig(*root_keys + keys) end
retrieve_neo_verbose()
click to toggle source
# File lib/nasa-neo/client.rb, line 124 def retrieve_neo_verbose @neo_id = retrieve_neo(NEO_ID_KEYS) if @full_url_neo != set_full_url_neo @full_url_neo = set_full_url_neo @result_neo = JSON.parse(buffer_url(@full_url_neo)) else @result_neo end end
retrieve_specific(options, keys, measurement, min_max = nil)
click to toggle source
# File lib/nasa-neo/client.rb, line 134 def retrieve_specific(options, keys, measurement, min_max = nil) if options.include? measurement chained_keys = retrieve_neo(keys + ["#{measurement}"]) if ["min", "max"].include? min_max chained_keys = retrieve_neo(keys + ["#{measurement}", "estimated_diameter_#{min_max}"]) call_and_rescue { chained_keys } else min_max == nil ? call_and_rescue { (chained_keys.respond_to?(:to_f) && chained_keys != nil) ? chained_keys.to_f : chained_keys } : error_feedback(['min_max', 'check arguments']) end else measurement == nil ? call_and_rescue { retrieve_neo(keys) } : error_feedback(['measurement', 'check arguments']) end end
set_full_url()
click to toggle source
# File lib/nasa-neo/client.rb, line 156 def set_full_url "#{@config.host}/feed?start_date=#{@date}&end_date=#{@date}&detailed=false&api_key=#{@key}" end
set_full_url_neo()
click to toggle source
# File lib/nasa-neo/client.rb, line 160 def set_full_url_neo "#{@config.host}/neo/#{@neo_id}?api_key=#{@key}" end