vatsim 0.0.3 → 0.0.4

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,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - jruby-18mode # JRuby in 1.8 mode
7
+ - rbx-18mode
8
+ - rbx-19mode
9
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ # A sample Gemfile
2
+ source "https://rubygems.org"
3
+
4
+ gemspec
data/README.md CHANGED
@@ -1,12 +1,13 @@
1
- # vatsim.rb
1
+ # vatsim.rb [![Build Status](https://secure.travis-ci.org/tdawe/vatsim.png?branch=master)](http://travis-ci.org/tdawe/vatsim)
2
2
  vatsim.rb is a Ruby library for retrieving online status for Pilots and ATC connections on the [VATSIM] network.
3
3
 
4
4
  [VATSIM]: http://www.vatsim.net
5
5
 
6
6
  ## Installation
7
- gem install vatsim
7
+ gem install vatsim
8
8
 
9
9
  ## Documentation
10
10
  [http://rdoc.info/gems/vatsim][documentation]
11
11
 
12
12
  [documentation]: http://rdoc.info/gems/vatsim
13
+
@@ -1,5 +1,9 @@
1
1
  require 'vatsim/data'
2
2
  require 'vatsim/client'
3
+ require 'vatsim/pilot'
4
+ require 'vatsim/atc'
3
5
  require 'vatsim/prefile'
6
+ require 'vatsim/server'
7
+ require 'vatsim/voice_server'
4
8
  require 'vatsim/version'
5
9
 
@@ -0,0 +1,7 @@
1
+ module Vatsim
2
+ # Connected pilot
3
+ class ATC < Client
4
+ attr_reader :callsign, :cid, :realname, :clienttype, :frequency, :latitude, :longitude, :server, :protrevision, :rating, :facilitytype, :visualrange, :time_logon
5
+ end
6
+ end
7
+
@@ -1,7 +1,6 @@
1
1
  module Vatsim
2
2
  # Connected clients
3
3
  class Client
4
- attr_reader :callsign, :cid, :realname, :clienttype, :frequency, :latitude, :longitude, :altitude, :groundspeed, :planned_aircraft, :planned_tascruise, :planned_depairport, :planned_altitude, :planned_destairport, :server, :protrevision, :rating, :transponder, :facilitytype, :visualrange, :planned_revision, :planned_flighttype, :planned_deptime, :planned_actdeptime, :planned_hrsenroute, :planned_minenroute, :planned_hrsfuel, :planned_minfuel, :planned_altairport, :planned_remarks, :planned_route, :planned_depairport_lat, :planned_depairport_lon, :planned_destairport_lat, :planned_destairport_lon, :atis_message, :time_last_atis_received, :time_logon, :heading, :QNH_iHg, :QNH_Mb
5
4
 
6
5
  # Initialize Client with colon delimited line from vatsim-data.txt format
7
6
  def initialize line
@@ -6,87 +6,79 @@ module Vatsim
6
6
  # Stores parsed data from vatsim data format
7
7
  class Data
8
8
 
9
- attr_reader :clients, :prefiles, :general
9
+ attr_reader :pilots, :atc, :prefiles, :general, :servers, :voice_servers
10
10
 
11
11
  STATUS_URL = "http://status.vatsim.net/status.txt"
12
12
  STATUS_DOWNLOAD_INTERVAL = 60*60*6 # 6 hours
13
13
  DATA_DOWNLOAD_INTERVAL = 60*2 # 2 minutes
14
+ STATUS_FILE_PATH = Dir::tmpdir + "/vatsim-status.txt"
15
+ DATA_FILE_PATH = Dir::tmpdir + "/vatsim-data.txt"
14
16
 
15
- def initialize properties = nil
16
- @clients = Array.new
17
+ def initialize
18
+ @pilots = Array.new
19
+ @atc = Array.new
17
20
  @prefiles = Array.new
21
+ @servers = Array.new
22
+ @voice_servers = Array.new
18
23
  @general = Hash.new
19
24
 
20
- @status_file_path = Dir::tmpdir + "/vatsim-status.txt"
21
- @data_file_path = Dir::tmpdir + "/vatsim-data.txt"
22
- @refresh_files = true
23
-
24
- if !properties.nil?
25
- @status_file_path = properties["status_file_path"] if properties.has_key?("status_file_path")
26
- @data_file_path = properties["data_file_path"] if properties.has_key?("data_file_path")
27
- @refresh_files = properties["download_files"] if properties.has_key?("download_files")
28
- end
29
-
30
25
  parse
31
26
  end
32
27
 
33
- # Returns all connected Pilots
34
- def pilots
35
- pilots = Array.new
36
- @clients.each { |client|
37
- pilots << client if client.clienttype.eql? "PILOT"
38
- }
39
- return pilots
40
- end
41
-
42
- # Returns all connected ATC
43
- def atc
44
- atc = Array.new
45
- @clients.each { |client|
46
- atc << client if client.clienttype.eql? "ATC"
47
- }
48
- return atc
49
- end
50
-
51
28
  private
52
29
 
53
30
  # Parse the vatsim data file and store output as necessary
54
31
  def parse
55
- download_files if @refresh_files
32
+ download_files
56
33
 
57
34
  parsing_clients = false
58
35
  parsing_prefile = false
59
36
  parsing_general = false
60
-
61
- File.open(@data_file_path, 'r:ascii-8bit').each { |line|
62
-
63
- parsing_clients = false if line.start_with? ";"
64
- parsing_prefile = false if line.start_with? ";"
65
- parsing_general = false if line.start_with? ";"
66
-
67
- if parsing_clients
68
- @clients << Client.new(line)
37
+ parsing_servers = false
38
+ parsing_voice_servers = false
39
+
40
+ File.open(DATA_FILE_PATH, 'r:ascii-8bit').each { |line|
41
+
42
+ if line.start_with? ";"
43
+ parsing_clients = false
44
+ parsing_prefile = false
45
+ parsing_general = false
46
+ parsing_servers = false
47
+ parsing_voice_servers = false
48
+ elsif parsing_clients
49
+ clienttype = line.split(":")[3]
50
+ if clienttype.eql? "PILOT"
51
+ @pilots << Pilot.new(line)
52
+ elsif clienttype.eql? "ATC"
53
+ @atc << ATC.new(line)
54
+ end
69
55
  elsif parsing_prefile
70
56
  @prefiles << Prefile.new(line)
71
57
  elsif parsing_general
72
58
  line_split = line.split("=")
73
59
  @general[line_split[0].strip.downcase.gsub(" ", "_")] = line_split[1].strip
60
+ elsif parsing_servers
61
+ @servers << Server.new(line)
62
+ elsif parsing_voice_servers
63
+ @voice_servers << VoiceServer.new(line) if line.length > 2 # ignore last, empty line for voice server that contains 2 characters
74
64
  end
75
65
 
76
66
  parsing_clients = true if line.start_with? "!CLIENTS:"
77
67
  parsing_prefile = true if line.start_with? "!PREFILE:"
78
68
  parsing_general = true if line.start_with? "!GENERAL:"
69
+ parsing_servers = true if line.start_with? "!SERVERS:"
70
+ parsing_voice_servers = true if line.start_with? "!VOICE SERVERS:"
79
71
  }
80
72
  end
81
73
 
82
74
  # Initialize the system by downloading status and vatsim data files
83
75
  def download_files
84
- if !File.exists?(@status_file_path) or File.mtime(@status_file_path) < Time.now - STATUS_DOWNLOAD_INTERVAL
85
- download_to_file STATUS_URL, @status_file_path
76
+ if !File.exists?(STATUS_FILE_PATH) or File.mtime(STATUS_FILE_PATH) < Time.now - STATUS_DOWNLOAD_INTERVAL
77
+ download_to_file STATUS_URL, STATUS_FILE_PATH
86
78
  end
87
79
 
88
- if !File.exists?(@data_file_path ) or File.mtime(@data_file_path ) < Time.now - DATA_DOWNLOAD_INTERVAL
89
- download_to_file random_data_url, @data_file_path
80
+ if !File.exists?(DATA_FILE_PATH) or File.mtime(DATA_FILE_PATH) < Time.now - DATA_DOWNLOAD_INTERVAL
81
+ download_to_file random_data_url, DATA_FILE_PATH
90
82
  end
91
83
  end
92
84
 
@@ -107,7 +99,7 @@ module Vatsim
107
99
  # Return random vatsim data url from status file
108
100
  def random_data_url
109
101
  url0s = Array.new
110
- file = File.open(@status_file_path)
102
+ file = File.open(STATUS_FILE_PATH)
111
103
  file.each {|line|
112
104
  if line.start_with? "url0"
113
105
  url0s << line.split("=").last
@@ -0,0 +1,7 @@
1
+ module Vatsim
2
+ # Connected pilot
3
+ class Pilot < Client
4
+ attr_reader :callsign, :cid, :realname, :clienttype, :latitude, :longitude, :altitude, :groundspeed, :planned_aircraft, :planned_tascruise, :planned_depairport, :planned_altitude, :planned_destairport, :server, :protrevision, :rating, :transponder, :planned_revision, :planned_flighttype, :planned_deptime, :planned_actdeptime, :planned_hrsenroute, :planned_minenroute, :planned_hrsfuel, :planned_minfuel, :planned_altairport, :planned_remarks, :planned_route, :planned_depairport_lat, :planned_depairport_lon, :planned_destairport_lat, :planned_destairport_lon, :time_logon, :heading, :QNH_iHg, :QNH_Mb
5
+ end
6
+ end
7
+
@@ -1,7 +1,7 @@
1
1
  module Vatsim
2
2
  # Prefiled clients
3
3
  class Prefile
4
- attr_reader :callsign, :cid, :realname, :clienttype, :frequency, :latitude, :longitude, :altitude, :groundspeed, :planned_aircraft, :planned_tascruise, :planned_depairport, :planned_altitude, :planned_destairport, :server, :protrevision, :rating, :transponder, :facilitytype, :visualrange, :planned_revision, :planned_flighttype, :planned_deptime, :planned_actdeptime, :planned_hrsenroute, :planned_minenroute, :planned_hrsfuel, :planned_minfuel, :planned_altairport, :planned_remarks, :planned_route, :planned_depairport_lat, :planned_depairport_lon, :planned_destairport_lat, :planned_destairport_lon, :atis_message, :time_last_atis_received, :time_logon, :heading, :QNH_iHg, :QNH_Mb
4
+ attr_reader :callsign, :cid, :realname, :planned_aircraft, :planned_tascruise, :planned_depairport, :planned_altitude, :planned_destairport, :planned_revision, :planned_flighttype, :planned_deptime, :planned_actdeptime, :planned_hrsenroute, :planned_minenroute, :planned_hrsfuel, :planned_minfuel, :planned_altairport, :planned_remarks, :planned_route, :planned_depairport_lat, :planned_depairport_lon, :planned_destairport_lat, :planned_destairport_lon
5
5
 
6
6
  def initialize line
7
7
  attributes = [:callsign, :cid, :realname, :clienttype, :frequency, :latitude, :longitude, :altitude, :groundspeed, :planned_aircraft, :planned_tascruise, :planned_depairport, :planned_altitude, :planned_destairport, :server, :protrevision, :rating, :transponder, :facilitytype, :visualrange, :planned_revision, :planned_flighttype, :planned_deptime, :planned_actdeptime, :planned_hrsenroute, :planned_minenroute, :planned_hrsfuel, :planned_minfuel, :planned_altairport, :planned_remarks, :planned_route, :planned_depairport_lat, :planned_depairport_lon, :planned_destairport_lat, :planned_destairport_lon, :atis_message, :time_last_atis_received, :time_logon, :heading, :QNH_iHg, :QNH_Mb]
@@ -0,0 +1,19 @@
1
+ module Vatsim
2
+ # Server to which clients can connect
3
+ class Server
4
+
5
+ attr_reader :ident, :hostname_or_IP, :location, :name, :clients_connection_allowed
6
+
7
+ # Initialize Server with colon delimited line from vatsim-data.txt format
8
+ def initialize line
9
+ attributes = [:ident, :hostname_or_IP, :location, :name, :clients_connection_allowed]
10
+
11
+ line_split = line.split(":")
12
+
13
+ attributes.each_with_index.map { |attribute, index|
14
+ instance_variable_set("@#{attribute}", line_split[index]) if self.respond_to?(attribute)
15
+ }
16
+ end
17
+ end
18
+ end
19
+
@@ -1,4 +1,4 @@
1
1
  module Vatsim
2
- VERSION = "0.0.3" # Current gem version
2
+ VERSION = "0.0.4" # Current gem version
3
3
  end
4
4
 
@@ -0,0 +1,19 @@
1
+ module Vatsim
2
+ # Voice server that clients can use
3
+ class VoiceServer
4
+
5
+ attr_reader :hostname_or_IP, :location, :name, :clients_connection_allowed, :type_of_voice_server
6
+
7
+ # Initialize Server with colon delimited line from vatsim-data.txt format
8
+ def initialize line
9
+ attributes = [:hostname_or_IP, :location, :name, :clients_connection_allowed, :type_of_voice_server]
10
+
11
+ line_split = line.split(":")
12
+
13
+ attributes.each_with_index.map { |attribute, index|
14
+ instance_variable_set("@#{attribute}", line_split[index]) if self.respond_to?(attribute)
15
+ }
16
+ end
17
+ end
18
+ end
19
+
@@ -1,7 +1,16 @@
1
+ unless ENV['CI']
2
+ require 'simplecov'
3
+ SimpleCov.start do
4
+ add_filter 'spec'
5
+ end
6
+ end
7
+
1
8
  require 'vatsim'
9
+ require 'webmock/rspec'
2
10
 
3
11
  RSpec.configure do |config|
4
12
  config.treat_symbols_as_metadata_keys_with_true_values = true
5
13
  config.run_all_when_everything_filtered = true
6
14
  config.filter_run :focus
7
15
  end
16
+
@@ -1,32 +1,150 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Vatsim::VERSION do
4
- it "should return a non nil version" do
5
- Vatsim::VERSION.should_not == nil
6
- end
4
+ it "should return a non nil version" do
5
+ Vatsim::VERSION.should_not == nil
6
+ end
7
7
  end
8
8
 
9
9
  describe Vatsim::Data do
10
- it "should return correct number of clients, pilots, and atc" do
11
- data = Vatsim::Data.new("download_files" => false, "data_file_path" => File.dirname(__FILE__) + "/vatsim-data.txt")
12
- data.clients.length.should equal(502)
13
- data.pilots.length.should equal(379)
14
- data.atc.length.should equal(122)
15
- end
16
-
17
- it "should return correct number of prefiled" do
18
- data = Vatsim::Data.new("download_files" => false, "data_file_path" => File.dirname(__FILE__) + "/vatsim-data.txt")
10
+
11
+ before do
12
+ WebMock.disable_net_connect!
13
+ File.delete(Vatsim::Data::STATUS_FILE_PATH) if File.exists?(Vatsim::Data::STATUS_FILE_PATH)
14
+ File.delete(Vatsim::Data::DATA_FILE_PATH) if File.exists?(Vatsim::Data::DATA_FILE_PATH)
15
+ stub_request(:get, "http://status.vatsim.net/status.txt").to_return(:body => File.new(File.dirname(__FILE__) + "/vatsim-status.txt"))
16
+ stub_request(:get, "http://www.net-flyer.net/DataFeed/vatsim-data.txt").to_return(:body => File.new(File.dirname(__FILE__) + "/vatsim-data.txt"))
17
+ stub_request(:get, "http://www.klain.net/sidata/vatsim-data.txt").to_return(:body => File.new(File.dirname(__FILE__) + "/vatsim-data.txt"))
18
+ stub_request(:get, "http://fsproshop.com/servinfo/vatsim-data.txt").to_return(:body => File.new(File.dirname(__FILE__) + "/vatsim-data.txt"))
19
+ stub_request(:get, "http://info.vroute.net/vatsim-data.txt").to_return(:body => File.new(File.dirname(__FILE__) + "/vatsim-data.txt"))
20
+ stub_request(:get, "http://data.vattastic.com/vatsim-data.txt").to_return(:body => File.new(File.dirname(__FILE__) + "/vatsim-data.txt"))
21
+ end
22
+
23
+ it "should return correct number of pilots, prefiles, servers, and atc" do
24
+ data = Vatsim::Data.new
25
+ data.pilots.length.should equal(379)
26
+ data.atc.length.should equal(122)
27
+ data.servers.length.should equal(8)
28
+ data.voice_servers.length.should equal(11)
19
29
  data.prefiles.length.should equal(6)
20
- end
30
+ end
21
31
 
22
32
  it "should return correct values for general properties" do
23
- data = Vatsim::Data.new("download_files" => false, "data_file_path" => File.dirname(__FILE__) + "/vatsim-data.txt")
33
+ data = Vatsim::Data.new
24
34
  data.general.length.should equal(5)
25
35
  data.general["version"].should == "8"
26
36
  data.general["reload"].should == "2"
27
37
  data.general["update"].should == "20120504011745"
28
38
  data.general["atis_allow_min"].should == "5"
29
39
  data.general["connected_clients"].should == "502"
30
- end
40
+ end
41
+
42
+ it "should return correct values for a specific pilot" do
43
+ data = Vatsim::Data.new
44
+ pilot = data.pilots[19]
45
+ pilot.callsign.should == "ACA021"
46
+ pilot.cid.should == "1216364"
47
+ pilot.realname.should == "Sam Bouz CYUL"
48
+ pilot.clienttype.should == "PILOT"
49
+ pilot.latitude.should == "52.36574"
50
+ pilot.longitude.should == "38.94341"
51
+ pilot.altitude.should == "33799"
52
+ pilot.groundspeed.should == "486"
53
+ pilot.planned_aircraft.should == "H/A333"
54
+ pilot.planned_tascruise.should == "480"
55
+ pilot.planned_depairport.should == "UUEE"
56
+ pilot.planned_altitude.should == "FL340"
57
+ pilot.planned_destairport.should == "LTAC"
58
+ pilot.server.should == "EUROPE-CW2"
59
+ pilot.protrevision.should == "100"
60
+ pilot.rating.should == "1"
61
+ pilot.transponder.should == "3437"
62
+ pilot.planned_revision.should == "0"
63
+ pilot.planned_flighttype.should == "I"
64
+ pilot.planned_deptime.should == "0"
65
+ pilot.planned_actdeptime.should == "0"
66
+ pilot.planned_hrsenroute.should == "2"
67
+ pilot.planned_minenroute.should == "38"
68
+ pilot.planned_hrsfuel.should == "4"
69
+ pilot.planned_minfuel.should == "7"
70
+ pilot.planned_altairport.should == "LTBA"
71
+ pilot.planned_remarks.should == " /T/"
72
+ pilot.planned_route.should == "KS LUKOS 6E8 LO 6E18 DK CRDR6 FV R11 TS R808 UUOO R368 KUBOK UA279 GR UP29 SUMOL UW100 INB UM853 BUK UW71 ILHAN"
73
+ pilot.planned_depairport_lat.should == "0"
74
+ pilot.planned_depairport_lon.should == "0"
75
+ pilot.planned_destairport_lat.should == "0"
76
+ pilot.planned_destairport_lon.should == "0"
77
+ pilot.time_logon.should == "20120503235431"
78
+ pilot.heading.should == "169"
79
+ pilot.QNH_iHg.should == "29.7"
80
+ pilot.QNH_Mb.should == "1005"
81
+ end
82
+
83
+ it "should return correct values for a specific prefile" do
84
+ data = Vatsim::Data.new
85
+ prefile = data.prefiles[1]
86
+ prefile.callsign.should == "DAV10674"
87
+ prefile.cid.should == "1207105"
88
+ prefile.realname.should == "Randy Harrill KCMO"
89
+ prefile.planned_aircraft.should == "T/MD90/W"
90
+ prefile.planned_tascruise.should == "360"
91
+ prefile.planned_depairport.should == "KATL"
92
+ prefile.planned_altitude.should == "F290"
93
+ prefile.planned_destairport.should == "KMIA"
94
+ prefile.planned_revision.should == "0"
95
+ prefile.planned_flighttype.should == "I"
96
+ prefile.planned_deptime.should == "45"
97
+ prefile.planned_actdeptime.should == "45"
98
+ prefile.planned_hrsenroute.should == "1"
99
+ prefile.planned_minenroute.should == "50"
100
+ prefile.planned_hrsfuel.should == "2"
101
+ prefile.planned_minfuel.should == "50"
102
+ prefile.planned_altairport.should == "KPBI"
103
+ prefile.planned_remarks.should == "+VFPS+/V/ "
104
+ prefile.planned_route.should == "THRSR6 LUCKK SZW SSCOT1"
105
+ prefile.planned_depairport_lat.should == "0"
106
+ prefile.planned_depairport_lon.should == "0"
107
+ prefile.planned_destairport_lat.should == "0"
108
+ prefile.planned_destairport_lon.should == "0"
109
+ end
110
+
111
+ it "should return correct values for a specific ATC" do
112
+ data = Vatsim::Data.new
113
+ atc = data.atc[20]
114
+ atc.callsign.should == "CZEG_CTR"
115
+ atc.cid.should == "1096034"
116
+ atc.realname.should == "Brett Zubot"
117
+ atc.clienttype.should == "ATC"
118
+ atc.frequency.should == "132.850"
119
+ atc.latitude.should == "53.18500"
120
+ atc.longitude.should == "-113.86667"
121
+ atc.server.should == "USA-N"
122
+ atc.protrevision.should == "100"
123
+ atc.rating.should == "5"
124
+ atc.facilitytype.should == "6"
125
+ atc.visualrange.should == "600"
126
+ atc.time_logon.should == "20120504004825"
127
+ end
128
+
129
+ it "should return correct values for a specific server" do
130
+ data = Vatsim::Data.new
131
+ server = data.servers[6]
132
+ server.ident.should == "USA-N"
133
+ server.hostname_or_IP.should == "204.244.237.21"
134
+ server.location.should == "Vancouver, CANADA"
135
+ server.name.should == "USA North"
136
+ server.clients_connection_allowed.should == "1"
137
+ end
138
+
139
+ it "should return correct values for a specific voice server" do
140
+ data = Vatsim::Data.new
141
+ voice_server = data.voice_servers[4]
142
+ voice_server.hostname_or_IP.should == "voice.zhuartcc.net"
143
+ voice_server.location.should == "Sponsored by Houston ARTCC"
144
+ voice_server.name.should == "ZHU-ARTCC"
145
+ voice_server.clients_connection_allowed.should == "1"
146
+ voice_server.type_of_voice_server.should == "R"
147
+ end
148
+
31
149
  end
32
150
 
@@ -10,4 +10,8 @@ Gem::Specification.new do |s|
10
10
  s.files = `git ls-files`.split("\n")
11
11
  s.require_paths = ['lib']
12
12
  s.homepage = 'https://github.com/tdawe/vatsim'
13
+ s.add_development_dependency 'rake'
14
+ s.add_development_dependency 'rspec'
15
+ s.add_development_dependency 'webmock'
16
+ s.add_development_dependency 'simplecov'
13
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vatsim
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,72 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-19 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2012-05-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: webmock
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: simplecov
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
14
78
  description: Ruby gem to retrieve Pilot/ATC online status
15
79
  email: trevor.dawe@gmail.com
16
80
  executables: []
@@ -19,13 +83,19 @@ extra_rdoc_files: []
19
83
  files:
20
84
  - .gitignore
21
85
  - .rspec
86
+ - .travis.yml
87
+ - Gemfile
22
88
  - README.md
23
89
  - Rakefile
24
90
  - lib/vatsim.rb
91
+ - lib/vatsim/atc.rb
25
92
  - lib/vatsim/client.rb
26
93
  - lib/vatsim/data.rb
94
+ - lib/vatsim/pilot.rb
27
95
  - lib/vatsim/prefile.rb
96
+ - lib/vatsim/server.rb
28
97
  - lib/vatsim/version.rb
98
+ - lib/vatsim/voice_server.rb
29
99
  - spec/spec_helper.rb
30
100
  - spec/vatsim-data.txt
31
101
  - spec/vatsim-status.txt