vatsim_online_redux 1.0.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 07e8ebbfd89689a7ce2ca212b97a16b245a31fc2fe096d4ea21c43837ae09aca
4
+ data.tar.gz: faad629bba96ca658d66458c92b81ca2c5159e2db10f4cd97adcdc2aff7d8c6f
5
+ SHA512:
6
+ metadata.gz: b56cff667609da28c95b453d165f726a4f651019b56c548fb06347299bb9f5091d30f8c1be74c3f0fbc5a20b5ab9f4c177fd1d344754e0d9966f34a468cd7d5e
7
+ data.tar.gz: 7f7bb3c6f2d83e538c3d4ca5087af24abd955f507fa9edb5a1932ce3c896449aef759bce97ae6cc160af0808b96c25bc57686a2fbc130493e6cd18f78037b935
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea/
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.4.0
data/CHANGELOG.md ADDED
@@ -0,0 +1,120 @@
1
+ # vatsim_online
2
+
3
+ ## Changelog
4
+
5
+ ### v. 0.9.1 - 31 Dec 2016
6
+
7
+ * Maintenance release, updated dependencies
8
+
9
+ ### v. 0.9 - 20 June 2015
10
+
11
+ * Fixed nil String bug, can select "ALL" (thanks to Pierre Ferran and Florian Rimoli)
12
+
13
+ ### v. 0.8.3 - 10 April 2014
14
+
15
+ * Fix stale data bug, change data fallback logic
16
+
17
+ ### v. 0.8.2 - 5 October 2013
18
+
19
+ * Handle undetermined position when drawing gcmap
20
+
21
+ ### v. 0.8.1 - 5 October 2013
22
+
23
+ * Ignore prefile data
24
+
25
+ ### v. 0.8 - 5 October 2013
26
+
27
+ * search by callsign implemented
28
+
29
+ ### v. 0.7.4 - 2 August 2013
30
+
31
+ * fallback scenarios for offline data servers
32
+
33
+ ### v. 0.7.2 - 15 July 2013
34
+
35
+ * added gemspec license declaration
36
+
37
+ ### v. 0.7.1 - 15 July 2013
38
+
39
+ * more comprehensive ATC ratings list
40
+ * dependencies updated
41
+
42
+ ### v. 0.7.0 - 26 February 2013
43
+
44
+ * added Ruby 2.0 support
45
+
46
+ ### v. 0.6.2 - 4 January 2013
47
+
48
+ * updated gem dependencies
49
+ * refactored `Station` class for simplicity
50
+
51
+ ### v. 0.6.1 - 08 October 2012
52
+
53
+ * Fixed pilot station duplication issue when using multiple ICAOs
54
+
55
+ ### v. 0.6.0 - 08 October 2012
56
+
57
+ * The `vatsim_online` method now also supports a comma-separated list of full or
58
+ partial ICAO codes like this: `"LO,LB".vatsim_online`. This allows you to pull the
59
+ information for multiple airports or FIRs in a single request
60
+ * The comma-seprated list is not sensitive to whitespace, meaning you can use
61
+ `"LO,LB".vatsim_online` or `"LO, LB".vatsim_online` or `"LO , LB".vatsim_online` with
62
+ the same result
63
+
64
+ ### v. 0.5.3 - 30 September 2012
65
+
66
+ * fixed bug with exceptions on missing ATC remark
67
+
68
+ ### v. 0.5.2 - 29 September 2012
69
+
70
+ * fixed permissions bug on UNIX systems
71
+
72
+ ### v. 0.5.1 - 23 September 2012
73
+
74
+ * bugfixes
75
+
76
+ ### v. 0.5 - 23 September 2012
77
+
78
+ * New option `:exclude => "ICAO"` allowing further request customization by
79
+ excluding a matching subset of ATC stations from the listing. Read the documentation
80
+ for detailed explanation and examples
81
+ * New customized station attribute: `online_since`. Returns the station login time
82
+ parsed as a Ruby Time object in UTC (zulu time). As opposed to the `logon` attribute
83
+ which returns an unformatted, unparsed string such as `20120722091954`
84
+ * The `rating` station attribute is now humanized not to return just an integer,
85
+ but a readable version of the VATSIM rating, i.e. S1, S2, S3, C1, C3, I1, I3, etc...
86
+ * Added the possibility of customizing the great circle maps by optionally passing
87
+ parameters for width and height: `icao.vatsim_online(:gcmap_width => 400, :gcmap_height => 400)`.
88
+ Read the documentation for detailed explanation and examples
89
+ * New customized station attribute `atis_message`. It will return a humanized web safe
90
+ version of the ATC atis without the voice server info and with lines split with
91
+ `<br />` tags. As opposed to the original `atis` attribute, which returns raw atis,
92
+ as reported from VATSIM, including voice server as first line
93
+
94
+ ### v. 0.4 - 27 August 2012
95
+
96
+ * GCMapper integration: this library now plays nicely with [gcmapper](https://rubygems.org/gems/gcmapper).
97
+ A new attribute is provided for the pilot stations: `.gcmap` which returns a great
98
+ circle map image url, depicting the GC route of the aircraft, its origin and destination,
99
+ its current position on the route, together with its current altitude and groundspeed.
100
+ Look at the example in the README section above.
101
+ * New station attributes: planned_altitude, transponder, heading, qnh_in, qnh_mb,
102
+ flight_type, cid, latitude_humanized, longitude_humanized
103
+
104
+
105
+ ### v. 0.3 - 22 July 2012
106
+
107
+ * The hash returned by the `vatsim_online` method now includes 2 new arrays:
108
+ `arrivals` and `departures`. These two are returned separately for convenience,
109
+ in case you want to loop through them separately. The `pilots` array return is
110
+ unchanged and contains all arrivals and departures.
111
+ * New station attributes: latitude, longitude
112
+ * Improved UTF-8 conversion process
113
+
114
+ ### v. 0.2 - 21 July 2012
115
+
116
+ * Station attribute `departure` is now renamed to `origin`
117
+ * UTF-8 is now enforced for all local caching and file/string manipulations, the
118
+ original Vatsim data is re-encoded
119
+ * Station ATIS is now cleaned of invalid and obscure characters
120
+ * Improved documentation
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,8 @@
1
+ # Contributing to vatsim_online
2
+
3
+ 1. Fork it
4
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
5
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
6
+ 4. Make sure all tests are passing!
7
+ 5. Push to the branch (`git push origin my-new-feature`)
8
+ 6. Create new Pull Request
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in vatsim_online.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (c) 2013 Svilen Vassilev
2
+ Copyright (c) 2020 Alex Dent
3
+
4
+ MIT License
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining
7
+ a copy of this software and associated documentation files (the
8
+ "Software"), to deal in the Software without restriction, including
9
+ without limitation the rights to use, copy, modify, merge, publish,
10
+ distribute, sublicense, and/or sell copies of the Software, and to
11
+ permit persons to whom the Software is furnished to do so, subject to
12
+ the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be
15
+ included in all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,478 @@
1
+ # Vatsim Online Redux
2
+
3
+ Original credit for this gem goes to https://github.com/tarakanbg/vatsim_online
4
+
5
+ I've updated it to make it work with update to date Ruby and with Windows.
6
+ If at any time the original dev comes back, Ill merge this Gem back into theirs.
7
+
8
+ A Ruby gem for selectively pulling, parsing and displaying Vatsim online
9
+ stations data. Essentially it's a "Who's online" library, capable of displaying
10
+ online ATC and/or pilots for given airports, areas or globally and to filter by callsign. Stations are
11
+ returned as objects, exposing a rich set of attributes. Vatsim data is pulled
12
+ on preset intervals and cached locally to avoid flooding the servers.
13
+
14
+ [![Build Status](https://secure.travis-ci.org/tarakanbg/vatsim_online.png?branch=master)](http://travis-ci.org/tarakanbg/vatsim_online)
15
+ [![Gemnasium](https://gemnasium.com/tarakanbg/vatsim_online.png?travis)](https://gemnasium.com/tarakanbg/vatsim_online)
16
+ [![Gem Version](https://badge.fury.io/rb/vatsim_online.png)](http://badge.fury.io/rb/vatsim_online)
17
+ [![Code Climate](https://codeclimate.com/github/tarakanbg/vatsim_online.png)](https://codeclimate.com/github/tarakanbg/vatsim_online)
18
+
19
+ ## Requirements
20
+
21
+ [Ruby 2.6.0](http://www.ruby-lang.org/en/downloads/) or higher
22
+
23
+ ## Installation
24
+
25
+ Add this line to your application's Gemfile:
26
+
27
+ gem 'vatsim_online_redux'
28
+
29
+ And then execute:
30
+
31
+ $ bundle
32
+
33
+ Or install it yourself as:
34
+
35
+ $ gem install vatsim_online_redux
36
+
37
+ ## Usage
38
+
39
+ This gem provides two public methods:
40
+
41
+ * `vatsim_online`, which can be applied to
42
+ any string (or variable containing a string) representing a full or partial ICAO
43
+ code or a comma-separated list of ICAO codes. The provided ICAO code or fragment
44
+ will be used as a search criteria and matched against the current vatsim data.
45
+
46
+ * `vatsim_callsign`, which can be applied to
47
+ any string (or variable containing a string) representing a full or partial pilot or ATC
48
+ callsign or a comma-separated list of callsigns. The provided callsign or fragment
49
+ will be used as a search criteria and matched against the current vatsim data.
50
+
51
+ ### Filter by ICAO code examples
52
+
53
+ For example if you want to retrieve all active stations (ATC positions and pilots)
54
+ for Vienna airport (ICAO: LOWW), then you can use:
55
+
56
+ ```ruby
57
+ # Attaching the method directly to a string:
58
+ "LOWW".vatsim_online
59
+
60
+ # Attaching the method directly to a list of ICAOs:
61
+ "LOWW, LOWK".vatsim_online
62
+
63
+ # Attaching the method to a variable containing a string:
64
+ icao = "LOWW"
65
+ icao.vatsim_online
66
+ ```
67
+ If you want to retrieve the currently active stations for an entire region
68
+ (FIR/ARTCC), then you can use the first 2-3 letters of the region's ICAO name.
69
+ For example if you want to pull all the stations active in Austria (ICAO code
70
+ for the FIR is LOVV), you can use `"LO"` as your ICAO search string: all Austrian
71
+ airports and ATC station callsigns start with `"LO"`:
72
+
73
+ ```ruby
74
+ # Attaching the method directly to a string:
75
+ "LO".vatsim_online
76
+
77
+ # Attaching the method to a variable containing a string:
78
+ icao = "LO"
79
+ icao.vatsim_online
80
+
81
+ # Attaching the method to a list of ICAOs:
82
+ icao = "LO, LB"
83
+ icao.vatsim_online
84
+ ```
85
+
86
+ When parsing the pilot stations for particular airport or area, the library will
87
+ return the pilots that are flying **to or from** the given area or airport,
88
+ not the current enroute stations. The discovery algorithm is based on **origin
89
+ and destination**.
90
+
91
+ ### Filter by callsign examples
92
+
93
+ ```ruby
94
+ # Attaching the method directly to a string:
95
+ "BAW".vatsim_callsign # => returns an array of all Speedbird flights as station objects
96
+
97
+ # Attaching the method to a variable containing a string:
98
+ callsign = "BAW"
99
+ callsign.vatsim_callsign # => returns an array of all Speedbird flights as station objects
100
+
101
+ # Attaching the method to a list of callsigns:
102
+ callsign = "BAW, RYR"
103
+ callsign.vatsim_callsign # => returns an array of all Speedbird and Ryanair flights as station objects
104
+ ```
105
+
106
+
107
+ ### Anatomy of method returns
108
+
109
+ The `vatsim_online` method returns a **hash** of 4 elements: 1) the matching *atc*
110
+ stations, 2) all matching *pilots* stations, 3) matching *arrivals*, 4) matching
111
+ *departures*. Each of those is an **array**, cosnsisting of
112
+ station **objects**. Each of these objects includes a number of **attributes**:
113
+
114
+ ```ruby
115
+ icao.vatsim_online # => {:atc => [a1, a2, a3 ...], :pilots => [p1, p2, p3, p4 ...],
116
+ # :departures => [p1, p4 ...], :arrivals => [p2, p3...]}
117
+
118
+ icao.vatsim_online[:atc] #=> [a1, a2, a3 ...]
119
+ icao.vatsim_online[:pilots] #=> [p1, p2, p3 ...]
120
+ icao.vatsim_online[:departures] #=> [p1, p3 ...]
121
+ icao.vatsim_online[:arrivals] #=> [p2, p4 ...]
122
+
123
+
124
+ icao.vatsim_online[:atc].first #=> a1
125
+ icao.vatsim_online[:pilots].first #=> p1
126
+
127
+ a1.callsign #=> "LQSA_TWR"
128
+ a1.frequency #=> "118.25"
129
+ a1.name #=> "Svilen Vassilev"
130
+ a1.rating #=> "S2"
131
+ a1.online_since #=> "2012-09-22 10:00:48 UTC"
132
+ ...
133
+
134
+ p1.callsign #=> "ACH217S"
135
+ p1.departure #=> "LQSA"
136
+ p1.destination #=> "LDSP"
137
+ p1.remarks #=> "/V/ RMK/CHARTS"
138
+ ...
139
+ ```
140
+
141
+ `Arrivals` and `departures` are returned separately for convenience, in case you
142
+ want to loop through them separately. The `pilots` array contains all arrivals
143
+ and departures.
144
+
145
+ The `vatsim_callsign` method returns an **array** of all matching stations.
146
+
147
+ ### Station attributes
148
+
149
+ Here's a complete list of the station object attributes that can be accessed:
150
+
151
+ * `cid` (VATSIM ID)
152
+ * `callsign`
153
+ * `name`
154
+ * `role`
155
+ * `frequency`
156
+ * `altitude`
157
+ * `planned_altitude` (or FL)
158
+ * `heading`
159
+ * `groundspeed`
160
+ * `transponder`
161
+ * `aircraft`
162
+ * `origin`
163
+ * `destination`
164
+ * `route`
165
+ * `rating` (returns a humanized version of the VATSIM rating: S1, S2, S3, C1, etc...)
166
+ * `facility`
167
+ * `remarks`
168
+ * `atis` (raw atis, as reported from VATSIM, including voice server as first line)
169
+ * `atis_message` (a humanized version of the ATC atis w/o server and with lines split)
170
+ * `logon` (login time as unparsed text string: `20120722091954`)
171
+ * `online_since` (returns the station login time parsed as a Ruby Time object in UTC)
172
+ * `latitude`
173
+ * `longitude`
174
+ * `latitude_humanized` (e.g. N44.09780)
175
+ * `longitude_humanized` (e.g. W58.41483)
176
+ * `qnh_in` (indicated QNH in inches Hg)
177
+ * `qnh_mb` (indicated QNH in milibars/hectopascals)
178
+ * `flight_type` (`I` for IFR, `V` for VFR, etc)
179
+ * `gcmap` (returns a great circle map image url)
180
+
181
+ ### Great circle map visualization
182
+
183
+ The `.gcmap` method, available for all pilot stations, returns a great
184
+ circle map image url, depicting the GC route of the aircraft, its origin and destination,
185
+ its current position on the route, together with its current altitude and groundspeed.
186
+ Example below:
187
+
188
+ ```ruby
189
+ icao.vatsim_online[:pilots].first.gcmap #=> image url of the map
190
+ ```
191
+
192
+ ![GC Map](http://www.gcmap.com/map?P=kdfw-N44.09780+W58.41483-egll,+%22AAL026%5cn37112+ft%5cn516+kts%22%2b%40N44.09780+W58.41483&MS=wls&MR=540&MX=720x360&PM=*)
193
+
194
+ The map size (width and height) and scale **can be customized** by passing an
195
+ optional hash of arguments to the `vatsim_online` method like this:
196
+
197
+ ```ruby
198
+ icao.vatsim_online(:gcmap_width => "400", :gcmap_height => "400")[:pilots].first.gcmap #=> image url of the map
199
+
200
+ # The quotes are optional, so the statement can also be written like this:
201
+ icao.vatsim_online(:gcmap_width => 400, :gcmap_height => 400)[:pilots].first.gcmap
202
+ ```
203
+ ![GC Map](http://www.gcmap.com/map?P=kdfw-N44.09780+W58.41483-egll,+%22AAL026%5cn37112+ft%5cn516+kts%22%2b%40N44.09780+W58.41483&MS=wls&MR=540&MX=400x400&PM=*)
204
+
205
+ ### Customizing the request
206
+
207
+ The `vatsim online` method can be customized by passing in a hash-style collection
208
+ of arguments. The currently supported arguments and their defaults are:
209
+
210
+ ```ruby
211
+ :atc => true # Possible values: true, false. Default: true
212
+ :pilots => true # Possible values: true, false. Default: true
213
+ :exclude => "ICAO" # Accepts any full or partial ICAO code to be excluded from the ATC stations
214
+ :gcmap_width => integer # Optional parameter customizing the width of the station's `.gcmap`
215
+ :gcmap_height => integer # Optional parameter customizing the height of the station's `.gcmap`
216
+ ```
217
+ #### ATC exclusions
218
+
219
+ The `:exclude => "ICAO"` option can be used to exclude matching stations from the
220
+ ATC listing. It accepts full or partial ICAO codes or callsigns.
221
+
222
+ For example you might want to display all Austrian ATC stations by calling
223
+ `"LO".vatsim_online`. Seems logical since all Austrian stations callsigns begin
224
+ with the `LO` prefix. However a few UK stations (London Control for example) also
225
+ have callsigns beginning with `LO` (*LON_CTR*). To avoid including them, you can
226
+ use the `:exclude` option on your request like this:
227
+
228
+ ```ruby
229
+ # Lets exclude all ATC station names beginning with LON from our request
230
+ "LO".vatsim_online(:exclude => "LON")[:atc] #=> [atc1, atc2, atc3...]
231
+
232
+ # This option is not case sensitive so we can use "lon" as well:
233
+ "LO".vatsim_online(:exclude => "lon")[:atc] #=> [atc1, atc2, atc3...]
234
+ ```
235
+
236
+ #### ATC and PILOTS options
237
+
238
+ Both options can be used to exclude **all** ATC or pilots stations respectively from
239
+ the request, in order to speed it up and avoid processing useless data.
240
+
241
+ **Examples:**
242
+
243
+ ```ruby
244
+ # Lets exclude all ATC from our request and get the pilots only
245
+ "LO".vatsim_online(:atc => false)[:pilots] #=> [p1, p2, p3...]
246
+
247
+ # Lets exclude all pilots from our request and get the ATC only
248
+ "LO".vatsim_online(:pilots => false)[:atc] #=> [a1, a2, a3...]
249
+
250
+ "LO".vatsim_online(:atc => false)[:pilots].first.callsign #=> "ACH0838"
251
+ "LO".vatsim_online(:pilots => false)[:atc].first.callsign #=> "LOVV_CTR"
252
+
253
+ ```
254
+
255
+ ### Example of Ruby on Rails implementation
256
+
257
+ Here's a possible scenario of using this gem in a Ruby on Rails application.
258
+ Verbosity is kept on purpose for clarity.
259
+
260
+ **In your controller:**
261
+ ```ruby
262
+ def index
263
+ # We want to retrieve all Austrian online stations (ATC and pilots)
264
+ icao = "LO"
265
+ stations = icao.vatsim_online
266
+
267
+ # Now we will assign the ATCs and the pilots to separate instance variables,
268
+ # to be able to loop through them separately in the view
269
+ @atc = stations[:atc]
270
+ @pilots = stations[:pilots]
271
+
272
+ # We can also isolate the departures and/or arrivals for conveneinence if we
273
+ # want to loop through them separately
274
+ @departures = stations[:departures]
275
+ @arrivals = stations[:arrivals]
276
+ end
277
+ ```
278
+
279
+ **In your view (HAML is used for clarity):**
280
+
281
+ ```haml
282
+ - for atc in @atc
283
+ %li
284
+ = atc.callsign
285
+ = atc.frequency
286
+ = atc.rating
287
+ = atc.name
288
+ = atc.online_since
289
+ = atc.atis_message
290
+
291
+ - for pilot in @pilots
292
+ %li
293
+ = pilot.callsign
294
+ = pilot.name
295
+ = pilot.origin
296
+ = pilot.destination
297
+ = pilot.route
298
+ = pilot.flight_type
299
+ = pilot.altitude
300
+ = pilot.groundspeed
301
+ = pilot.heading
302
+ = pilot.remarks
303
+ = pilot.online_since
304
+ = image_tag pilot.gcmap
305
+
306
+ - for arrival in @arrivals
307
+ %li
308
+ = arrival.callsign
309
+ = arrival.name
310
+ = image_tag arrival.gcmap
311
+
312
+ - for departure in @departures
313
+ %li
314
+ = departure.callsign
315
+ = departure.name
316
+ = image_tag departure.gcmap
317
+ ```
318
+
319
+ ### Notes
320
+
321
+ * Vatsim status and data files are cached locally to reduce the load on vatsim
322
+ servers. Random server is chosen to retrieve the data each time. By default the
323
+ status file is updated once every 4 hours and the data file once every 3 minutes
324
+ regardless of the number of incoming requests.
325
+ * The data is cached in your default TEMP directory (OS specific)
326
+ * All the data retrieval and caching logic is encapsulated in a separate class
327
+ `VatsimTools::DataDownloader` which can be mixed in other applications and
328
+ libraries too.
329
+ * The ICAO string used as a search criteria **is not** case sensitive
330
+ * Pilot stations returned are based on origin and destination airports, the
331
+ current algorithm does not evaluate enroute flights.
332
+ * When attaching the `vatsim_online` method to a comma-separated list of full or
333
+ partial ICAO identifiers it does not matter whether there will be any spaces in
334
+ front or after the identifiers or the commas, i.e. you can use
335
+ `"LO,LB".vatsim_online` or `"LO, LB".vatsim_online` or `"LO , LB".vatsim_online` with
336
+ the same result.
337
+
338
+ ## Changelog
339
+
340
+ ### v. 0.9.1 - 31 Dec 2016
341
+
342
+ * Maintenance release, updated dependencies
343
+
344
+ ### v. 0.9 - 20 June 2015
345
+
346
+ * Fixed nil String bug, can select "ALL" (thanks to Pierre Ferran and Florian Rimoli)
347
+
348
+ ### v. 0.8.3 - 10 April 2014
349
+
350
+ * Fix stale data bug, change data fallback logic
351
+
352
+ ### v. 0.8.2 - 5 October 2013
353
+
354
+ * Handle undetermined position when drawing gcmap
355
+
356
+ ### v. 0.8.1 - 5 October 2013
357
+
358
+ * Ignore prefile data
359
+
360
+ ### v. 0.8 - 5 October 2013
361
+
362
+ * search by callsign implemented
363
+
364
+ ### v. 0.7.4 - 2 August 2013
365
+
366
+ * fallback scenarios for offline data servers
367
+
368
+ ### v. 0.7.2 - 15 July 2013
369
+
370
+ * added gemspec license declaration
371
+
372
+ ### v. 0.7.1 - 15 July 2013
373
+
374
+ * more comprehensive ATC ratings list
375
+ * dependencies updated
376
+
377
+ ### v. 0.7.0 - 26 February 2013
378
+
379
+ * added Ruby 2.0 support
380
+
381
+ ### v. 0.6.2 - 4 January 2013
382
+
383
+ * updated gem dependencies
384
+ * refactored `Station` class for simplicity
385
+
386
+ ### v. 0.6.1 - 08 October 2012
387
+
388
+ * Fixed pilot station duplication issue when using multiple ICAOs
389
+
390
+ ### v. 0.6.0 - 08 October 2012
391
+
392
+ * The `vatsim_online` method now also supports a comma-separated list of full or
393
+ partial ICAO codes like this: `"LO,LB".vatsim_online`. This allows you to pull the
394
+ information for multiple airports or FIRs in a single request
395
+ * The comma-seprated list is not sensitive to whitespace, meaning you can use
396
+ `"LO,LB".vatsim_online` or `"LO, LB".vatsim_online` or `"LO , LB".vatsim_online` with
397
+ the same result
398
+
399
+ ### v. 0.5.3 - 30 September 2012
400
+
401
+ * fixed bug with exceptions on missing ATC remark
402
+
403
+ ### v. 0.5.2 - 29 September 2012
404
+
405
+ * fixed permissions bug on UNIX systems
406
+
407
+ ### v. 0.5.1 - 23 September 2012
408
+
409
+ * bugfixes
410
+
411
+ ### v. 0.5 - 23 September 2012
412
+
413
+ * New option `:exclude => "ICAO"` allowing further request customization by
414
+ excluding a matching subset of ATC stations from the listing. Read the documentation
415
+ for detailed explanation and examples
416
+ * New customized station attribute: `online_since`. Returns the station login time
417
+ parsed as a Ruby Time object in UTC (zulu time). As opposed to the `logon` attribute
418
+ which returns an unformatted, unparsed string such as `20120722091954`
419
+ * The `rating` station attribute is now humanized not to return just an integer,
420
+ but a readable version of the VATSIM rating, i.e. S1, S2, S3, C1, C3, I1, I3, etc...
421
+ * Added the possibility of customizing the great circle maps by optionally passing
422
+ parameters for width and height: `icao.vatsim_online(:gcmap_width => 400, :gcmap_height => 400)`.
423
+ Read the documentation for detailed explanation and examples
424
+ * New customized station attribute `atis_message`. It will return a humanized web safe
425
+ version of the ATC atis without the voice server info and with lines split with
426
+ `<br />` tags. As opposed to the original `atis` attribute, which returns raw atis,
427
+ as reported from VATSIM, including voice server as first line
428
+
429
+ ### v. 0.4 - 27 August 2012
430
+
431
+ * GCMapper integration: this library now plays nicely with [gcmapper](https://rubygems.org/gems/gcmapper).
432
+ A new attribute is provided for the pilot stations: `.gcmap` which returns a great
433
+ circle map image url, depicting the GC route of the aircraft, its origin and destination,
434
+ its current position on the route, together with its current altitude and groundspeed.
435
+ Look at the example in the README section above.
436
+ * New station attributes: planned_altitude, transponder, heading, qnh_in, qnh_mb,
437
+ flight_type, cid, latitude_humanized, longitude_humanized
438
+
439
+
440
+ ### v. 0.3 - 22 July 2012
441
+
442
+ * The hash returned by the `vatsim_online` method now includes 2 new arrays:
443
+ `arrivals` and `departures`. These two are returned separately for convenience,
444
+ in case you want to loop through them separately. The `pilots` array return is
445
+ unchanged and contains all arrivals and departures.
446
+ * New station attributes: latitude, longitude
447
+ * Improved UTF-8 conversion process
448
+
449
+ ### v. 0.2 - 21 July 2012
450
+
451
+ * Station attribute `departure` is now renamed to `origin`
452
+ * UTF-8 is now enforced for all local caching and file/string manipulations, the
453
+ original Vatsim data is re-encoded
454
+ * Station ATIS is now cleaned of invalid and obscure characters
455
+ * Improved documentation
456
+
457
+ ## Contributing
458
+
459
+ 1. Fork it
460
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
461
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
462
+ 4. Make sure all tests are passing!
463
+ 5. Push to the branch (`git push origin my-new-feature`)
464
+ 6. Create new Pull Request
465
+
466
+ ## Credits
467
+
468
+ Copyright © 2016 [Svilen Vassilev](http://svilen.rubystudio.net)
469
+ Copyright © 2020 [Alex Dent](https://github.com/aldent95)
470
+
471
+ ### Contributors
472
+
473
+ * [Florian Rimoli](https://github.com/Flox06)
474
+ * [Pierre Ferran](https://github.com/pierr3)
475
+
476
+ Released under the [MIT LICENSE](https://github.com/tarakanbg/vatsim_online/blob/master/LICENSE)
477
+
478
+ Maps generated by the [Great Circle Mapper](http://www.gcmap.com/), copyright Karl L. Swartz
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task default: :spec