vatsim_online_redux 1.0.1 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
- module VatsimOnline
2
- VERSION = "1.0.1"
3
- end
1
+ module VatsimOnline
2
+ VERSION = "2.0.1"
3
+ end
@@ -1,27 +1,33 @@
1
1
  require 'vatsim_online'
2
- require 'callsign_parser_spec_helper.rb'
2
+ require 'data_downloader_spec_helper'
3
3
 
4
4
  describe VatsimTools::CallsignParser do
5
5
 
6
6
  target = VatsimTools::CallsignParser
7
7
 
8
+ before(:each) do
9
+ delete_local_files
10
+ stub_request(:get, 'https://status.vatsim.net/status.json').
11
+ to_return(body: File.read(File.join(File.dirname(__FILE__), 'support', 'vatsim_status.json')), status: :ok)
12
+ stub_request(:get, 'https://data.vatsim.net/v3/vatsim-data.json').
13
+ to_return(body: File.read(File.join(File.dirname(__FILE__), 'support', 'vatsim_data.json')), status: :ok)
14
+ end
15
+
8
16
  describe "stations" do
9
17
  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")
18
+ callsign = "EGAC"
19
+ target.new(callsign).stations.first['callsign'].should eq("EGAC_APP")
13
20
  target.new(callsign).stations.class.should eq(Array)
14
21
  end
15
22
  end
16
23
 
17
24
  describe "station_objects" do
18
25
  it "should return an array of Station objects" do
19
- gem_data_file
20
- callsign = "LO"
26
+ callsign = "VFE"
21
27
  target.new(callsign).station_objects.class.should eq(Array)
22
28
  target.new(callsign).station_objects.size.should eq(2)
23
29
  target.new(callsign).station_objects.first.class.should eq(VatsimTools::Station)
24
- target.new(callsign).station_objects.first.callsign.should eq("LOT282")
30
+ target.new(callsign).station_objects.first.callsign.should eq("VFE1625")
25
31
  end
26
32
  end
27
33
 
@@ -4,8 +4,15 @@ require 'data_downloader_spec_helper.rb'
4
4
  describe VatsimTools::DataDownloader do
5
5
 
6
6
  target = VatsimTools::DataDownloader
7
- LOCAL_STATUS = "#{Dir.tmpdir}/vatsim_status.txt"
8
- LOCAL_DATA = "#{Dir.tmpdir}/vatsim_data.txt"
7
+ LOCAL_STATUS = "#{Dir.tmpdir}/vatsim_online/vatsim_status.json"
8
+ LOCAL_DATA = "#{Dir.tmpdir}/vatsim_online/vatsim_data.json"
9
+
10
+ before(:each) do
11
+ stub_request(:get, 'https://status.vatsim.net/status.json').
12
+ to_return(body: File.read(File.join(File.dirname(__FILE__), 'support', 'vatsim_status.json')), status: :ok)
13
+ stub_request(:get, 'https://data.vatsim.net:443/v3/vatsim-data.json').
14
+ to_return(body: File.read(File.join(File.dirname(__FILE__), 'support', 'vatsim_data.json')), status: :ok)
15
+ end
9
16
 
10
17
  describe "create_status_tempfile" do
11
18
  it "should create a file" do
@@ -14,7 +21,7 @@ describe VatsimTools::DataDownloader do
14
21
  target.new.create_status_tempfile
15
22
  File.exists?(LOCAL_STATUS).should be true
16
23
  status = File.open(LOCAL_STATUS)
17
- status.path.should eq("#{Dir.tmpdir}/vatsim_status.txt")
24
+ status.path.should eq("#{Dir.tmpdir}/vatsim_online/vatsim_status.json")
18
25
  status.size.should be > 100
19
26
  status.close
20
27
  end
@@ -35,9 +42,9 @@ describe VatsimTools::DataDownloader do
35
42
  delete_local_files
36
43
  File.exists?(LOCAL_STATUS).should be false
37
44
  target.new.status_file.class.should eq(String)
38
- target.new.status_file.should include("vatsim_status.txt")
45
+ target.new.status_file.should include("vatsim_status.json")
39
46
  target.new.status_file.should eq(LOCAL_STATUS)
40
- target.new.status_file.should eq("#{Dir.tmpdir}/vatsim_status.txt")
47
+ target.new.status_file.should eq("#{Dir.tmpdir}/vatsim_online/vatsim_status.json")
41
48
  File.exists?(LOCAL_STATUS).should be true
42
49
  end
43
50
  end
@@ -46,7 +53,7 @@ describe VatsimTools::DataDownloader do
46
53
  it "should contain an array of server URLs" do
47
54
  File.exists?(LOCAL_STATUS).should be true
48
55
  target.new.servers.class.should eq(Array)
49
- target.new.servers.size.should eq(5)
56
+ target.new.servers.size.should eq(1)
50
57
  end
51
58
  end
52
59
 
@@ -57,7 +64,7 @@ describe VatsimTools::DataDownloader do
57
64
  target.new.create_local_data_file
58
65
  File.exists?(LOCAL_DATA).should be true
59
66
  data = File.open(LOCAL_DATA)
60
- data.path.should eq("#{Dir.tmpdir}/vatsim_data.txt")
67
+ data.path.should eq("#{Dir.tmpdir}/vatsim_online/vatsim_data.json")
61
68
  data.size.should be > 100
62
69
  data.close
63
70
  end
@@ -78,9 +85,9 @@ describe VatsimTools::DataDownloader do
78
85
  delete_local_files
79
86
  File.exists?(LOCAL_DATA).should be false
80
87
  target.new.data_file.class.should eq(String)
81
- target.new.data_file.should include("vatsim_data.txt")
88
+ target.new.data_file.should include("vatsim_data.json")
82
89
  target.new.data_file.should eq(LOCAL_DATA)
83
- target.new.data_file.should eq("#{Dir.tmpdir}/vatsim_data.txt")
90
+ target.new.data_file.should eq("#{Dir.tmpdir}/vatsim_online/vatsim_data.json")
84
91
  File.exists?(LOCAL_DATA).should be true
85
92
  end
86
93
  end
@@ -1,8 +1,10 @@
1
1
  def delete_local_files
2
- if File.exists?(LOCAL_STATUS)
3
- File.delete(LOCAL_STATUS)
2
+ local_Status = "#{Dir.tmpdir}/vatsim_online/vatsim_status.json"
3
+ lOCAL_DATA = "#{Dir.tmpdir}/vatsim_online/vatsim_data.json"
4
+ if File.exists?(local_Status)
5
+ File.delete(local_Status)
4
6
  end
5
- if File.exists?(LOCAL_DATA)
6
- File.delete(LOCAL_DATA)
7
+ if File.exists?(lOCAL_DATA)
8
+ File.delete(lOCAL_DATA)
7
9
  end
8
10
  end
@@ -1,4 +1,5 @@
1
1
  require 'bundler/setup'
2
+ require 'webmock/rspec'
2
3
  Bundler.setup
3
4
 
4
5
  require 'vatsim_online'
@@ -1,10 +1,18 @@
1
1
  require 'vatsim_online'
2
- require 'station_parser_spec_helper.rb'
2
+ require 'data_downloader_spec_helper'
3
3
 
4
4
  describe VatsimTools::StationParser do
5
5
 
6
6
  target = VatsimTools::StationParser
7
7
 
8
+ before(:each) do
9
+ delete_local_files
10
+ stub_request(:get, 'https://status.vatsim.net/status.json').
11
+ to_return(body: File.read(File.join(File.dirname(__FILE__), 'support', 'vatsim_status.json')), status: :ok)
12
+ stub_request(:get, 'https://data.vatsim.net:443/v3/vatsim-data.json').
13
+ to_return(body: File.read(File.join(File.dirname(__FILE__), 'support', 'vatsim_data.json')), status: :ok)
14
+ end
15
+
8
16
  describe "determine role" do
9
17
  it "should return a role" do
10
18
  args = {:pilots => true, :atc => true}
@@ -35,68 +43,62 @@ describe VatsimTools::StationParser do
35
43
  describe "stations" do
36
44
  args = {:pilots => true, :atc => true}
37
45
  it "should return an expected result" do
38
- gem_data_file
39
- icao = "WMKK"
40
- target.new(icao, args).stations.first[0].should eq("WMKK_APP")
46
+ icao = "EGAC"
47
+ target.new(icao, args).stations.first['callsign'].should eq("EGAC_APP")
41
48
  target.new(icao, args).stations.class.should eq(Array)
42
49
  end
43
50
 
44
51
  it "should distinguish roles" do
45
- gem_data_file
46
- icao = "WMKK"
52
+ icao = "EGAC"
47
53
  args = {:pilots => false, :atc => true}
48
- target.new(icao, args).stations.first[0].should eq("WMKK_APP")
54
+ target.new(icao, args).stations.first['callsign'].should eq("EGAC_APP")
49
55
  target.new(icao, args).stations.class.should eq(Array)
50
56
  args = {:pilots => true, :atc => false}
51
57
  target.new(icao, args).stations.length.should be(0)
52
58
  end
53
59
 
54
60
  it "should combine all stations" do
55
- gem_data_file
56
- icao = "LO"
61
+ icao = "EDU"
57
62
  args = {:pilots => true, :atc => true}
58
- target.new(icao, args).stations.first[0].should eq("AMZ1105")
59
- target.new(icao, args).stations.last[0].should eq("OS601")
60
- target.new(icao, args).stations.last[11].should eq("LOWW")
61
- target.new(icao, args).stations.last[13].should eq("UUDD")
63
+ target.new(icao, args).stations.first['callsign'].should eq("AFR352")
64
+ target.new(icao, args).stations.last['callsign'].should eq("EDUU_W_CTR")
65
+ target.new(icao, args).stations.first['flight_plan']['departure'].should eq("EDUU")
66
+ target.new(icao, args).stations.first['flight_plan']['arrival'].should eq("LSGG")
62
67
  target.new(icao, args).stations.class.should eq(Array)
63
- target.new(icao, args).stations.count.should eq(12)
68
+ target.new(icao, args).stations.count.should eq(2)
64
69
  args = {:pilots => false, :atc => true}
65
- target.new(icao, args).stations.count.should eq(0)
70
+ target.new(icao, args).stations.count.should eq(1)
66
71
  end
67
72
  end
68
73
 
69
74
  describe "station_objects" do
70
75
  it "should return an array of Station objects" do
71
- gem_data_file
72
76
  icao = "LO"
73
77
  target.new(icao).station_objects.class.should eq(Array)
74
- target.new(icao).station_objects.size.should eq(12)
78
+ target.new(icao).station_objects.size.should eq(1)
75
79
  args = {:pilots => false}
76
80
  target.new(icao, args).station_objects.size.should eq(0)
77
81
  args = {:atc => false}
78
- target.new(icao, args).station_objects.size.should eq(12)
82
+ target.new(icao, args).station_objects.size.should eq(1)
79
83
  target.new(icao, args).station_objects.first.class.should eq(VatsimTools::Station)
80
- target.new(icao, args).station_objects.first.callsign.should eq("AMZ1105")
84
+ target.new(icao, args).station_objects.first.callsign.should eq("VFE1625")
81
85
  end
82
86
  end
83
87
 
84
88
  describe "sorted_station_objects" do
85
89
  it "should return an hash with arrays of Station objects" do
86
- gem_data_file
87
- icao = "WM"
90
+ icao = "ED"
88
91
  target.new(icao).sorted_station_objects.class.should eq(Hash)
89
92
  target.new(icao).sorted_station_objects.size.should eq(4)
90
93
  target.new(icao).sorted_station_objects[:atc].class.should eq(Array)
91
94
  target.new(icao).sorted_station_objects[:pilots].class.should eq(Array)
92
- target.new(icao).sorted_station_objects[:pilots].size.should eq(0)
95
+ target.new(icao).sorted_station_objects[:pilots].size.should eq(1)
93
96
  target.new(icao).sorted_station_objects[:atc].size.should eq(4)
94
97
  target.new(icao).sorted_station_objects[:atc].first.class.should eq(VatsimTools::Station)
95
98
  end
96
99
 
97
100
  it "should handle roles" do
98
- gem_data_file
99
- icao = "WM"
101
+ icao = "ED"
100
102
  atc = {:pilots => false}
101
103
  pilots = {:atc => false}
102
104
  target.new(icao, atc).sorted_station_objects.class.should eq(Hash)
@@ -107,53 +109,49 @@ describe VatsimTools::StationParser do
107
109
  target.new(icao, atc).sorted_station_objects[:pilots].size.should eq(0)
108
110
  target.new(icao, atc).sorted_station_objects[:atc].size.should eq(4)
109
111
  target.new(icao, pilots).sorted_station_objects[:atc].size.should eq(0)
110
- target.new(icao, pilots).sorted_station_objects[:pilots].size.should eq(0)
111
- target.new(icao, atc).sorted_station_objects[:atc].first.callsign.should eq("WMKK_APP")
112
+ target.new(icao, pilots).sorted_station_objects[:pilots].size.should eq(1)
113
+ target.new(icao, atc).sorted_station_objects[:atc].first.callsign.should eq("EDUU_W_CTR")
112
114
  end
113
115
 
114
116
  it "should recognize arrivals and departures" do
115
- gem_data_file
116
117
  icao = "LO"
117
- target.new(icao).sorted_station_objects[:pilots].size.should eq(12)
118
+ target.new(icao).sorted_station_objects[:pilots].size.should eq(1)
118
119
  target.new(icao).sorted_station_objects[:pilots].size.should eq(target.new(icao).sorted_station_objects[:arrivals].size + target.new(icao).sorted_station_objects[:departures].size)
119
- target.new(icao).sorted_station_objects[:arrivals].size.should eq(6)
120
- target.new(icao).sorted_station_objects[:departures].size.should eq(6)
120
+ target.new(icao).sorted_station_objects[:arrivals].size.should eq(0)
121
+ target.new(icao).sorted_station_objects[:departures].size.should eq(1)
121
122
  end
122
123
 
123
124
  it "should recognize exclusions" do
124
- gem_data_file
125
- icao = "LB"
125
+ icao = "ED"
126
126
  target.new(icao).sorted_station_objects[:atc].size.should eq(4)
127
- args = {:exclude => "LBGO"}
128
- target.new(icao, args).excluded.should eq("LBGO")
127
+ args = {:exclude => "EDBB"}
128
+ target.new(icao, args).excluded.should eq("EDBB")
129
129
  target.new(icao, args).excluded.length.should eq(4)
130
130
  target.new(icao, args).sorted_station_objects[:atc].size.should eq(3)
131
- args = {:exclude => "LBSF"}
131
+ args = {:exclude => "EDGG"}
132
132
  target.new(icao, args).sorted_station_objects[:atc].size.should eq(2)
133
- args = {:exclude => "lbsf"}
133
+ args = {:exclude => "edgg"}
134
134
  target.new(icao, args).sorted_station_objects[:atc].size.should eq(2)
135
135
  end
136
136
 
137
137
  it "should support multiple icaos" do
138
- gem_data_file
139
- icao = "LB"
138
+ icao = "ED"
140
139
  target.new(icao).sorted_station_objects[:atc].size.should eq(4)
140
+ target.new(icao).sorted_station_objects[:pilots].size.should eq(1)
141
+ icao = "EG"
142
+ target.new(icao).sorted_station_objects[:pilots].size.should eq(1)
143
+ target.new(icao).sorted_station_objects[:atc].size.should eq(1)
144
+ icao = "ED,EG"
141
145
  target.new(icao).sorted_station_objects[:pilots].size.should eq(2)
142
- icao = "LO"
143
- target.new(icao).sorted_station_objects[:pilots].size.should eq(12)
144
- target.new(icao).sorted_station_objects[:atc].size.should eq(0)
145
- gem_data_file
146
- icao = "LO,LB"
147
- target.new(icao).sorted_station_objects[:pilots].size.should eq(14)
148
- target.new(icao).sorted_station_objects[:atc].size.should eq(4)
149
- icao = "LO, LB"
150
- target.new(icao).sorted_station_objects[:pilots].size.should eq(14)
151
- target.new(icao).sorted_station_objects[:atc].size.should eq(4)
152
- icao = "LO , LB"
153
- target.new(icao).sorted_station_objects[:pilots].size.should eq(14)
154
- target.new(icao).sorted_station_objects[:arrivals].size.should eq(7)
155
- target.new(icao).sorted_station_objects[:departures].size.should eq(7)
156
- target.new(icao).sorted_station_objects[:atc].size.should eq(4)
146
+ target.new(icao).sorted_station_objects[:atc].size.should eq(5)
147
+ icao = "ED, EG"
148
+ target.new(icao).sorted_station_objects[:pilots].size.should eq(2)
149
+ target.new(icao).sorted_station_objects[:atc].size.should eq(5)
150
+ icao = "ED , EG"
151
+ target.new(icao).sorted_station_objects[:pilots].size.should eq(2)
152
+ target.new(icao).sorted_station_objects[:arrivals].size.should eq(1)
153
+ target.new(icao).sorted_station_objects[:departures].size.should eq(1)
154
+ target.new(icao).sorted_station_objects[:atc].size.should eq(5)
157
155
  end
158
156
 
159
157
  end
@@ -0,0 +1,796 @@
1
+ {
2
+ "general": {
3
+ "version": 3,
4
+ "reload": 1,
5
+ "update": "20210129214112",
6
+ "update_timestamp": "2021-01-29T21:41:12.581473Z",
7
+ "connected_clients": 1580,
8
+ "unique_users": 1494
9
+ },
10
+ "pilots": [
11
+ {
12
+ "cid": 1443199,
13
+ "name": "Colin Ray EGSS",
14
+ "callsign": "VFE1625",
15
+ "server": "GERMANY-1",
16
+ "pilot_rating": 0,
17
+ "latitude": 50.69043,
18
+ "longitude": 5.15406,
19
+ "altitude": 35669,
20
+ "groundspeed": 386,
21
+ "transponder": "4654",
22
+ "heading": 303,
23
+ "qnh_i_hg": 29.59,
24
+ "qnh_mb": 1002,
25
+ "flight_plan": {
26
+ "flight_rules": "I",
27
+ "aircraft": "B738/L",
28
+ "departure": "LOWS",
29
+ "arrival": "EGBB",
30
+ "alternate": "EGLL",
31
+ "cruise_tas": "364",
32
+ "altitude": "36000",
33
+ "deptime": "2010",
34
+ "enroute_time": "0210",
35
+ "fuel_time": "0331",
36
+ "remarks": "PBN/A1B1C1D1S1S2 DOF/210129 REG/N806SB EET/LOVV0000 EDMM0004 EDGG0033 EBUR0059 EHAA0118 EBUR0119 EGTT0127 OPR/VFE PER/C RMK/TCAS SIMBRIEF WWW.UKVIRTUAL.CO.UK /V/",
37
+ "route": "TRAUN2A/33 TRAUN L856 KPT L608 KUNOD LIRSU DENUT L610 HEMEL HEME1B "
38
+ },
39
+ "logon_time": "2021-01-29T19:11:12.8784266Z",
40
+ "last_updated": "2021-01-29T21:41:08.6518392Z"
41
+ },
42
+ {
43
+ "cid": 1484856,
44
+ "name": "Walias Garcia LEMD",
45
+ "callsign": "VFE2157",
46
+ "server": "GERMANY-1",
47
+ "pilot_rating": 0,
48
+ "latitude": 11.28617,
49
+ "longitude": -84.90521,
50
+ "altitude": 34844,
51
+ "groundspeed": 469,
52
+ "transponder": "2000",
53
+ "heading": 125,
54
+ "qnh_i_hg": 29.76,
55
+ "qnh_mb": 1008,
56
+ "flight_plan": {
57
+ "flight_rules": "I",
58
+ "aircraft": "H/B738/G",
59
+ "departure": "MHTG",
60
+ "arrival": "SKRG",
61
+ "alternate": "SKBO",
62
+ "cruise_tas": "510",
63
+ "altitude": "35000",
64
+ "deptime": "0000",
65
+ "enroute_time": "0000",
66
+ "fuel_time": "0000",
67
+ "remarks": "AIR CHILD VIRTUAL AIRLINES OPR/ONEWORLDVIRTUAL OPR/STARALLIANCE VIRTUAL OPR/SKYTEAMVIRTUAL UPSVAC VRYR YOUTUBE FLO SIAMÉS TWITCH.TV/FLOSIAMES BUFFALO AIRWAYS VA SOUTHWEST VIRTUAL AIRLINES /T/",
68
+ "route": "LIBIS1 LIBIS UA502 MGA UA317 TBG UA323 RNG DCT"
69
+ },
70
+ "logon_time": "2021-01-29T19:11:12.8800312Z",
71
+ "last_updated": "2021-01-29T21:41:08.7028646Z"
72
+ },
73
+ {
74
+ "cid": 1153349,
75
+ "name": "Richard Eloy Zepf CYYZ",
76
+ "callsign": "DAL2136",
77
+ "server": "SINGAPORE",
78
+ "pilot_rating": 0,
79
+ "latitude": 45.77765,
80
+ "longitude": -111.15607,
81
+ "altitude": 4481,
82
+ "groundspeed": 17,
83
+ "transponder": "1332",
84
+ "heading": 316,
85
+ "qnh_i_hg": 29.58,
86
+ "qnh_mb": 1002,
87
+ "flight_plan": {
88
+ "flight_rules": "I",
89
+ "aircraft": "MD88/L",
90
+ "departure": "KMSP",
91
+ "arrival": "KBZN",
92
+ "alternate": "KIDA",
93
+ "cruise_tas": "458",
94
+ "altitude": "32000",
95
+ "deptime": "1913",
96
+ "enroute_time": "0218",
97
+ "fuel_time": "0402",
98
+ "remarks": "COOL RUNNINGS.// DELTAVA.ORG/ TRACKING LIVE FLIGHT// /V/",
99
+ "route": "SMERF7 SMERF SWTHN BIL BZN"
100
+ },
101
+ "logon_time": "2021-01-29T19:11:12.881493Z",
102
+ "last_updated": "2021-01-29T21:41:10.4213156Z"
103
+ },
104
+ {
105
+ "cid": 1025689,
106
+ "name": "Pablo Capolupo SABE",
107
+ "callsign": "ARG1458",
108
+ "server": "CANADA",
109
+ "pilot_rating": 0,
110
+ "latitude": -24.84479,
111
+ "longitude": -65.47918,
112
+ "altitude": 4083,
113
+ "groundspeed": 0,
114
+ "transponder": "1546",
115
+ "heading": 68,
116
+ "qnh_i_hg": 29.91,
117
+ "qnh_mb": 1013,
118
+ "flight_plan": {
119
+ "flight_rules": "I",
120
+ "aircraft": "B737",
121
+ "departure": "SABE",
122
+ "arrival": "SASA",
123
+ "alternate": "SANT",
124
+ "cruise_tas": "452",
125
+ "altitude": "36000",
126
+ "deptime": "1910",
127
+ "enroute_time": "0158",
128
+ "fuel_time": "0319",
129
+ "remarks": "OPR/AEROLINEASVIRTUAL.COM.AR PIC/ARG1860 PBN/A1B1C1D1S1S2 REG/LVBZA EET/SACF0041 OPR/ARG PER/C RMK/TCAS) /V/ SEL/ABCF",
130
+ "route": "BIVAM3B BIVAM UW8 ERE UT672 DADMI UT677 ILPAR"
131
+ },
132
+ "logon_time": "2021-01-29T19:11:12.8825866Z",
133
+ "last_updated": "2021-01-29T21:41:11.5014007Z"
134
+ },
135
+ {
136
+ "cid": 869293,
137
+ "name": "Nikos Kantas LGTT",
138
+ "callsign": "SX6PL",
139
+ "server": "GERMANY-1",
140
+ "pilot_rating": 0,
141
+ "latitude": 49.07397,
142
+ "longitude": 20.23332,
143
+ "altitude": 2308,
144
+ "groundspeed": 11,
145
+ "transponder": "1000",
146
+ "heading": 101,
147
+ "qnh_i_hg": 29.29,
148
+ "qnh_mb": 992,
149
+ "flight_plan": {
150
+ "flight_rules": "I",
151
+ "aircraft": "B60T/G",
152
+ "departure": "LFBD",
153
+ "arrival": "LZTT",
154
+ "alternate": "LZSL",
155
+ "cruise_tas": "310",
156
+ "altitude": "33000",
157
+ "deptime": "1830",
158
+ "enroute_time": "0320",
159
+ "fuel_time": "0430",
160
+ "remarks": " /V/",
161
+ "route": "SAU V14 MEN UN871 MEZIN G53 LUXAN UN871 LTP N871 OMASI UN871 MOLUS N871 DITON T163 ZUE J51 BODAN Z601 KPT L856 ATLOL N871 BEPAS T709 BODAL L726 BNO T303 MAKAL P27 UMARY"
162
+ },
163
+ "logon_time": "2021-01-29T19:11:12.9745931Z",
164
+ "last_updated": "2021-01-29T21:41:11.8376085Z"
165
+ },
166
+ {
167
+ "cid": 1422541,
168
+ "name": "TARIF SUCA VABB",
169
+ "callsign": "AIC187",
170
+ "server": "GERMANY-1",
171
+ "pilot_rating": 0,
172
+ "latitude": 50.18995,
173
+ "longitude": -76.44464,
174
+ "altitude": 36235,
175
+ "groundspeed": 463,
176
+ "transponder": "4223",
177
+ "heading": 205,
178
+ "qnh_i_hg": 30.15,
179
+ "qnh_mb": 1021,
180
+ "flight_plan": {
181
+ "flight_rules": "I",
182
+ "aircraft": "H/B77W/L",
183
+ "departure": "VIDP",
184
+ "arrival": "CYYZ",
185
+ "alternate": "CYTR",
186
+ "cruise_tas": "489",
187
+ "altitude": "28000",
188
+ "deptime": "2200",
189
+ "enroute_time": "1351",
190
+ "fuel_time": "1604",
191
+ "remarks": "PBN/A1B1C1D1L1O1S2 DOF/201206 REG/VTALU EET/OPLR0034 OAKX0114 UTSD0151 UTTR0213 UAII0219 UACN0300 USSV0400 UUYY0503 ULAA0544 ULMM0616 ENOB0655 BGGL0752 CZEG1034 CZQX1039 CZUL1041 CZYZ1308 OPR/AI PER/E RALT/BIKF CYYR RMK/TCAS SIMBRIEF /V/ SEL/FLHM",
192
+ "route": "BUTOP5B BUTOP M875 SAJAN/N0499F300 M875 AMDAR/K0906F300 M741 ETUMU IDSAN A359 ASLOK/K0824F240 A777 RITAL/K0895F300 M741 LAMGI A777 KST/K0813F240 R482 LANOR/K0889F300 R482 LBN URILI UHT/K0909F320 ANEPA LIMUS/N0492F320 7322E 7409E/M086F340 7410N 7230N 7040N HB MUSVA/N0490F340 FEDDY YTQ/N0502F360 YFM YVO IMEBA IMEBA5"
193
+ },
194
+ "logon_time": "2021-01-29T19:11:12.9778908Z",
195
+ "last_updated": "2021-01-29T21:41:10.8920544Z"
196
+ },
197
+ {
198
+ "cid": 1497772,
199
+ "name": "Yasir Mehmood EGLL",
200
+ "callsign": "PIA741D",
201
+ "server": "UK-1",
202
+ "pilot_rating": 0,
203
+ "latitude": 21.95475,
204
+ "longitude": 39.71396,
205
+ "altitude": 8802,
206
+ "groundspeed": 257,
207
+ "transponder": "1200",
208
+ "heading": 223,
209
+ "qnh_i_hg": 30.08,
210
+ "qnh_mb": 1019,
211
+ "flight_plan": {
212
+ "flight_rules": "I",
213
+ "aircraft": "B77W",
214
+ "departure": "OPIS",
215
+ "arrival": "OEJN",
216
+ "alternate": "OETF",
217
+ "cruise_tas": "489",
218
+ "altitude": "36000",
219
+ "deptime": "1610",
220
+ "enroute_time": "0519",
221
+ "fuel_time": "0644",
222
+ "remarks": "PBN/A1B1C1D1L1O1S2 DOF/210129 REG/APBID EET/OPKR0050 OIIX0134 OBBB0305 OEJD0321 OPR/PIA PER/D RMK/TCAS SIMBRIEF /V/",
223
+ "route": "DAMTO1L DAMTO Z304 ZB G325 PG G665 ASVIB N312 SERDU/N0490F370 Z350 LVA/N0487F380 A453 KAPIP N312 MIDSI A453 SOLOB L768 ULADA T136 EMUSA Q212 KIA M309 VEMEM VEMEM1Q"
224
+ },
225
+ "logon_time": "2021-01-29T19:11:12.9809782Z",
226
+ "last_updated": "2021-01-29T21:41:08.4888377Z"
227
+ },
228
+ {
229
+ "cid": 1136828,
230
+ "name": "Devin Caliri KMSP",
231
+ "callsign": "NWA864",
232
+ "server": "USA-EAST",
233
+ "pilot_rating": 1,
234
+ "latitude": 64.6475,
235
+ "longitude": -147.68444,
236
+ "altitude": 14607,
237
+ "groundspeed": 225,
238
+ "transponder": "2200",
239
+ "heading": 249,
240
+ "qnh_i_hg": 29.48,
241
+ "qnh_mb": 998,
242
+ "flight_plan": {
243
+ "flight_rules": "I",
244
+ "aircraft": "B752/M-SDE3FHIM3RW/LB1",
245
+ "departure": "KMSP",
246
+ "arrival": "PAFA",
247
+ "alternate": "PAEI",
248
+ "cruise_tas": "459",
249
+ "altitude": "34000",
250
+ "deptime": "1550",
251
+ "enroute_time": "0528",
252
+ "fuel_time": "0659",
253
+ "remarks": "PBN/A1B3B4B5C4D4O4 DOF/210129 REG/N537SB EET/CZWG0111 CZEG0209 PAZA0445 OPR/NWA PER/D RMK/TCAS SIMBRIEF /V/",
254
+ "route": "KBREW1 FAR KP21A VLN YPE 57N120W 60N130W YXY J515 RDFLG HRDNG2"
255
+ },
256
+ "logon_time": "2021-01-29T19:11:13.0719836Z",
257
+ "last_updated": "2021-01-29T21:41:11.0234711Z"
258
+ },
259
+ {
260
+ "cid": 1379490,
261
+ "name": "Michel Matalon LSZH",
262
+ "callsign": "AFR352",
263
+ "server": "GERMANY-1",
264
+ "pilot_rating": 0,
265
+ "latitude": 44.99953,
266
+ "longitude": 9.47403,
267
+ "altitude": 37729,
268
+ "groundspeed": 425,
269
+ "transponder": "4107",
270
+ "heading": 300,
271
+ "qnh_i_hg": 29.64,
272
+ "qnh_mb": 1004,
273
+ "flight_plan": {
274
+ "flight_rules": "I",
275
+ "aircraft": "H/A359/L",
276
+ "departure": "EDUU",
277
+ "arrival": "LSGG",
278
+ "alternate": "LSZH",
279
+ "cruise_tas": "490",
280
+ "altitude": "38000",
281
+ "deptime": "1830",
282
+ "enroute_time": "0318",
283
+ "fuel_time": "0720",
284
+ "remarks": "PBN/A1B1C1D1L1O1S1 NAV/RNVD1E2A1 DOF/210129 REG/FHPJZ EET/LGGG0032 LIBB0201 LIRR0247 LIMM0251 LFMM0333 RVR/75 PER/D /V/",
285
+ "route": "PHA DCT EVENO UM601 RDS UL995 KRK UL53 OLGAT DCT NUCRE DCT PERAV DCT RUPAX DCT SUTOB DCT ERLIT DCT OTNUN DCT LOGDI DCT BOTAL DCT AOSTA L615 BANKO"
286
+ },
287
+ "logon_time": "2021-01-29T19:11:13.0739096Z",
288
+ "last_updated": "2021-01-29T21:41:08.3404289Z"
289
+ }
290
+ ],
291
+ "controllers": [
292
+ {
293
+ "cid": 1454201,
294
+ "name": "Sebastian Wilke",
295
+ "callsign": "EDUU_W_CTR",
296
+ "frequency": "133.650",
297
+ "facility": 6,
298
+ "rating": 4,
299
+ "server": "GERMANY-1",
300
+ "visual_range": 300,
301
+ "text_atis": [
302
+ "RHEIN RADAR - CPDLC EDUW",
303
+ "COVERING ABOVE FL245 ONLY!",
304
+ "CHARTS AND FURTHER INFORMATION AT WWW.VATSIM-GERMANY.ORG"
305
+ ],
306
+ "last_updated": "2021-01-29T21:41:08.0928733Z",
307
+ "logon_time": "2021-01-29T19:11:12.9744237Z"
308
+ },
309
+ {
310
+ "cid": 1489535,
311
+ "name": "Pavel Sergienko",
312
+ "callsign": "UMMS_R_APP",
313
+ "frequency": "125.250",
314
+ "facility": 5,
315
+ "rating": 3,
316
+ "server": "GERMANY-2",
317
+ "visual_range": 100,
318
+ "text_atis": [
319
+ "MINSK RADAR, GOOD DAY",
320
+ "WELCOME TO BELARUS!",
321
+ "JOIN OUR DISCORD CHANNEL HERE ;) VATS.IM/MINSK-FIR-DISCORD"
322
+ ],
323
+ "last_updated": "2021-01-29T21:40:59.5378132Z",
324
+ "logon_time": "2021-01-29T19:11:13.0906448Z"
325
+ },
326
+ {
327
+ "cid": 1302911,
328
+ "name": "Maxim Redlinger",
329
+ "callsign": "EDBB_U_APP",
330
+ "frequency": "121.120",
331
+ "facility": 5,
332
+ "rating": 5,
333
+ "server": "GERMANY-1",
334
+ "visual_range": 123,
335
+ "text_atis": [
336
+ "BERLIN DIRECTOR",
337
+ "ON INTIAL CONTACT, STATE YOUR CALLSIGN ONLY"
338
+ ],
339
+ "last_updated": "2021-01-29T21:40:48.8642889Z",
340
+ "logon_time": "2021-01-29T19:11:13.2762054Z"
341
+ },
342
+ {
343
+ "cid": 1373921,
344
+ "name": "Nikolas Goerlitz",
345
+ "callsign": "EDGG_E_CTR",
346
+ "frequency": "127.720",
347
+ "facility": 6,
348
+ "rating": 5,
349
+ "server": "GERMANY-1",
350
+ "visual_range": 200,
351
+ "text_atis": [
352
+ "LANGEN RADAR - CPDLC EDGE",
353
+ "COVERING EDDF/EDDS/EDFH/EDSB/EDDR",
354
+ "CHARTS AND FURTHER INFORMATION AT WWW.VATSIM-GERMANY.ORG"
355
+ ],
356
+ "last_updated": "2021-01-29T21:40:54.8406666Z",
357
+ "logon_time": "2021-01-29T19:11:13.3787693Z"
358
+ },
359
+ {
360
+ "cid": 1464533,
361
+ "name": "Marcus Kannicht",
362
+ "callsign": "EDGG_U_APP",
363
+ "frequency": "118.500",
364
+ "facility": 5,
365
+ "rating": 3,
366
+ "server": "GERMANY-1",
367
+ "visual_range": 100,
368
+ "text_atis": [
369
+ "FRANKFURT DIRECTOR",
370
+ "CALLSIGN ONLY ON INITIAL CALL, TURN IMMEDIATELY WHEN INSTRUCTED",
371
+ "CHARTS AND FURTHER INFORMATION AT WWW.VATSIM-GERMANY.ORG"
372
+ ],
373
+ "last_updated": "2021-01-29T21:40:52.9208287Z",
374
+ "logon_time": "2021-01-29T19:11:13.5833241Z"
375
+ },
376
+ {
377
+ "cid": 1343255,
378
+ "name": "Daniel Button",
379
+ "callsign": "EGAC_APP",
380
+ "frequency": "130.850",
381
+ "facility": 5,
382
+ "rating": 5,
383
+ "server": "UK-1",
384
+ "visual_range": 100,
385
+ "text_atis": [
386
+ "BELFAST RADAR",
387
+ "ATIS AVAILABLE ON 124.575"
388
+ ],
389
+ "last_updated": "2021-01-29T22:08:08.8181168Z",
390
+ "logon_time": "2021-01-29T19:11:14.4846565Z"
391
+ }
392
+ ],
393
+ "atis": [
394
+ {
395
+ "cid": 1338316,
396
+ "name": "Elijah Whitaker",
397
+ "callsign": "KIAH_ATIS",
398
+ "frequency": "124.050",
399
+ "facility": 4,
400
+ "rating": 4,
401
+ "server": "USA-EAST",
402
+ "visual_range": 50,
403
+ "atis_code": "R",
404
+ "text_atis": [
405
+ "KIAH ATIS INFO R 2053Z. 13012KT 10SM SCT037 BKN250 18/09 A3020"
406
+ ],
407
+ "last_updated": "2021-01-29T21:41:09.2864076Z",
408
+ "logon_time": "2021-01-29T19:11:12.8832768Z"
409
+ },
410
+ {
411
+ "cid": 1458917,
412
+ "name": "Bence Takacs",
413
+ "callsign": "CYYZ_ATIS",
414
+ "frequency": "120.820",
415
+ "facility": 4,
416
+ "rating": 3,
417
+ "server": "USA-EAST",
418
+ "visual_range": 0,
419
+ "atis_code": "H",
420
+ "text_atis": [
421
+ "CYYZ INFORMATION H WEATHER AT 2100Z , WIND 340 AT 4 ,",
422
+ "VISIBILITY 12 , 4000 BROKEN TEMPERATURE -8 DEW POINT -13 ,",
423
+ "ALTIMETER 3028 , APPROACH ILS RUNWAY 05 , DEPARTURE RUNWAY 06L",
424
+ ", ADVISE ATC THAT YOU HAVE INFORMATION H ."
425
+ ],
426
+ "last_updated": "2021-01-29T21:41:11.5554464Z",
427
+ "logon_time": "2021-01-29T19:11:13.4884084Z"
428
+ },
429
+ {
430
+ "cid": 1476945,
431
+ "name": "Ben",
432
+ "callsign": "EDDH_ATIS",
433
+ "frequency": "124.320",
434
+ "facility": 4,
435
+ "rating": 2,
436
+ "server": "GERMANY-1",
437
+ "visual_range": 0,
438
+ "atis_code": "R",
439
+ "text_atis": [
440
+ "HAMBURG INFORMATION R MET REPORT TIME 2120",
441
+ "EXPECT ILS APPROACH RUNWAY 05 RUNWAYS IN USE 05",
442
+ "FOR LANDING 33 FOR TAKE OFF SURFACE CONDITION RUNWAY 05",
443
+ "COVERED WITH WET SNOW 25 TO 50 PERCENT IN DEPTH 3 MM",
444
+ "FRICTION COEFFICIENT GOOD RUNWAY 33 COVERED WITH WET SNOW",
445
+ "MORE THAN 50 PERCENT IN DEPTH 12 MM FRICTION COEFFICIENT POOR",
446
+ "TRL 70 WHEN PASSING 2000 FEET 119.525 WIND 050 DEGREES 9",
447
+ "KNOTS VISIBILITY 4200 METERS LIGHT SNOW CLOUDS FEW",
448
+ "700 FEET SCATTERED 1800 FEET BROKEN 2600 FEET TEMPERATURE -1",
449
+ "DEW POINT -2 QNH 998 TREND TEMPORARY VISIBILITY 5",
450
+ "KILOMETERS CLOUDS BROKEN 700 FEET INFORMATION R OUT",
451
+ ""
452
+ ],
453
+ "last_updated": "2021-01-29T21:41:08.5764759Z",
454
+ "logon_time": "2021-01-29T19:11:14.2844417Z"
455
+ },
456
+ {
457
+ "cid": 1489535,
458
+ "name": "Pavel Sergienko",
459
+ "callsign": "UMMS_ATIS",
460
+ "frequency": "128.850",
461
+ "facility": 4,
462
+ "rating": 3,
463
+ "server": "GERMANY-2",
464
+ "visual_range": 0,
465
+ "atis_code": "Q",
466
+ "text_atis": [
467
+ "MINSK ATIS INFORMATION Q 2100 EXPECT ILS APPROACH RUNWAY 31R",
468
+ "COMPACTED SNOW FRICTION COEFFICIENT 0 POINT 43 DEPARTURE RUNWAY",
469
+ "31R COMPACTED SNOW FRICTION COEFFICIENT 0 POINT 43 TRANSITION",
470
+ "LEVEL 80 APRON AND TAXIWAYS ARE SLIPPERY TAXI WITH CAUTION",
471
+ "RUNWAYS 13R 31L CLOSED WIND VARIABLE BETWEEN 240 AND 310 DEGREES",
472
+ "5 GUSTS 8 METRES PER SECOND VISIBILITY GREATER THEN 10",
473
+ "KILOMETRES CLOUDS OVERCAST 300 METRES TEMPERATURE MINUS 4 DEW",
474
+ "POINT MINUS 5 QNH 990 HECTOPASCALS NO SIGNIFICANT CHANGE WELCOME",
475
+ "TO THE CAPITAL OF BELARUS! PLEASE DAWNLOAD ACTUAL SCENERY FROM",
476
+ "HTTP //VATS.IM/MINSK ACKNOWLEDGE INFORMATION Q"
477
+ ],
478
+ "last_updated": "2021-01-29T21:40:59.5376784Z",
479
+ "logon_time": "2021-01-29T19:11:15.1780675Z"
480
+ },
481
+ {
482
+ "cid": 1013673,
483
+ "name": "Florian",
484
+ "callsign": "EDDP_ATIS",
485
+ "frequency": "123.950",
486
+ "facility": 4,
487
+ "rating": 5,
488
+ "server": "GERMANY-1",
489
+ "visual_range": 0,
490
+ "atis_code": "T",
491
+ "text_atis": [
492
+ "LEIPZIG HALLE INFORMATION T MET REPORT TIME 2120",
493
+ "EXPECT ILS APPROACH RUNWAY 08L OR RUNWAY 08R",
494
+ "RUNWAYS IN USE 08L AND 08R TRANSITION LEVEL 70",
495
+ "SURFACE CONDITION RUNWAY 08L WET DEPOSITS MORE THAN 50 PERCENT",
496
+ "IN DEPTH 3 MM RUNWAY 08R WET DEPOSITS MORE THAN 50 PERCENT",
497
+ "IN DEPTH 1 MM FRICTION COEFFICIENT GOOD GOOD AND GOOD WIND",
498
+ "VARIABLE 1 KNOTS VISIBILITY 3500 METERS MIST",
499
+ "CLOUDS FEW 300 FEET BROKEN 2300 FEET TEMPERATURE 0",
500
+ "DEW POINT 0 QNH 994 HPA TREND BECOMING VISIBILITY 5",
501
+ "KILOMETERS INFORMATION T OUT"
502
+ ],
503
+ "last_updated": "2021-01-29T21:41:01.9048579Z",
504
+ "logon_time": "2021-01-29T19:11:15.7851184Z"
505
+ }
506
+ ],
507
+ "servers": [
508
+ {
509
+ "ident": "UK-1",
510
+ "hostname_or_ip": "209.97.177.84",
511
+ "location": "London, UK",
512
+ "name": "UK-1",
513
+ "clients_connection_allowed": 1
514
+ },
515
+ {
516
+ "ident": "GERMANY-1",
517
+ "hostname_or_ip": "157.230.25.177",
518
+ "location": "Frankfurt, Germany",
519
+ "name": "GERMANY-1",
520
+ "clients_connection_allowed": 1
521
+ },
522
+ {
523
+ "ident": "GERMANY-2",
524
+ "hostname_or_ip": "157.230.17.198",
525
+ "location": "Frankfurt, Germany",
526
+ "name": "GERMANY-2",
527
+ "clients_connection_allowed": 1
528
+ },
529
+ {
530
+ "ident": "USA-EAST",
531
+ "hostname_or_ip": "134.209.67.219",
532
+ "location": "New York, USA",
533
+ "name": "USA-EAST",
534
+ "clients_connection_allowed": 1
535
+ },
536
+ {
537
+ "ident": "USA-WEST",
538
+ "hostname_or_ip": "165.22.163.56",
539
+ "location": "San Francisco, USA",
540
+ "name": "USA-WEST",
541
+ "clients_connection_allowed": 1
542
+ },
543
+ {
544
+ "ident": "SINGAPORE",
545
+ "hostname_or_ip": "68.183.185.148",
546
+ "location": "Singapore",
547
+ "name": "SINGAPORE",
548
+ "clients_connection_allowed": 1
549
+ },
550
+ {
551
+ "ident": "CANADA",
552
+ "hostname_or_ip": "165.22.239.218",
553
+ "location": "Toronto, Canada",
554
+ "name": "CANADA",
555
+ "clients_connection_allowed": 1
556
+ }
557
+ ],
558
+ "prefiles": [
559
+ {
560
+ "cid": 1482780,
561
+ "name": "Anton Chambers",
562
+ "callsign": "DHL722",
563
+ "flight_plan": {
564
+ "flight_rules": "I",
565
+ "aircraft": "B738/L",
566
+ "departure": "KATL",
567
+ "arrival": "KJFK",
568
+ "alternate": "KBOS",
569
+ "cruise_tas": "455",
570
+ "altitude": "37000",
571
+ "deptime": "1630",
572
+ "enroute_time": "0150",
573
+ "fuel_time": "0326",
574
+ "remarks": "PBN/A1B1C1D1S1S2 DOF/210129 REG/N806SB EET/KZDC0036 KZNY0135 OPR/DHL PER/C RMK/TCAS SIMBRIEF /V/",
575
+ "route": "PHIIL2 GRD Q64 TYI J209 ORF J121 SIE CAMRN4"
576
+ },
577
+ "last_updated": "2021-01-29T19:11:16.5924412Z"
578
+ },
579
+ {
580
+ "cid": 1448015,
581
+ "name": "Jorge Massiah",
582
+ "callsign": "AAL205",
583
+ "flight_plan": {
584
+ "flight_rules": "I",
585
+ "aircraft": "B739/M-SDE2E3FGHIRWXY/LB1",
586
+ "departure": "MDPC",
587
+ "arrival": "KATL",
588
+ "alternate": "KBNA",
589
+ "cruise_tas": "473",
590
+ "altitude": "32000",
591
+ "deptime": "2015",
592
+ "enroute_time": "0332",
593
+ "fuel_time": "0508",
594
+ "remarks": "PBN/A1B1C1D1S1S2 DOF/210129 REG/N922SB EET/KZMA0033 KZJX0223 KZTL0300 OPR/AAL PER/D RMK/TCAS SIMBRIEF /V/",
595
+ "route": "PIXAR2W PIXAR UA636 PTA UW38 JUELE BR2L PVN L463 BRRGO/N0470F340 BR1L ZFP BR62V TRV DCT EBAYY Q93 DEBRL/N0468F350 Q93 PRMUS/N0470F340 Q89 SHRKS Q77 TEUFL DCT TYFTR JJEDI2"
596
+ },
597
+ "last_updated": "2021-01-29T19:47:46.6717107Z"
598
+ },
599
+ {
600
+ "cid": 822688,
601
+ "name": "EVAGELINOS GIANNIS",
602
+ "callsign": "AEEE903",
603
+ "flight_plan": {
604
+ "flight_rules": "I",
605
+ "aircraft": "B738/X",
606
+ "departure": "LGKR",
607
+ "arrival": "LFMN",
608
+ "alternate": "LFML",
609
+ "cruise_tas": "432",
610
+ "altitude": "30000",
611
+ "deptime": "2010",
612
+ "enroute_time": "0203",
613
+ "fuel_time": "0339",
614
+ "remarks": "+VFPS+/V/PBN/A1B1C1D1L1O1S1 NAV/RNVD1E2A1 DOF/210129 REG/SXBNA EET/LIBB0012 LIRR0040 LFFF0134 LFMM0149 RVR/200 PER/C ",
615
+ "route": "TIGRA L995 KAPPO M603 PNZ M729 ELB M616 DOBIM UM616 AKUTI R16 KERIT"
616
+ },
617
+ "last_updated": "2021-01-29T19:49:23.2649873Z"
618
+ },
619
+ {
620
+ "cid": 1174795,
621
+ "name": "Calum MacDonald",
622
+ "callsign": "AUA785B",
623
+ "flight_plan": {
624
+ "flight_rules": "I",
625
+ "aircraft": "E195/M-SDE2E3FGIRWY/S",
626
+ "departure": "LOWW",
627
+ "arrival": "LRSB",
628
+ "alternate": "LOWW",
629
+ "cruise_tas": "447",
630
+ "altitude": "33000",
631
+ "deptime": "2020",
632
+ "enroute_time": "0055",
633
+ "fuel_time": "0318",
634
+ "remarks": "PBN/A1B1D1S1S2 DOF/210129 REG/OELWN EET/LHCC0008 LZBB0009 LHCC0014 LRBB0032 OPR/AUA PER/C RVR/200 RMK/VIRTUAL AUSTRIAN CSN/AUSTRIAN /V/",
635
+ "route": "ADAMA Z648 VEDER L140 ALAMU DCT EPARI DCT IBINU"
636
+ },
637
+ "last_updated": "2021-01-29T19:50:42.0758969Z"
638
+ },
639
+ {
640
+ "cid": 1463036,
641
+ "name": "jake massey",
642
+ "callsign": "EIN53WT",
643
+ "flight_plan": {
644
+ "flight_rules": "I",
645
+ "aircraft": "A320/L",
646
+ "departure": "EIDW",
647
+ "arrival": "EGCC",
648
+ "alternate": "EGGP",
649
+ "cruise_tas": "460",
650
+ "altitude": "230",
651
+ "deptime": "0020",
652
+ "enroute_time": "0035",
653
+ "fuel_time": "0200",
654
+ "remarks": "+VFPS+/V/EIDW 291930Z 08008KT 9999 -DZ FEW004 BKN006 BKN012 06/05 Q1000 TEMPO BKN010EGCC 291920Z AUTO 33005KT 4900 RADZ SCT005 BKN009 OVC012 06/06 Q1001",
655
+ "route": "10/ LIFY2E LIFFY Q37 MALUD MIRS2B 23R/ "
656
+ },
657
+ "last_updated": "2021-01-29T19:51:23.2932557Z"
658
+ }
659
+ ],
660
+ "facilities": [
661
+ {
662
+ "id": 0,
663
+ "short": "OBS",
664
+ "long": "Observer"
665
+ },
666
+ {
667
+ "id": 1,
668
+ "short": "FSS",
669
+ "long": "Flight Service Station"
670
+ },
671
+ {
672
+ "id": 2,
673
+ "short": "DEL",
674
+ "long": "Clearance Delivery"
675
+ },
676
+ {
677
+ "id": 3,
678
+ "short": "GND",
679
+ "long": "Ground"
680
+ },
681
+ {
682
+ "id": 4,
683
+ "short": "TWR",
684
+ "long": "Tower"
685
+ },
686
+ {
687
+ "id": 5,
688
+ "short": "APP",
689
+ "long": "Approach/Departure"
690
+ },
691
+ {
692
+ "id": 6,
693
+ "short": "CTR",
694
+ "long": "Enroute"
695
+ }
696
+ ],
697
+ "ratings": [
698
+ {
699
+ "id": -1,
700
+ "short": "INAC",
701
+ "long": "Inactive"
702
+ },
703
+ {
704
+ "id": 0,
705
+ "short": "SUS",
706
+ "long": "Suspended"
707
+ },
708
+ {
709
+ "id": 1,
710
+ "short": "OBS",
711
+ "long": "Observer"
712
+ },
713
+ {
714
+ "id": 2,
715
+ "short": "S1",
716
+ "long": "Tower Trainee"
717
+ },
718
+ {
719
+ "id": 3,
720
+ "short": "S2",
721
+ "long": "Tower Controller"
722
+ },
723
+ {
724
+ "id": 4,
725
+ "short": "S3",
726
+ "long": "Senior Student"
727
+ },
728
+ {
729
+ "id": 5,
730
+ "short": "C1",
731
+ "long": "Enroute Controller"
732
+ },
733
+ {
734
+ "id": 6,
735
+ "short": "C2",
736
+ "long": "Controller 2 (not in use)"
737
+ },
738
+ {
739
+ "id": 7,
740
+ "short": "C3",
741
+ "long": "Senior Controller"
742
+ },
743
+ {
744
+ "id": 8,
745
+ "short": "I1",
746
+ "long": "Instructor"
747
+ },
748
+ {
749
+ "id": 9,
750
+ "short": "I2",
751
+ "long": "Instructor 2 (not in use)"
752
+ },
753
+ {
754
+ "id": 10,
755
+ "short": "I3",
756
+ "long": "Senior Instructor"
757
+ },
758
+ {
759
+ "id": 11,
760
+ "short": "SUP",
761
+ "long": "Supervisor"
762
+ },
763
+ {
764
+ "id": 12,
765
+ "short": "ADM",
766
+ "long": "Administrator"
767
+ }
768
+ ],
769
+ "pilot_ratings": [
770
+ {
771
+ "id": 0,
772
+ "short_name": "NEW",
773
+ "long_name": "Basic Member"
774
+ },
775
+ {
776
+ "id": 1,
777
+ "short_name": "PPL",
778
+ "long_name": "Private Pilot Licence"
779
+ },
780
+ {
781
+ "id": 3,
782
+ "short_name": "IR",
783
+ "long_name": "Instrument Rating"
784
+ },
785
+ {
786
+ "id": 7,
787
+ "short_name": "CMEL",
788
+ "long_name": "Commercial Multi-Engine License"
789
+ },
790
+ {
791
+ "id": 15,
792
+ "short_name": "ATPL",
793
+ "long_name": "Airline Transport Pilot License"
794
+ }
795
+ ]
796
+ }