current_metar 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/current_metar/metar.rb +22 -18
  2. metadata +31 -51
@@ -1,51 +1,55 @@
1
1
  class CurrentMetar::Metar
2
2
  require 'rexml/document'
3
- attr_accessor :wind_speed, :wind_direction, :wind_gust_speed, :observation_time, :visibility, :temperature, :available, :no_results
3
+ require 'time'
4
+ attr_accessor :wind_speed, :wind_direction, :wind_gust_speed, :observation_time, :visibility, :temperature, :available, :no_results, :observation_time
4
5
  attr_reader :icao
5
6
 
6
- METAR_ATTRIBUTE_MAPPING = {
7
- :wind_speed => "wind_speed_kt",
8
- :wind_direction => "wind_dir_degrees",
9
- :wind_gust_speed => "wind_gust_kt",
10
- :visibility => "visibility_statute_mi"
11
- }
7
+ METAR_ATTRIBUTE_MAPPING = {
8
+ :wind_speed => "wind_speed_kt",
9
+ :wind_direction => "wind_dir_degrees",
10
+ :wind_gust_speed => "wind_gust_kt",
11
+ :visibility => "visibility_statute_mi"
12
+ }
12
13
 
13
14
  def initialize(icao)
14
15
  @icao = icao
15
16
  end
16
17
 
17
18
  def self.get_metar(icao)
18
-
19
- metar = CurrentMetar::Metar.new(icao)
19
+
20
+ metar = CurrentMetar::Metar.new(icao)
20
21
  begin
21
- metar_response_body = REXML::Document.new(CurrentMetar::Request.query_adds(metar.icao))
22
+ metar_response_body = REXML::Document.new(CurrentMetar::Request.query_adds(metar.icao))
22
23
  if metar_response_body.root.elements['data'].attributes.get_attribute('num_results').value == '0'
23
- metar.available = false
24
+ metar.available = false
24
25
  metar.no_results = true
25
26
  else
26
27
  metar_response_body.root.elements.each("data/METAR") do |metar_xml|
27
28
  unless metar_xml.elements['temp_c'].nil?
28
29
  metar.temperature = (9/5.0 * metar_xml.elements['temp_c'].text.to_i + 32).round
29
30
  end
31
+ unless metar_xml.elements['observation_time'].nil?
32
+ metar.observation_time = Time.parse(metar_xml.elements['observation_time'].text)
33
+ end
30
34
  metar.parse_standard_attributes(metar_xml)
31
35
  end
32
36
  metar.available = true
33
37
  metar.no_results = false
34
38
  end
35
39
  rescue
36
- metar.available = false
40
+ metar.available = false
37
41
  metar.no_results = false
38
42
  ensure
39
43
  return metar
40
44
  end
41
45
  end
42
46
 
43
- def parse_standard_attributes(metar_xml)
47
+ def parse_standard_attributes(metar_xml)
44
48
  METAR_ATTRIBUTE_MAPPING.each do |key, value|
45
- unless metar_xml.elements[value].nil?
46
- self.send( "#{key}=", metar_xml.elements[value].text)
47
- end
49
+ unless metar_xml.elements[value].nil?
50
+ self.send( "#{key}=", metar_xml.elements[value].text)
51
+ end
48
52
  end
49
- end
50
-
53
+ end
54
+
51
55
  end
metadata CHANGED
@@ -1,83 +1,63 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: current_metar
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Nathan Humbert
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-06-18 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-08 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: fakeweb
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &16209180 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :development
33
- version_requirements: *id001
34
- description: current_metar queries the ADDS Experimental server to pull back current weather data for a specific reporting station
35
- email:
23
+ prerelease: false
24
+ version_requirements: *16209180
25
+ description: current_metar queries the ADDS Experimental server to pull back current
26
+ weather data for a specific reporting station
27
+ email:
36
28
  - nathan.humbert@gmail.com
37
29
  executables: []
38
-
39
30
  extensions: []
40
-
41
31
  extra_rdoc_files: []
42
-
43
- files:
32
+ files:
44
33
  - README
45
34
  - MIT_LICENSE
46
35
  - lib/current_metar/metar.rb
47
36
  - lib/current_metar/request.rb
48
37
  - lib/current_metar.rb
49
38
  homepage: https://github.com/nathanhumbert/current_metar
50
- licenses:
39
+ licenses:
51
40
  - MIT
52
41
  post_install_message:
53
42
  rdoc_options: []
54
-
55
- require_paths:
43
+ require_paths:
56
44
  - lib
57
- required_ruby_version: !ruby/object:Gem::Requirement
45
+ required_ruby_version: !ruby/object:Gem::Requirement
58
46
  none: false
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- hash: 3
63
- segments:
64
- - 0
65
- version: "0"
66
- required_rubygems_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
52
  none: false
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- hash: 3
72
- segments:
73
- - 0
74
- version: "0"
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
75
57
  requirements: []
76
-
77
58
  rubyforge_project:
78
- rubygems_version: 1.7.2
59
+ rubygems_version: 1.8.10
79
60
  signing_key:
80
61
  specification_version: 3
81
62
  summary: Query current metar data from the ADDS Experimental data server.
82
63
  test_files: []
83
-