vatsim_online 0.7.4.2 → 0.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ccda7b2ddbfb35697808562a8201ac17466b26e9
4
- data.tar.gz: 8e91f5a41cfe728dd263084536914510b0901654
3
+ metadata.gz: aaa2f18f60a9b48067065d398a31713df9fb5417
4
+ data.tar.gz: c074d77a202f76faf0d9626a7e42620e8d9e8c57
5
5
  SHA512:
6
- metadata.gz: 55b2c7626b580ef8a215acbbf8f32af92ed99ef3f95c9c0568eeff2ced137650172109c9fd27186404bb4670bce2522e0d25eba371f3c8e701c105e3d4c60788
7
- data.tar.gz: 14a4c16e851efe4145f24ebaf16872366317d24ad6d893e03443551d139239eee33ec6975b2d3dd52674fadbe74145044cd966d2c63b05ad581c57c148db8b6a
6
+ metadata.gz: 513e26e2992fcd07a6a9ba7997a92f7411275bc83217b375a503c89f2d6b04d2c21986682f7819da420cbe485ea21592436b8bfa0240bb11b945a8176854a464
7
+ data.tar.gz: d4edd8ed2ab1534a855fbbbaf90546918f6ee09be4d8dff76497c75a43da2916ec1edcd4279dc4611f9d505156259a0ed28b0bd62bf9cd25720dafc1996d0060
@@ -2,6 +2,14 @@
2
2
 
3
3
  ## Changelog
4
4
 
5
+ ### v. 0.8 - 5 October 2013
6
+
7
+ * search by callsign implemented
8
+
9
+ ### v. 0.7.4 - 2 August 2013
10
+
11
+ * fallback scenarios for offline data servers
12
+
5
13
  ### v. 0.7.2 - 15 July 2013
6
14
 
7
15
  * added gemspec license declaration
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A Ruby gem for selectively pulling, parsing and displaying Vatsim online
4
4
  stations data. Essentially it's a "Who's online" library, capable of displaying
5
- online ATC and/or pilots for given airports, areas or globally. Stations are
5
+ online ATC and/or pilots for given airports, areas or globally and to filter by callsign. Stations are
6
6
  returned as objects, exposing a rich set of attributes. Vatsim data is pulled
7
7
  on preset intervals and cached locally to avoid flooding the servers.
8
8
 
@@ -31,11 +31,20 @@ Or install it yourself as:
31
31
 
32
32
  ## Usage
33
33
 
34
- This gem provides one public method: `vatsim_online`, which can be applied to
34
+ This gem provides two public methods:
35
+
36
+ * `vatsim_online`, which can be applied to
35
37
  any string (or variable containing a string) representing a full or partial ICAO
36
38
  code or a comma-separated list of ICAO codes. The provided ICAO code or fragment
37
39
  will be used as a search criteria and matched against the current vatsim data.
38
40
 
41
+ * `vatsim_callsign`, which can be applied to
42
+ any string (or variable containing a string) representing a full or partial pilot or ATC
43
+ callsign or a comma-separated list of callsigns. The provided callsign or fragment
44
+ will be used as a search criteria and matched against the current vatsim data.
45
+
46
+ ### Filter by ICAO code examples
47
+
39
48
  For example if you want to retrieve all active stations (ATC positions and pilots)
40
49
  for Vienna airport (ICAO: LOWW), then you can use:
41
50
 
@@ -74,6 +83,21 @@ return the pilots that are flying **to or from** the given area or airport,
74
83
  not the current enroute stations. The discovery algorithm is based on **origin
75
84
  and destination**.
76
85
 
86
+ ### Filter by callsign examples
87
+
88
+ ```ruby
89
+ # Attaching the method directly to a string:
90
+ "BAW".vatsim_callsign # => returns an array of all Speedbird flights as station objects
91
+
92
+ # Attaching the method to a variable containing a string:
93
+ callsign = "BAW"
94
+ callsign.vatsim_callsign # => returns an array of all Speedbird flights as station objects
95
+
96
+ # Attaching the method to a list of callsigns:
97
+ callsign = "BAW, RYR"
98
+ callsign.vatsim_callsign # => returns an array of all Speedbird and Ryanair flights as station objects
99
+ ```
100
+
77
101
 
78
102
  ### Anatomy of method returns
79
103
 
@@ -113,6 +137,8 @@ p1.remarks #=> "/V/ RMK/CHARTS"
113
137
  want to loop through them separately. The `pilots` array contains all arrivals
114
138
  and departures.
115
139
 
140
+ The `vatsim_callsign` method returns an **array** of all matching stations.
141
+
116
142
  ### Station attributes
117
143
 
118
144
  Here's a complete list of the station object attributes that can be accessed:
@@ -306,6 +332,14 @@ the same result.
306
332
 
307
333
  ## Changelog
308
334
 
335
+ ### v. 0.8 - 5 October 2013
336
+
337
+ * search by callsign implemented
338
+
339
+ ### v. 0.7.4 - 2 August 2013
340
+
341
+ * fallback scenarios for offline data servers
342
+
309
343
  ### v. 0.7.2 - 15 July 2013
310
344
 
311
345
  * added gemspec license declaration
@@ -1,10 +1,14 @@
1
1
  %w{vatsim_online/version vatsim_online/station vatsim_online/data_downloader
2
- vatsim_online/station_parser}.each { |lib| require lib }
2
+ vatsim_online/station_parser vatsim_online/callsign_parser}.each { |lib| require lib }
3
3
 
4
4
  class String
5
5
  def vatsim_online(args={})
6
6
  VatsimOnline.vatsim_online(self, args)
7
7
  end
8
+
9
+ def vatsim_callsign(args={})
10
+ VatsimOnline.vatsim_callsign(self, args)
11
+ end
8
12
  end
9
13
 
10
14
  module VatsimOnline
@@ -13,4 +17,8 @@ module VatsimOnline
13
17
  VatsimTools::StationParser.new(icao,args).sorted_station_objects
14
18
  end
15
19
 
20
+ def self.vatsim_callsign(callsign, args)
21
+ VatsimTools::CallsignParser.new(callsign,args).station_objects
22
+ end
23
+
16
24
  end
@@ -0,0 +1,54 @@
1
+ module VatsimTools
2
+
3
+ class CallsignParser
4
+
5
+ %w{tmpdir csv}.each { |lib| require lib }
6
+ require_relative "data_downloader"
7
+ require_relative "station"
8
+
9
+ attributes = %w{role callsign gcmap_width gcmap_height}
10
+ attributes.each {|attribute| attr_accessor attribute.to_sym }
11
+
12
+ LOCAL_DATA = "#{Dir.tmpdir}/vatsim_data.txt"
13
+
14
+ def initialize(callsign, args = nil)
15
+ VatsimTools::DataDownloader.new
16
+ # args.class == Hash ? @role = determine_role(args) : @role = "all"
17
+ @callsign = callsign.upcase.split(',').each {|s| s.strip!}
18
+ # @excluded = args[:exclude].upcase if args && args[:exclude]
19
+ @gcmap_width = args[:gcmap_width] if args && args[:gcmap_width]
20
+ @gcmap_height = args[:gcmap_height] if args && args[:gcmap_height]
21
+ end
22
+
23
+ # def determine_role(args)
24
+ # args[:atc] == false ? role = "pilot" : role = "all"
25
+ # args[:pilots] == false ? role = "atc" : role = role
26
+ # role = "all" if args[:pilots] == false && args[:atc] == false
27
+ # role
28
+ # end
29
+
30
+
31
+ def stations
32
+ stations = []
33
+ CSV.foreach(LOCAL_DATA, :col_sep =>':') do |row|
34
+ callsign, origin, destination, client = row[0].to_s, row[11].to_s, row[13].to_s, row[3].to_s
35
+ for cs in @callsign
36
+ stations << row if callsign[0...cs.length] == cs # && client == "ATC") unless @role == "pilot"
37
+ # stations << row if (origin[0...icao.length] == icao || destination[0...icao.length] == icao) unless @role == "atc"
38
+ end
39
+ end
40
+ stations
41
+ end
42
+
43
+ def station_objects
44
+ station_objects= []
45
+ args = {}
46
+ args[:gcmap_width] = @gcmap_width if @gcmap_width
47
+ args[:gcmap_height] = @gcmap_height if @gcmap_height
48
+ stations.each {|station| station_objects << VatsimTools::Station.new(station, args) }
49
+ station_objects
50
+ end
51
+
52
+ end
53
+
54
+ end
@@ -60,6 +60,7 @@ module VatsimTools
60
60
  File.open(LOCAL_DATA, "w+") {|f| f.write(data)}
61
61
  File.chmod(0777, LOCAL_DATA)
62
62
  gem_data_file if curl.include? "<html><head>"
63
+ gem_data_file if File.open(LOCAL_DATA).size == 0
63
64
  rescue Curl::Err::HostResolutionError
64
65
  gem_data_file
65
66
  rescue Curl::Err::TimeoutError
@@ -1,3 +1,3 @@
1
1
  module VatsimOnline
2
- VERSION = "0.7.4.2"
2
+ VERSION = "0.8"
3
3
  end
@@ -0,0 +1,29 @@
1
+ require 'vatsim_online'
2
+ require 'callsign_parser_spec_helper.rb'
3
+
4
+ describe VatsimTools::CallsignParser do
5
+
6
+ target = VatsimTools::CallsignParser
7
+
8
+ describe "stations" do
9
+ it "should return an expected result" do
10
+ gem_data_file
11
+ callsign = "WMKK"
12
+ target.new(callsign).stations.first[0].should eq("WMKK_APP")
13
+ target.new(callsign).stations.class.should eq(Array)
14
+ end
15
+ end
16
+
17
+ describe "station_objects" do
18
+ it "should return an array of Station objects" do
19
+ gem_data_file
20
+ callsign = "LO"
21
+ target.new(callsign).station_objects.class.should eq(Array)
22
+ target.new(callsign).station_objects.size.should eq(2)
23
+ target.new(callsign).station_objects.first.class.should eq(VatsimTools::Station)
24
+ target.new(callsign).station_objects.first.callsign.should eq("LOT282")
25
+ end
26
+ end
27
+
28
+
29
+ end
@@ -0,0 +1,7 @@
1
+ def gem_data_file
2
+ path = File.realpath("spec/vatsim_data.txt")
3
+ gem_data = File.open(path, :encoding => 'iso-8859-15').read
4
+ data = Tempfile.new('vatsim_data', :encoding => 'iso-8859-15')
5
+ data.write(gem_data.gsub(/["]/, '\s').force_encoding('iso-8859-15'))
6
+ File.rename data.path, "#{Dir.tmpdir}/vatsim_data.txt"
7
+ end
@@ -511,11 +511,5 @@ UK:109.169.48.148:London, UK:UK:1:
511
511
  USA-E:173.45.78.10:Ohio, USA:USA East:1:
512
512
  USA-N:204.244.237.21:Vancouver, CANADA:USA North:1:
513
513
  USA-W:64.151.108.52:San Francisco, USA:West USA:1:
514
- ;
515
- ;
516
- !PREFILE:
517
- BAW248:1216383:Raimo Ingland EETN:::::::H/B77W/Q:490:SBGL:FL310:EGLL:::::::0:I:1050:1050:11:10:12:40:EGKK:+VFPS+/V/TROPICALSIM/SBGL UK2000/EGLL PSS/77W AIRAC/1207 SEL/EKLQ RMK/CHARTS RMK/TCAS RMK/STEP CLIMB UP TO FL370 OPR/BAVIRTUAL:ESMAP UZ1 KIGOK UZ1 TROVA UN866 MSS UN866 DEKON UN866 APASO UN866 GOMER UN981 BIMBO DCT AGADO UN866 QPR UN472 JSY UN472 REVTU UP87 DOMUT:0:0:0:0:::::::
518
- THY17:1216592:Can Acar:::::::H/B77W/S:490:LTBA:32000:CYYZ:::::::0:I:1030:1030:10:0:12:15:CYYR:+VFPS+/V/REG/TCJJN SEL/GLDM DOF/120722 OPR/THY RMK/ADSB TCAS EQUIPPED DAT/SV NAV/RNAV1 RNP5 RNVD1A1 RALT/EINN CYYR:N0490F320 IBLAL UP727 BGS UL622 NARKA UL867 TEPNI UL624 LABUK UY444 ELMEK UL602 TABAT/N0480F340 UL602 KEMAD DCT RAVLO UY70 OTBED UL26 PENIL UL70 BAGSO DCT RESNO/M083F340 DOLIP 52N015W/M08F360 52N020W 53N030W 53N040W 52N050W CRONO DOTTY STEAM/N0480F380 N230E YRI DCT POLTY/0942:0:0:0:0:::::::
519
- VOZ894:1007572:James Kittelty - YMML:::::::B738/Q:441:YSSY:F380:YMML:::::::0:I:1100:1100:1:20:3:0:YMAV:+VFPS+/V/REG/VHYIG SEL/MRCP OPR/VOZ VIRTUAL PER/C NAV/RNP10 GPSRNAV RMK/ADSB TCAS EQUIPPED:DCT SY H65 RAZZI Q29 ML DCT:0:0:0:0:::::::
520
- ;
514
+
521
515
  ; END
@@ -32,6 +32,25 @@ describe VatsimOnline do
32
32
  end
33
33
  end
34
34
 
35
+ describe "vatsim_callsign" do
36
+ it "should work :)" do
37
+ gem_data_file
38
+ "AMZ1105".vatsim_callsign.class.should eq(Array)
39
+ "AMZ1105".vatsim_callsign.size.should eq(1)
40
+ "AMZ1105".vatsim_callsign.first.callsign.should eq("AMZ1105")
41
+ "BAW".vatsim_callsign.size.should eq(15)
42
+ "BAW".vatsim_callsign.last.callsign.should eq("BAW9DV")
43
+ "BAW, AMZ1105".vatsim_callsign.size.should eq(16)
44
+ "BAW, QFA".vatsim_callsign.size.should eq(21)
45
+
46
+ end
47
+
48
+ it "should be case insensitive" do
49
+ gem_data_file
50
+ "amz1105".vatsim_callsign.first.callsign.should eq("AMZ1105")
51
+ end
52
+ end
53
+
35
54
  end
36
55
 
37
56
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vatsim_online
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4.2
4
+ version: '0.8'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Svilen Vassilev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-24 00:00:00.000000000 Z
11
+ date: 2013-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -157,12 +157,15 @@ files:
157
157
  - README.md
158
158
  - Rakefile
159
159
  - lib/vatsim_online.rb
160
+ - lib/vatsim_online/callsign_parser.rb
160
161
  - lib/vatsim_online/data_downloader.rb
161
162
  - lib/vatsim_online/station.rb
162
163
  - lib/vatsim_online/station_parser.rb
163
164
  - lib/vatsim_online/vatsim_data.txt
164
165
  - lib/vatsim_online/vatsim_status.txt
165
166
  - lib/vatsim_online/version.rb
167
+ - spec/callsign_parser_spec.rb
168
+ - spec/callsign_parser_spec_helper.rb
166
169
  - spec/data_downloader_spec.rb
167
170
  - spec/data_downloader_spec_helper.rb
168
171
  - spec/spec_helper.rb
@@ -201,6 +204,8 @@ summary: Selectively pulls and parses Vatsim online stations data. Essentially i
201
204
  of attributes. Vatsim data is pulled on preset intervals and cached locally to avoid
202
205
  flooding the servers.
203
206
  test_files:
207
+ - spec/callsign_parser_spec.rb
208
+ - spec/callsign_parser_spec_helper.rb
204
209
  - spec/data_downloader_spec.rb
205
210
  - spec/data_downloader_spec_helper.rb
206
211
  - spec/spec_helper.rb