vatsim_online_redux 1.0.1 → 2.1.1

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.
@@ -0,0 +1,13 @@
1
+ {
2
+ "data": {
3
+ "v3": [
4
+ "https://data.vatsim.net/v3/vatsim-data.json"
5
+ ]
6
+ },
7
+ "user": [
8
+ "https://stats.vatsim.net/search_id.php"
9
+ ],
10
+ "metar": [
11
+ "http://metar.vatsim.net/metar.php"
12
+ ]
13
+ }
@@ -1,54 +1,58 @@
1
1
  require 'spec_helper.rb'
2
- require 'vatsim_online_spec_helper.rb'
2
+ require 'data_downloader_spec_helper'
3
3
 
4
4
  describe VatsimOnline do
5
5
 
6
- describe "vatsim_online" do
7
- it "should work :)" do
8
- gem_data_file
9
- "ZGGG".vatsim_online.class.should eq(Hash)
10
- "LO".vatsim_online.class.should eq(Hash)
11
- "WM".vatsim_online[:atc].size.should eq(4)
12
- "LO".vatsim_online[:pilots].size.should eq(12)
13
- "LO".vatsim_online(:pilots => true, :atc => true).class.should eq(Hash)
14
- "LO".vatsim_online(:pilots => true, :atc => true)[:atc].size.should eq(0)
15
- "LO".vatsim_online(:pilots => true, :atc => true)[:pilots].size.should eq(12)
16
- "LO".vatsim_online(:atc => false)[:atc].size.should eq(0)
17
- "LO".vatsim_online(:atc => false)[:pilots].size.should eq(12)
18
- "WM".vatsim_online(:pilots => false)[:atc].size.should eq(4)
19
- "LO".vatsim_online(:pilots => false)[:pilots].size.should eq(0)
20
-
21
- "LO".vatsim_online[:pilots].first.callsign.should eq("AMZ1105")
22
- "WM".vatsim_online[:atc].first.callsign.should eq("WMKK_APP")
23
- "LO".vatsim_online(:gcmap_width => "400", :gcmap_height => "400")[:pilots].first.gcmap.should eq("http://www.gcmap.com/map?P=LOWW-N45.45676+E12.28972-LIPZ%2C+\"AMZ1105%5Cn1007+ft%5Cn128+kts\"%2B%40N45.45676+E12.28972%0d%0a&MS=wls&MR=120&MX=400x400&PM=b:disc7%2b\"%25U%25+%28N\"")
24
- "LO".vatsim_online(:gcmap_width => 400, :gcmap_height => 400)[:pilots].first.gcmap.should eq("http://www.gcmap.com/map?P=LOWW-N45.45676+E12.28972-LIPZ%2C+\"AMZ1105%5Cn1007+ft%5Cn128+kts\"%2B%40N45.45676+E12.28972%0d%0a&MS=wls&MR=120&MX=400x400&PM=b:disc7%2b\"%25U%25+%28N\"")
6
+ before(:each) do
7
+ delete_local_files
8
+ stub_request(:get, 'https://status.vatsim.net/status.json').
9
+ to_return(body: File.read(File.join(File.dirname(__FILE__), 'support', 'vatsim_status.json')), status: :ok)
10
+ stub_request(:get, 'https://data.vatsim.net:443/v3/vatsim-data.json').
11
+ to_return(body: File.read(File.join(File.dirname(__FILE__), 'support', 'vatsim_data.json')), status: :ok)
12
+ end
13
+
14
+ describe 'vatsim_online' do
15
+ it 'should work :)' do
16
+ 'ZGGG'.vatsim_online.class.should eq(Hash)
17
+ 'LO'.vatsim_online.class.should eq(Hash)
18
+ 'ED'.vatsim_online[:atc].size.should eq(4)
19
+ 'EG'.vatsim_online[:pilots].size.should eq(1)
20
+ 'EG'.vatsim_online(:pilots => true, :atc => true).class.should eq(Hash)
21
+ 'EG'.vatsim_online(:pilots => true, :atc => true)[:atc].size.should eq(1)
22
+ 'EG'.vatsim_online(:pilots => true, :atc => true)[:pilots].size.should eq(1)
23
+ 'EG'.vatsim_online(:atc => false)[:atc].size.should eq(0)
24
+ 'EG'.vatsim_online(:atc => false)[:pilots].size.should eq(1)
25
+ 'EG'.vatsim_online(:pilots => false)[:atc].size.should eq(1)
26
+ 'EG'.vatsim_online(:pilots => false)[:pilots].size.should eq(0)
27
+
28
+ 'LO'.vatsim_online[:pilots].first.callsign.should eq('VFE1625')
29
+ 'EG'.vatsim_online[:atc].first.callsign.should eq('EGAC_APP')
30
+ 'LO'.vatsim_online(:gcmap_width => '400', :gcmap_height => '400')[:pilots].first.gcmap.should eq('http://www.gcmap.com/map?P=LOWS-N50.69043+E5.15406-EGBB%2C+"VFE1625%5Cn35669+ft%5Cn386+kts"%2B%40N50.69043+E5.15406%0d%0a&MS=wls&MR=120&MX=400x400&PM=b:disc7%2b"%25U%25+%28N"')
31
+ 'LO'.vatsim_online(:gcmap_width => 400, :gcmap_height => 400)[:pilots].first.gcmap.should eq('http://www.gcmap.com/map?P=LOWS-N50.69043+E5.15406-EGBB%2C+"VFE1625%5Cn35669+ft%5Cn386+kts"%2B%40N50.69043+E5.15406%0d%0a&MS=wls&MR=120&MX=400x400&PM=b:disc7%2b"%25U%25+%28N"')
25
32
  end
26
33
 
27
- it "should be case insensitive" do
28
- gem_data_file
29
- "wm".vatsim_online[:atc].size.should eq(4)
30
- "lo".vatsim_online[:pilots].size.should eq(12)
31
- "wm".vatsim_online(:pilots => true, :atc => true)[:atc].size.should eq(4)
32
- "lo".vatsim_online(:pilots => true, :atc => true)[:pilots].size.should eq(12)
34
+ it 'should be case insensitive' do
35
+ 'eg'.vatsim_online[:atc].size.should eq(1)
36
+ 'eg'.vatsim_online[:pilots].size.should eq(1)
37
+ 'eg'.vatsim_online(:pilots => true, :atc => true)[:atc].size.should eq(1)
38
+ 'eg'.vatsim_online(:pilots => true, :atc => true)[:pilots].size.should eq(1)
33
39
  end
34
40
  end
35
41
 
36
- describe "vatsim_callsign" do
37
- it "should work :)" do
38
- gem_data_file
39
- "AMZ1105".vatsim_callsign.class.should eq(Array)
40
- "AMZ1105".vatsim_callsign.size.should eq(1)
41
- "AMZ1105".vatsim_callsign.first.callsign.should eq("AMZ1105")
42
- "BAW".vatsim_callsign.size.should eq(15)
43
- "BAW".vatsim_callsign.last.callsign.should eq("BAW9DV")
44
- "BAW, AMZ1105".vatsim_callsign.size.should eq(16)
45
- "BAW, QFA".vatsim_callsign.size.should eq(21)
42
+ describe 'vatsim_callsign' do
43
+ it 'should work :)' do
44
+ 'VFE1625'.vatsim_callsign.class.should eq(Array)
45
+ 'VFE1625'.vatsim_callsign.size.should eq(1)
46
+ 'VFE1625'.vatsim_callsign.first.callsign.should eq('VFE1625')
47
+ 'DAL'.vatsim_callsign.size.should eq(1)
48
+ 'DAL'.vatsim_callsign.last.callsign.should eq('DAL2136')
49
+ 'DAL, ARG1458'.vatsim_callsign.size.should eq(2)
50
+ 'DAL, SX'.vatsim_callsign.size.should eq(2)
46
51
 
47
52
  end
48
53
 
49
- it "should be case insensitive" do
50
- gem_data_file
51
- "amz1105".vatsim_callsign.first.callsign.should eq("AMZ1105")
54
+ it 'should be case insensitive' do
55
+ 'vfe1625'.vatsim_callsign.first.callsign.should eq('VFE1625')
52
56
  end
53
57
  end
54
58
 
@@ -57,100 +61,101 @@ end
57
61
 
58
62
  describe VatsimTools::Station do
59
63
 
60
- describe "new object" do
61
- it "should return proper attributes" do
62
- gem_data_file
63
- icao = "WMKK"
64
+ before(:each) do
65
+ delete_local_files
66
+ stub_request(:get, 'https://status.vatsim.net/status.json').
67
+ to_return(body: File.read(File.join(File.dirname(__FILE__), 'support', 'vatsim_status.json')), status: :ok)
68
+ stub_request(:get, 'https://data.vatsim.net:443/v3/vatsim-data.json').
69
+ to_return(body: File.read(File.join(File.dirname(__FILE__), 'support', 'vatsim_data.json')), status: :ok)
70
+ end
71
+
72
+ describe 'new object' do
73
+ it 'should return proper attributes' do
74
+ icao = 'EGAC'
64
75
  station = VatsimTools::StationParser.new(icao).stations.first
65
76
  new_object = VatsimTools::Station.new(station)
66
- new_object.callsign.should eq("WMKK_APP")
67
- new_object.name.should eq("Adriel Loke")
68
- new_object.role.should eq("ATC")
69
- new_object.frequency.should eq("124.200")
70
- new_object.rating.should eq("S2")
71
- new_object.facility.should eq("5")
72
- new_object.logon.should eq("20120722092836")
73
- new_object.latitude.should eq("2.93968")
74
- new_object.latitude_humanized.should eq("N2.93968")
75
- new_object.longitude.should eq("101.39812")
76
- new_object.longitude_humanized.should eq("E101.39812")
77
+ new_object.callsign.should eq('EGAC_APP')
78
+ new_object.name.should eq('Daniel Button')
79
+ new_object.role.should eq('controller')
80
+ new_object.frequency.should eq('130.850')
81
+ new_object.rating.should eq('C1')
82
+ new_object.facility.should eq('5')
83
+ new_object.logon.should eq('2021-01-29T19:11:14.4846565Z')
84
+ new_object.latitude.should eq('')
85
+ new_object.latitude_humanized.should eq(nil)
86
+ new_object.longitude.should eq('')
87
+ new_object.longitude_humanized.should eq(nil)
77
88
  end
78
89
 
79
- it "should parse Ruby time with online_since attr" do
80
- gem_data_file
81
- icao = "LBWN"
90
+ it 'should parse Ruby time with online_since attr' do
91
+ icao = 'UMMS'
82
92
  station = VatsimTools::StationParser.new(icao).sorted_station_objects[:atc].first
83
- station.logon.should eq("20120722091954")
93
+ station.logon.should eq('2021-01-29T19:11:13.0906448Z')
84
94
  station.online_since.class.should eq(Time)
85
95
  station.online_since.utc?.should eq(true)
86
- station.online_since.should eq("2012-07-22 09:19:54 UTC")
87
- station.rating.should eq("INS")
96
+ station.online_since.should eq('2021-01-29T19:11:13.0906448Z')
97
+ station.rating.should eq('S2')
88
98
  end
89
99
  end
90
100
 
91
- describe "pilot object" do
92
- it "should contain all attributes" do
93
- gem_data_file
94
- icao = "EGLL"
101
+ describe 'pilot object' do
102
+ it 'should contain all attributes' do
103
+ icao = 'LSGG'
95
104
  station = VatsimTools::StationParser.new(icao).stations.first
96
105
  new_object = VatsimTools::Station.new(station)
97
- new_object.callsign.should eq("AAL026")
98
- new_object.name.should eq("Manuel Santillan MMCU")
99
- new_object.role.should eq("PILOT")
100
- new_object.latitude.should eq("44.09780")
101
- new_object.latitude_humanized.should eq("N44.0978")
102
- new_object.longitude.should eq("-58.41483")
103
- new_object.longitude_humanized.should eq("W58.41483")
104
- new_object.planned_altitude.should eq("370")
105
- new_object.transponder.should eq("4122")
106
- new_object.heading.should eq("73")
107
- new_object.qnh_in.should eq("30.12")
108
- new_object.qnh_mb.should eq("1019")
109
- new_object.flight_type.should eq("I")
110
- new_object.cid.should eq("1210329")
106
+ new_object.callsign.should eq('AFR352')
107
+ new_object.name.should eq('Michel Matalon LSZH')
108
+ new_object.role.should eq('pilot')
109
+ new_object.latitude.should eq('44.99953')
110
+ new_object.latitude_humanized.should eq('N44.99953')
111
+ new_object.longitude.should eq('9.47403')
112
+ new_object.longitude_humanized.should eq('E9.47403')
113
+ new_object.planned_altitude.should eq('38000')
114
+ new_object.transponder.should eq('4107')
115
+ new_object.heading.should eq('300')
116
+ new_object.qnh_in.should eq('29.64')
117
+ new_object.qnh_mb.should eq('1004')
118
+ new_object.flight_type.should eq('I')
119
+ new_object.cid.should eq('1379490')
111
120
  end
112
121
 
113
- it "should generate gcmap link" do
114
- gem_data_file
115
- icao = "EGLL"
122
+ it 'should generate gcmap link' do
123
+ icao = 'LSGG'
116
124
  station = VatsimTools::StationParser.new(icao).stations.first
117
125
  new_object = VatsimTools::Station.new(station)
118
- new_object.gcmap.should eq("http://www.gcmap.com/map?P=KDFW-N44.0978+W58.41483-EGLL%2C+\"AAL026%5Cn37210+ft%5Cn543+kts\"%2B%40N44.0978+W58.41483%0d%0a&MS=wls&MR=120&MX=720x360&PM=b:disc7%2b\"%25U%25+%28N\"")
126
+ new_object.gcmap.should eq('http://www.gcmap.com/map?P=EDUU-N44.99953+E9.47403-LSGG%2C+"AFR352%5Cn37729+ft%5Cn425+kts"%2B%40N44.99953+E9.47403%0d%0a&MS=wls&MR=120&MX=720x360&PM=b:disc7%2b"%25U%25+%28N"')
119
127
  end
120
128
 
121
- it "should handle resized gcmap" do
122
- gem_data_file
123
- icao = "EGLL"
129
+ it 'should handle resized gcmap' do
130
+ icao = 'LSGG'
124
131
  args = {}
125
- args[:gcmap_width] = "400"
126
- args[:gcmap_height] = "400"
132
+ args[:gcmap_width] = '400'
133
+ args[:gcmap_height] = '400'
127
134
  station = VatsimTools::StationParser.new(icao).stations.first
128
135
  new_object = VatsimTools::Station.new(station, args)
129
136
  new_object.gcmap_width.should eq(400)
130
137
  new_object.gcmap_height.should eq(400)
131
- new_object.gcmap.should eq("http://www.gcmap.com/map?P=KDFW-N44.0978+W58.41483-EGLL%2C+\"AAL026%5Cn37210+ft%5Cn543+kts\"%2B%40N44.0978+W58.41483%0d%0a&MS=wls&MR=120&MX=400x400&PM=b:disc7%2b\"%25U%25+%28N\"")
138
+ new_object.gcmap.should eq('http://www.gcmap.com/map?P=EDUU-N44.99953+E9.47403-LSGG%2C+"AFR352%5Cn37729+ft%5Cn425+kts"%2B%40N44.99953+E9.47403%0d%0a&MS=wls&MR=120&MX=400x400&PM=b:disc7%2b"%25U%25+%28N"')
132
139
 
133
140
  end
134
141
 
135
142
  end
136
143
 
137
- describe "atc object" do
138
- it "should handle regular and humanized atis" do
139
- gem_data_file
140
- icao = "LBWN"
144
+ describe 'atc object' do
145
+ it 'should handle regular and humanized atis' do
146
+ icao = 'EDBB'
141
147
  station = VatsimTools::StationParser.new(icao).sorted_station_objects[:atc].first
142
- station.logon.should eq("20120722091954")
143
- station.rating.should eq("INS")
144
- station.atis.should eq("$ voice2.vacc-sag.org/lfmn_app. Nice Approach. Charts at www.tinyurl.com/chartsfr. Visit www.vatfrance.org")
145
- station.atis_message.should eq("Nice Approach<br />Charts at www.tinyurl.com/chartsfr<br />Visit www.vatfrance.org")
148
+ station.logon.should eq('2021-01-29T19:11:13.2762054Z')
149
+ station.rating.should eq('C1')
150
+ station.atis.should eq('BERLIN DIRECTOR ON INTIAL CONTACT, STATE YOUR CALLSIGN ONLY')
151
+ station.atis_message.should eq('No published remark')
146
152
  end
147
153
 
148
- it "should handle no ATC remark" do
149
- gem_data_file
150
- icao = "NZAA"
154
+ it 'should handle no ATC remark' do
155
+ icao = 'EDBB'
151
156
  station = VatsimTools::StationParser.new(icao).sorted_station_objects[:atc].first
152
- station.atis.should eq("$ rw1.vatpac.org/nzaa_twr")
153
- station.atis_message.should eq("No published remark")
157
+ station.atis.should eq('BERLIN DIRECTOR ON INTIAL CONTACT, STATE YOUR CALLSIGN ONLY')
158
+ station.atis_message.should eq('No published remark')
154
159
  end
155
160
  end
156
161
 
@@ -20,6 +20,7 @@ Gem::Specification.new do |gem|
20
20
  gem.add_development_dependency "rake"
21
21
  gem.add_development_dependency "libnotify"
22
22
  gem.add_development_dependency "rb-inotify"
23
+ gem.add_development_dependency "webmock"
23
24
  gem.add_dependency "time_diff", "~> 0.3.0"
24
25
  gem.add_dependency "gcmapper", "~> 0.4.0"
25
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vatsim_online_redux
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Svilen Vassilev
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-03-30 00:00:00.000000000 Z
12
+ date: 2022-03-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -67,6 +67,20 @@ dependencies:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: webmock
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
70
84
  - !ruby/object:Gem::Dependency
71
85
  name: time_diff
72
86
  requirement: !ruby/object:Gem::Requirement
@@ -117,20 +131,21 @@ files:
117
131
  - Rakefile
118
132
  - lib/vatsim_online.rb
119
133
  - lib/vatsim_online/callsign_parser.rb
134
+ - lib/vatsim_online/callsign_regex_parser.rb
120
135
  - lib/vatsim_online/data_downloader.rb
121
136
  - lib/vatsim_online/station.rb
122
137
  - lib/vatsim_online/station_parser.rb
123
138
  - lib/vatsim_online/version.rb
124
139
  - spec/callsign_parser_spec.rb
125
- - spec/callsign_parser_spec_helper.rb
140
+ - spec/callsign_regex_parser_spec.rb
126
141
  - spec/data_downloader_spec.rb
127
142
  - spec/data_downloader_spec_helper.rb
128
143
  - spec/spec_helper.rb
129
144
  - spec/station_parser_spec.rb
130
- - spec/station_parser_spec_helper.rb
145
+ - spec/support/vatsim_data.json
146
+ - spec/support/vatsim_status.json
131
147
  - spec/vatsim_data.txt
132
148
  - spec/vatsim_online_spec.rb
133
- - spec/vatsim_online_spec_helper.rb
134
149
  - vatsim_online_redux.gemspec
135
150
  homepage: https://github.com/aldent95/vatsim_online_redux
136
151
  licenses:
@@ -151,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
166
  - !ruby/object:Gem::Version
152
167
  version: '0'
153
168
  requirements: []
154
- rubygems_version: 3.0.3
169
+ rubygems_version: 3.1.2
155
170
  signing_key:
156
171
  specification_version: 4
157
172
  summary: Updated version of original gem by Svilen Vassilev. Selectively pulls and
@@ -161,12 +176,12 @@ summary: Updated version of original gem by Svilen Vassilev. Selectively pulls a
161
176
  on preset intervals and cached locally to avoid flooding the servers.
162
177
  test_files:
163
178
  - spec/callsign_parser_spec.rb
164
- - spec/callsign_parser_spec_helper.rb
179
+ - spec/callsign_regex_parser_spec.rb
165
180
  - spec/data_downloader_spec.rb
166
181
  - spec/data_downloader_spec_helper.rb
167
182
  - spec/spec_helper.rb
168
183
  - spec/station_parser_spec.rb
169
- - spec/station_parser_spec_helper.rb
184
+ - spec/support/vatsim_data.json
185
+ - spec/support/vatsim_status.json
170
186
  - spec/vatsim_data.txt
171
187
  - spec/vatsim_online_spec.rb
172
- - spec/vatsim_online_spec_helper.rb
@@ -1,10 +0,0 @@
1
- def gem_data_file
2
- path = File.realpath("spec/vatsim_data.txt")
3
- data_file = File.open(path, :encoding => 'iso-8859-15')
4
- gem_data = data_file.read
5
- data_file.close
6
- data = Tempfile.new('vatsim_data', :encoding => 'iso-8859-15')
7
- data.write(gem_data.gsub(/["]/, '\s').force_encoding('iso-8859-15'))
8
- data.close
9
- File.rename data.path, "#{Dir.tmpdir}/vatsim_data.txt"
10
- end
@@ -1,10 +0,0 @@
1
- def gem_data_file
2
- path = File.realpath("spec/vatsim_data.txt")
3
- data_file = File.open(path, :encoding => 'iso-8859-15')
4
- gem_data = data_file.read
5
- data_file.close
6
- data = Tempfile.new('vatsim_data', :encoding => 'iso-8859-15')
7
- data.write(gem_data.gsub(/["]/, '\s').force_encoding('iso-8859-15'))
8
- data.close
9
- File.rename data.path, "#{Dir.tmpdir}/vatsim_data.txt"
10
- end
@@ -1,10 +0,0 @@
1
- def gem_data_file
2
- path = File.realpath("spec/vatsim_data.txt")
3
- data_file = File.open(path, :encoding => 'iso-8859-15')
4
- gem_data = data_file.read
5
- data_file.close
6
- data = Tempfile.new('vatsim_data', :encoding => 'iso-8859-15')
7
- data.write(gem_data.gsub(/["]/, '\s').force_encoding('iso-8859-15'))
8
- data.close
9
- File.rename data.path, "#{Dir.tmpdir}/vatsim_data.txt"
10
- end