class CurrentMetar::Metar
Constants
- METAR_ATTRIBUTE_MAPPING
Attributes
available[RW]
icao[RW]
no_results[RW]
observation_time[RW]
temperature[RW]
visibility[RW]
wind_direction[RW]
wind_gust_speed[RW]
wind_speed[RW]
Public Class Methods
get_metar(icao)
click to toggle source
# File lib/current_metar/metar.rb, line 15 def self.get_metar(icao) metar = CurrentMetar::Metar.new() metar.icao = icao begin metar_response_body = REXML::Document.new(CurrentMetar::Request.query_adds(metar.icao)) if metar_response_body.root.elements['data'].attributes.get_attribute('num_results').value == '0' metar.available = false metar.no_results = true else metar_response_body.root.elements.each("data/METAR") do |metar_xml| metar.parse_metar_xml(metar_xml) end metar.available = true metar.no_results = false end rescue metar.available = false metar.no_results = false ensure return metar end end
new_from_xml(metar_xml)
click to toggle source
# File lib/current_metar/metar.rb, line 38 def self.new_from_xml(metar_xml) metar = CurrentMetar::Metar.new() begin metar.parse_metar_xml(metar_xml) metar.available = true metar.no_results = false rescue metar.availabe = false metar.no_results = false ensure return metar end end
Public Instance Methods
parse_metar_xml(metar_xml)
click to toggle source
# File lib/current_metar/metar.rb, line 52 def parse_metar_xml(metar_xml) unless metar_xml.elements['temp_c'].nil? self.temperature = (9/5.0 * metar_xml.elements['temp_c'].text.to_i + 32).round end unless metar_xml.elements['observation_time'].nil? self.observation_time = Time.parse(metar_xml.elements['observation_time'].text) end self.parse_standard_attributes(metar_xml) end
parse_standard_attributes(metar_xml)
click to toggle source
# File lib/current_metar/metar.rb, line 62 def parse_standard_attributes(metar_xml) METAR_ATTRIBUTE_MAPPING.each do |key, value| unless metar_xml.elements[value].nil? self.send( "#{key}=", metar_xml.elements[value].text) end end end