vatsim 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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