flightcaster 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/LICENSE +20 -0
- data/README.rdoc +24 -0
- data/Rakefile +54 -0
- data/VERSION +1 -0
- data/lib/flightcaster.rb +28 -0
- data/lib/flightcaster/base.rb +120 -0
- data/lib/flightcaster/request.rb +55 -0
- data/test/fixtures/airline.xml +9 -0
- data/test/fixtures/airline_flight.xml +421 -0
- data/test/fixtures/airline_flights.xml +2421 -0
- data/test/fixtures/airlines.xml +246 -0
- data/test/fixtures/airlines_page.xml +260 -0
- data/test/fixtures/airlines_per_page.xml +421 -0
- data/test/fixtures/airport.xml +30 -0
- data/test/fixtures/airports.xml +440 -0
- data/test/fixtures/arrivals.xml +1221 -0
- data/test/fixtures/departures.xml +1301 -0
- data/test/fixtures/flight.xml +99 -0
- data/test/fixtures/flight_date.xml +101 -0
- data/test/fixtures/flight_path.xml +43 -0
- data/test/fixtures/flight_path_date.xml +1786 -0
- data/test/fixtures/flights.xml +2420 -0
- data/test/fixtures/general_delay.xml +11 -0
- data/test/fixtures/general_delays.xml +22 -0
- data/test/fixtures/ground_delay.xml +9 -0
- data/test/fixtures/ground_delays.xml +25 -0
- data/test/fixtures/ground_stop.xml +8 -0
- data/test/fixtures/ground_stops.xml +16 -0
- data/test/fixtures/metar.xml +21 -0
- data/test/fixtures/metars.xml +201 -0
- data/test/fixtures/notfound.xml +56 -0
- data/test/fixtures/oldapi.xml +13 -0
- data/test/fixtures/taf.xml +25 -0
- data/test/fixtures/tafs.xml +288 -0
- data/test/helper.rb +31 -0
- data/test/test_base.rb +0 -0
- data/test/test_flightcaster.rb +219 -0
- data/test/test_request.rb +10 -0
- metadata +118 -0
data/.document
ADDED
data/.gitignore
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 Jarod Luebbert
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
= flightcaster
|
2
|
+
|
3
|
+
The flightcaster ruby gem. Get started by going to http://docs.flightcaster.com/
|
4
|
+
and getting an API key.
|
5
|
+
|
6
|
+
== examples
|
7
|
+
|
8
|
+
See the examples directory.
|
9
|
+
|
10
|
+
== docs
|
11
|
+
|
12
|
+
== Note on Patches/Pull Requests
|
13
|
+
|
14
|
+
* Fork the project.
|
15
|
+
* Make your feature addition or bug fix.
|
16
|
+
* Add tests for it. This is important so I don't break it in a
|
17
|
+
future version unintentionally.
|
18
|
+
* Commit, do not mess with rakefile, version, or history.
|
19
|
+
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
20
|
+
* Send me a pull request. Bonus points for topic branches.
|
21
|
+
|
22
|
+
== Copyright
|
23
|
+
|
24
|
+
Copyright (c) 2010 Jarod Luebbert. See LICENSE for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "flightcaster"
|
8
|
+
gem.summary = %Q{Simple interaction with the flightcaster API}
|
9
|
+
gem.description = %Q{Simple interaction with the flightcaster API. Look up
|
10
|
+
flight predictions and information.}
|
11
|
+
gem.email = "jarod.luebbert@gmail.com"
|
12
|
+
gem.homepage = "http://github.com/jarodluebbert/flightcaster"
|
13
|
+
gem.authors = ["Jarod Luebbert"]
|
14
|
+
gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
|
15
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
|
+
end
|
17
|
+
Jeweler::GemcutterTasks.new
|
18
|
+
rescue LoadError
|
19
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
20
|
+
end
|
21
|
+
|
22
|
+
require 'rake/testtask'
|
23
|
+
Rake::TestTask.new(:test) do |test|
|
24
|
+
test.libs << 'lib' << 'test'
|
25
|
+
test.pattern = 'test/**/test_*.rb'
|
26
|
+
test.verbose = true
|
27
|
+
end
|
28
|
+
|
29
|
+
begin
|
30
|
+
require 'rcov/rcovtask'
|
31
|
+
Rcov::RcovTask.new do |test|
|
32
|
+
test.libs << 'test'
|
33
|
+
test.pattern = 'test/**/test_*.rb'
|
34
|
+
test.verbose = true
|
35
|
+
end
|
36
|
+
rescue LoadError
|
37
|
+
task :rcov do
|
38
|
+
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
task :test => :check_dependencies
|
43
|
+
|
44
|
+
task :default => :test
|
45
|
+
|
46
|
+
require 'rake/rdoctask'
|
47
|
+
Rake::RDocTask.new do |rdoc|
|
48
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
49
|
+
|
50
|
+
rdoc.rdoc_dir = 'rdoc'
|
51
|
+
rdoc.title = "flightcaster #{version}"
|
52
|
+
rdoc.rdoc_files.include('README*')
|
53
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
54
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/lib/flightcaster.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
gem 'httparty', '~> 0.5.2'
|
3
|
+
require 'httparty'
|
4
|
+
gem 'hashie', '~> 0.1.8'
|
5
|
+
require 'hashie'
|
6
|
+
|
7
|
+
[ "base",
|
8
|
+
"request" ].each do |file|
|
9
|
+
require File.join(File.dirname(__FILE__), 'flightcaster', file)
|
10
|
+
end
|
11
|
+
|
12
|
+
module FlightCaster
|
13
|
+
def self.new(*params)
|
14
|
+
FlightCaster::Base.new(*params)
|
15
|
+
end
|
16
|
+
|
17
|
+
class FlightCasterError < StandardError
|
18
|
+
attr_reader :data
|
19
|
+
|
20
|
+
def initialize(data)
|
21
|
+
@data = data
|
22
|
+
super
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class NotFound < StandardError; end
|
27
|
+
class OldAPI < FlightCasterError; end
|
28
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
module FlightCaster
|
2
|
+
class Base
|
3
|
+
attr_reader :api_key
|
4
|
+
|
5
|
+
def initialize(api_key)
|
6
|
+
@api_key = api_key
|
7
|
+
FlightCaster::Request.set_api_key(@api_key)
|
8
|
+
end
|
9
|
+
|
10
|
+
def airlines(params={})
|
11
|
+
perform_get('/airlines.xml', params)
|
12
|
+
end
|
13
|
+
|
14
|
+
def airline(id)
|
15
|
+
perform_get("/airlines/#{id}.xml")
|
16
|
+
end
|
17
|
+
|
18
|
+
def airports(params={})
|
19
|
+
perform_get('/airports.xml', params)
|
20
|
+
end
|
21
|
+
|
22
|
+
def airport(id)
|
23
|
+
perform_get("/airports/#{id}.xml")
|
24
|
+
end
|
25
|
+
|
26
|
+
def airport_arrivals(id, params={})
|
27
|
+
perform_get("/airports/#{id}/arrivals.xml", params)
|
28
|
+
end
|
29
|
+
|
30
|
+
def airport_departures(id, params={})
|
31
|
+
perform_get("/airports/#{id}/departures.xml", params)
|
32
|
+
end
|
33
|
+
|
34
|
+
def flight(id)
|
35
|
+
perform_get("/flights/#{id}.xml")
|
36
|
+
end
|
37
|
+
|
38
|
+
# TODO: rename this method to something more obvious
|
39
|
+
def flights_by_airline_on(airline_id, flight_number, date, params={})
|
40
|
+
t = convert_date(date)
|
41
|
+
perform_get("/airlines/#{airline_id}/flights/#{flight_number}/#{t}.xml", params)
|
42
|
+
end
|
43
|
+
|
44
|
+
def flight_path(from, to, params={})
|
45
|
+
perform_get("/airports/#{from}/departures/#{to}.xml", params)
|
46
|
+
end
|
47
|
+
|
48
|
+
def flight_path_on(from, to, date, params={})
|
49
|
+
t = convert_date(date)
|
50
|
+
perform_get("/airports/#{from}/departures/#{to}/#{t}.xml", params)
|
51
|
+
end
|
52
|
+
|
53
|
+
def flights(params={})
|
54
|
+
perform_get('/flights.xml', params)
|
55
|
+
end
|
56
|
+
|
57
|
+
def flights_by_airline(id, params={})
|
58
|
+
perform_get("/airlines/#{id}/flights.xml", params)
|
59
|
+
end
|
60
|
+
|
61
|
+
def flight_by_airline(airline_id, flight_number, params={})
|
62
|
+
perform_get("/airlines/#{airline_id}/flights/#{flight_number}.xml", params)
|
63
|
+
end
|
64
|
+
|
65
|
+
def metars(params={})
|
66
|
+
perform_get('/metars.xml', params)
|
67
|
+
end
|
68
|
+
|
69
|
+
def metar(id)
|
70
|
+
perform_get("/metars/#{id}.xml")
|
71
|
+
end
|
72
|
+
|
73
|
+
def tafs(params={})
|
74
|
+
perform_get('/tafs.xml', params)
|
75
|
+
end
|
76
|
+
|
77
|
+
def taf(id)
|
78
|
+
perform_get("/tafs/#{id}.xml")
|
79
|
+
end
|
80
|
+
|
81
|
+
def ground_delays(params={})
|
82
|
+
perform_get('/ground_delays.xml', params)
|
83
|
+
end
|
84
|
+
|
85
|
+
def ground_delay(id)
|
86
|
+
perform_get("/ground_delays/#{id}.xml")
|
87
|
+
end
|
88
|
+
|
89
|
+
def ground_stops(params={})
|
90
|
+
perform_get('/ground_stops.xml', params)
|
91
|
+
end
|
92
|
+
|
93
|
+
def ground_stop(id)
|
94
|
+
perform_get("/ground_stops/#{id}.xml")
|
95
|
+
end
|
96
|
+
|
97
|
+
def delays(params={})
|
98
|
+
perform_get('/delays.xml', params)
|
99
|
+
end
|
100
|
+
|
101
|
+
def delay(id)
|
102
|
+
perform_get("/delays/#{id}.xml")
|
103
|
+
end
|
104
|
+
|
105
|
+
private
|
106
|
+
|
107
|
+
def perform_get(path, params={})
|
108
|
+
FlightCaster::Request.get(path, params)
|
109
|
+
end
|
110
|
+
|
111
|
+
def convert_date(date)
|
112
|
+
if date.class == Time
|
113
|
+
date.strftime("%Y%m%d")
|
114
|
+
else
|
115
|
+
date
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module FlightCaster
|
2
|
+
class Request
|
3
|
+
|
4
|
+
API_ROOT = "http://api.flightcaster.com"
|
5
|
+
|
6
|
+
def self.set_api_key(api_key)
|
7
|
+
@api_key = api_key
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.get(path, params={})
|
11
|
+
uri = full_uri(path, params)
|
12
|
+
response = HTTParty.get(uri)
|
13
|
+
make_friendly(response)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.full_uri(path, params={})
|
17
|
+
options = expand(params)
|
18
|
+
"#{API_ROOT}#{path}?api_key=#{@api_key}#{options}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.make_friendly(response)
|
22
|
+
begin
|
23
|
+
raise_errors(response)
|
24
|
+
data = parse(response)
|
25
|
+
h = Hashie::Mash.new(data)
|
26
|
+
# since the hash looks like { :airlines => { stuff we want } },
|
27
|
+
# we just grab the value from the first key
|
28
|
+
h[h.keys[0]]
|
29
|
+
rescue
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.raise_errors(response)
|
34
|
+
case response.code.to_i
|
35
|
+
when 404
|
36
|
+
raise NotFound, "(#{response.code}): #{response.message}"
|
37
|
+
when 422
|
38
|
+
raise OldAPI, "The API version you are using is no longer supported. (#{response.code}): #{response.message}"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.parse(response)
|
43
|
+
Crack::XML.parse(response.body)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.expand(params)
|
47
|
+
final = ''
|
48
|
+
params.each do |k, v|
|
49
|
+
final << "&#{k}=#{v}"
|
50
|
+
end
|
51
|
+
final
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,421 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx/0.6.39
|
3
|
+
Date: Fri, 26 Feb 2010 06:52:18 GMT
|
4
|
+
Content-Type: application/xml; charset=utf-8
|
5
|
+
Connec
|
6
|
+
|
7
|
+
|
8
|
+
tion: keep-alive
|
9
|
+
X-FlightCaster-API-Version-Deprecated: 0.1.0
|
10
|
+
X-Runtime: 58
|
11
|
+
ETag: "99a6032cfea10d4781409c6d61acb78d"
|
12
|
+
Cache-Control: private, max-age=0, must-revalidate
|
13
|
+
Content-Length: 16991
|
14
|
+
X-Varnish: 681128431
|
15
|
+
Age: 0
|
16
|
+
Via: 1.1 varnish
|
17
|
+
|
18
|
+
<?xml version="1.0" encoding="utf-8"?>
|
19
|
+
<flights current-page="1" total-entries="5" total-pages="1">
|
20
|
+
<flight>
|
21
|
+
<actual-air-time nil="true" type="integer"/>
|
22
|
+
<actual-aircraft-type nil="true"/>
|
23
|
+
<actual-block-time nil="true" type="integer"/>
|
24
|
+
<actual-gate-arrival-time nil="true" type="datetime"/>
|
25
|
+
<actual-gate-departure-time nil="true" type="datetime"/>
|
26
|
+
<actual-runway-arrival-time nil="true" type="datetime"/>
|
27
|
+
<actual-runway-departure-time nil="true" type="datetime"/>
|
28
|
+
<airline-icao-id>VRD</airline-icao-id>
|
29
|
+
<arrival-gate nil="true"/>
|
30
|
+
<arrival-terminal>4</arrival-terminal>
|
31
|
+
<arrival-time type="datetime">2010-03-01T12:45:00Z</arrival-time>
|
32
|
+
<baggage-claim nil="true"/>
|
33
|
+
<codeshares/>
|
34
|
+
<created-at type="datetime">2010-02-25 08:25:56 UTC</created-at>
|
35
|
+
<departure-gate nil="true"/>
|
36
|
+
<departure-terminal>I</departure-terminal>
|
37
|
+
<departure-time type="datetime">2010-03-01T07:15:00Z</departure-time>
|
38
|
+
<destination-icao-id>KJFK</destination-icao-id>
|
39
|
+
<diverted-icao-id nil="true"/>
|
40
|
+
<estimated-gate-arrival-time nil="true" type="datetime"/>
|
41
|
+
<estimated-gate-departure-time nil="true" type="datetime"/>
|
42
|
+
<estimated-runway-arrival-time nil="true" type="datetime"/>
|
43
|
+
<estimated-runway-departure-time nil="true" type="datetime"/>
|
44
|
+
<flightstats-id>184973348</flightstats-id>
|
45
|
+
<id type="integer">2858549</id>
|
46
|
+
<local-departure-time type="datetime">2010-02-28 23:15:00 UTC</local-departure-time>
|
47
|
+
<number type="integer">28</number>
|
48
|
+
<origin-icao-id>KSFO</origin-icao-id>
|
49
|
+
<published-arrival-time type="datetime">2010-03-01T12:45:00Z</published-arrival-time>
|
50
|
+
<published-departure-time type="datetime">2010-03-01T07:15:00Z</published-departure-time>
|
51
|
+
<scheduled-air-time nil="true" type="integer"/>
|
52
|
+
<scheduled-aircraft-type>319</scheduled-aircraft-type>
|
53
|
+
<scheduled-block-time type="integer">330</scheduled-block-time>
|
54
|
+
<scheduled-gate-arrival-time type="datetime">2010-03-01T12:45:00Z</scheduled-gate-arrival-time>
|
55
|
+
<scheduled-gate-departure-time type="datetime">2010-03-01T07:15:00Z</scheduled-gate-departure-time>
|
56
|
+
<scheduled-runway-arrival-time nil="true" type="datetime"/>
|
57
|
+
<scheduled-runway-departure-time nil="true" type="datetime"/>
|
58
|
+
<status>Scheduled</status>
|
59
|
+
<status-code>S</status-code>
|
60
|
+
<tail-number nil="true"/>
|
61
|
+
<updated-at type="datetime">2010-02-25 08:25:56 UTC</updated-at>
|
62
|
+
<predictions>
|
63
|
+
<prediction>
|
64
|
+
<state>delayed</state>
|
65
|
+
<chance>0.005966128</chance>
|
66
|
+
<minutes>50</minutes>
|
67
|
+
</prediction>
|
68
|
+
<prediction>
|
69
|
+
<state>delayed</state>
|
70
|
+
<chance>0.86425453</chance>
|
71
|
+
<minutes>0</minutes>
|
72
|
+
</prediction>
|
73
|
+
<prediction>
|
74
|
+
<state>delayed</state>
|
75
|
+
<chance>0.016551193</chance>
|
76
|
+
<minutes>60</minutes>
|
77
|
+
</prediction>
|
78
|
+
<prediction>
|
79
|
+
<state>delayed</state>
|
80
|
+
<chance>0.06607647</chance>
|
81
|
+
<minutes>10</minutes>
|
82
|
+
</prediction>
|
83
|
+
<prediction>
|
84
|
+
<state>delayed</state>
|
85
|
+
<chance>0.029638182</chance>
|
86
|
+
<minutes>20</minutes>
|
87
|
+
</prediction>
|
88
|
+
<prediction>
|
89
|
+
<state>delayed</state>
|
90
|
+
<chance>0.0093020275</chance>
|
91
|
+
<minutes>30</minutes>
|
92
|
+
</prediction>
|
93
|
+
<prediction>
|
94
|
+
<state>delayed</state>
|
95
|
+
<chance>0.008211445</chance>
|
96
|
+
<minutes>40</minutes>
|
97
|
+
</prediction>
|
98
|
+
</predictions>
|
99
|
+
</flight>
|
100
|
+
<flight>
|
101
|
+
<actual-air-time nil="true" type="integer"/>
|
102
|
+
<actual-aircraft-type nil="true"/>
|
103
|
+
<actual-block-time nil="true" type="integer"/>
|
104
|
+
<actual-gate-arrival-time nil="true" type="datetime"/>
|
105
|
+
<actual-gate-departure-time nil="true" type="datetime"/>
|
106
|
+
<actual-runway-arrival-time nil="true" type="datetime"/>
|
107
|
+
<actual-runway-departure-time nil="true" type="datetime"/>
|
108
|
+
<airline-icao-id>VRD</airline-icao-id>
|
109
|
+
<arrival-gate nil="true"/>
|
110
|
+
<arrival-terminal>4</arrival-terminal>
|
111
|
+
<arrival-time type="datetime">2010-02-28T12:45:00Z</arrival-time>
|
112
|
+
<baggage-claim nil="true"/>
|
113
|
+
<codeshares/>
|
114
|
+
<created-at type="datetime">2010-02-24 08:10:47 UTC</created-at>
|
115
|
+
<departure-gate nil="true"/>
|
116
|
+
<departure-terminal>I</departure-terminal>
|
117
|
+
<departure-time type="datetime">2010-02-28T07:15:00Z</departure-time>
|
118
|
+
<destination-icao-id>KJFK</destination-icao-id>
|
119
|
+
<diverted-icao-id nil="true"/>
|
120
|
+
<estimated-gate-arrival-time nil="true" type="datetime"/>
|
121
|
+
<estimated-gate-departure-time nil="true" type="datetime"/>
|
122
|
+
<estimated-runway-arrival-time nil="true" type="datetime"/>
|
123
|
+
<estimated-runway-departure-time nil="true" type="datetime"/>
|
124
|
+
<flightstats-id>184891391</flightstats-id>
|
125
|
+
<id type="integer">2833710</id>
|
126
|
+
<local-departure-time type="datetime">2010-02-27 23:15:00 UTC</local-departure-time>
|
127
|
+
<number type="integer">28</number>
|
128
|
+
<origin-icao-id>KSFO</origin-icao-id>
|
129
|
+
<published-arrival-time type="datetime">2010-02-28T12:45:00Z</published-arrival-time>
|
130
|
+
<published-departure-time type="datetime">2010-02-28T07:15:00Z</published-departure-time>
|
131
|
+
<scheduled-air-time nil="true" type="integer"/>
|
132
|
+
<scheduled-aircraft-type>319</scheduled-aircraft-type>
|
133
|
+
<scheduled-block-time type="integer">330</scheduled-block-time>
|
134
|
+
<scheduled-gate-arrival-time type="datetime">2010-02-28T12:45:00Z</scheduled-gate-arrival-time>
|
135
|
+
<scheduled-gate-departure-time type="datetime">2010-02-28T07:15:00Z</scheduled-gate-departure-time>
|
136
|
+
<scheduled-runway-arrival-time nil="true" type="datetime"/>
|
137
|
+
<scheduled-runway-departure-time nil="true" type="datetime"/>
|
138
|
+
<status>Scheduled</status>
|
139
|
+
<status-code>S</status-code>
|
140
|
+
<tail-number nil="true"/>
|
141
|
+
<updated-at type="datetime">2010-02-24 08:10:47 UTC</updated-at>
|
142
|
+
<predictions>
|
143
|
+
<prediction>
|
144
|
+
<state>delayed</state>
|
145
|
+
<chance>0.005966128</chance>
|
146
|
+
<minutes>50</minutes>
|
147
|
+
</prediction>
|
148
|
+
<prediction>
|
149
|
+
<state>delayed</state>
|
150
|
+
<chance>0.86425453</chance>
|
151
|
+
<minutes>0</minutes>
|
152
|
+
</prediction>
|
153
|
+
<prediction>
|
154
|
+
<state>delayed</state>
|
155
|
+
<chance>0.016551193</chance>
|
156
|
+
<minutes>60</minutes>
|
157
|
+
</prediction>
|
158
|
+
<prediction>
|
159
|
+
<state>delayed</state>
|
160
|
+
<chance>0.06607647</chance>
|
161
|
+
<minutes>10</minutes>
|
162
|
+
</prediction>
|
163
|
+
<prediction>
|
164
|
+
<state>delayed</state>
|
165
|
+
<chance>0.029638182</chance>
|
166
|
+
<minutes>20</minutes>
|
167
|
+
</prediction>
|
168
|
+
<prediction>
|
169
|
+
<state>delayed</state>
|
170
|
+
<chance>0.0093020275</chance>
|
171
|
+
<minutes>30</minutes>
|
172
|
+
</prediction>
|
173
|
+
<prediction>
|
174
|
+
<state>delayed</state>
|
175
|
+
<chance>0.008211445</chance>
|
176
|
+
<minutes>40</minutes>
|
177
|
+
</prediction>
|
178
|
+
</predictions>
|
179
|
+
</flight>
|
180
|
+
<flight>
|
181
|
+
<actual-air-time nil="true" type="integer"/>
|
182
|
+
<actual-aircraft-type nil="true"/>
|
183
|
+
<actual-block-time nil="true" type="integer"/>
|
184
|
+
<actual-gate-arrival-time nil="true" type="datetime"/>
|
185
|
+
<actual-gate-departure-time nil="true" type="datetime"/>
|
186
|
+
<actual-runway-arrival-time nil="true" type="datetime"/>
|
187
|
+
<actual-runway-departure-time nil="true" type="datetime"/>
|
188
|
+
<airline-icao-id>VRD</airline-icao-id>
|
189
|
+
<arrival-gate nil="true"/>
|
190
|
+
<arrival-terminal>4</arrival-terminal>
|
191
|
+
<arrival-time type="datetime">2010-02-27T12:45:00Z</arrival-time>
|
192
|
+
<baggage-claim nil="true"/>
|
193
|
+
<codeshares/>
|
194
|
+
<created-at type="datetime">2010-02-23 08:25:42 UTC</created-at>
|
195
|
+
<departure-gate nil="true"/>
|
196
|
+
<departure-terminal>I</departure-terminal>
|
197
|
+
<departure-time type="datetime">2010-02-27T07:15:00Z</departure-time>
|
198
|
+
<destination-icao-id>KJFK</destination-icao-id>
|
199
|
+
<diverted-icao-id nil="true"/>
|
200
|
+
<estimated-gate-arrival-time nil="true" type="datetime"/>
|
201
|
+
<estimated-gate-departure-time nil="true" type="datetime"/>
|
202
|
+
<estimated-runway-arrival-time nil="true" type="datetime"/>
|
203
|
+
<estimated-runway-departure-time nil="true" type="datetime"/>
|
204
|
+
<flightstats-id>184805746</flightstats-id>
|
205
|
+
<id type="integer">2806165</id>
|
206
|
+
<local-departure-time type="datetime">2010-02-26 23:15:00 UTC</local-departure-time>
|
207
|
+
<number type="integer">28</number>
|
208
|
+
<origin-icao-id>KSFO</origin-icao-id>
|
209
|
+
<published-arrival-time type="datetime">2010-02-27T12:45:00Z</published-arrival-time>
|
210
|
+
<published-departure-time type="datetime">2010-02-27T07:15:00Z</published-departure-time>
|
211
|
+
<scheduled-air-time nil="true" type="integer"/>
|
212
|
+
<scheduled-aircraft-type>319</scheduled-aircraft-type>
|
213
|
+
<scheduled-block-time type="integer">330</scheduled-block-time>
|
214
|
+
<scheduled-gate-arrival-time type="datetime">2010-02-27T12:45:00Z</scheduled-gate-arrival-time>
|
215
|
+
<scheduled-gate-departure-time type="datetime">2010-02-27T07:15:00Z</scheduled-gate-departure-time>
|
216
|
+
<scheduled-runway-arrival-time nil="true" type="datetime"/>
|
217
|
+
<scheduled-runway-departure-time nil="true" type="datetime"/>
|
218
|
+
<status>Scheduled</status>
|
219
|
+
<status-code>S</status-code>
|
220
|
+
<tail-number nil="true"/>
|
221
|
+
<updated-at type="datetime">2010-02-23 08:25:42 UTC</updated-at>
|
222
|
+
<predictions>
|
223
|
+
<prediction>
|
224
|
+
<state>delayed</state>
|
225
|
+
<chance>0.005966128</chance>
|
226
|
+
<minutes>50</minutes>
|
227
|
+
</prediction>
|
228
|
+
<prediction>
|
229
|
+
<state>delayed</state>
|
230
|
+
<chance>0.86425453</chance>
|
231
|
+
<minutes>0</minutes>
|
232
|
+
</prediction>
|
233
|
+
<prediction>
|
234
|
+
<state>delayed</state>
|
235
|
+
<chance>0.016551193</chance>
|
236
|
+
<minutes>60</minutes>
|
237
|
+
</prediction>
|
238
|
+
<prediction>
|
239
|
+
<state>delayed</state>
|
240
|
+
<chance>0.06607647</chance>
|
241
|
+
<minutes>10</minutes>
|
242
|
+
</prediction>
|
243
|
+
<prediction>
|
244
|
+
<state>delayed</state>
|
245
|
+
<chance>0.029638182</chance>
|
246
|
+
<minutes>20</minutes>
|
247
|
+
</prediction>
|
248
|
+
<prediction>
|
249
|
+
<state>delayed</state>
|
250
|
+
<chance>0.0093020275</chance>
|
251
|
+
<minutes>30</minutes>
|
252
|
+
</prediction>
|
253
|
+
<prediction>
|
254
|
+
<state>delayed</state>
|
255
|
+
<chance>0.008211445</chance>
|
256
|
+
<minutes>40</minutes>
|
257
|
+
</prediction>
|
258
|
+
</predictions>
|
259
|
+
</flight>
|
260
|
+
<flight>
|
261
|
+
<actual-air-time nil="true" type="integer"/>
|
262
|
+
<actual-aircraft-type nil="true"/>
|
263
|
+
<actual-block-time nil="true" type="integer"/>
|
264
|
+
<actual-gate-arrival-time nil="true" type="datetime"/>
|
265
|
+
<actual-gate-departure-time nil="true" type="datetime"/>
|
266
|
+
<actual-runway-arrival-time nil="true" type="datetime"/>
|
267
|
+
<actual-runway-departure-time nil="true" type="datetime"/>
|
268
|
+
<airline-icao-id>VRD</airline-icao-id>
|
269
|
+
<arrival-gate nil="true"/>
|
270
|
+
<arrival-terminal>4</arrival-terminal>
|
271
|
+
<arrival-time type="datetime">2010-02-26T12:45:00Z</arrival-time>
|
272
|
+
<baggage-claim nil="true"/>
|
273
|
+
<codeshares/>
|
274
|
+
<created-at type="datetime">2010-02-22 08:12:02 UTC</created-at>
|
275
|
+
<departure-gate nil="true"/>
|
276
|
+
<departure-terminal>I</departure-terminal>
|
277
|
+
<departure-time type="datetime">2010-02-26T07:15:00Z</departure-time>
|
278
|
+
<destination-icao-id>KJFK</destination-icao-id>
|
279
|
+
<diverted-icao-id nil="true"/>
|
280
|
+
<estimated-gate-arrival-time type="datetime">2010-02-26T12:45:00Z</estimated-gate-arrival-time>
|
281
|
+
<estimated-gate-departure-time type="datetime">2010-02-26T07:15:00Z</estimated-gate-departure-time>
|
282
|
+
<estimated-runway-arrival-time type="datetime">2010-02-26T12:47:00Z</estimated-runway-arrival-time>
|
283
|
+
<estimated-runway-departure-time type="datetime">2010-02-26T07:23:00Z</estimated-runway-departure-time>
|
284
|
+
<flightstats-id>184712623</flightstats-id>
|
285
|
+
<id type="integer">2777384</id>
|
286
|
+
<local-departure-time type="datetime">2010-02-25 23:15:00 UTC</local-departure-time>
|
287
|
+
<number type="integer">28</number>
|
288
|
+
<origin-icao-id>KSFO</origin-icao-id>
|
289
|
+
<published-arrival-time type="datetime">2010-02-26T12:45:00Z</published-arrival-time>
|
290
|
+
<published-departure-time type="datetime">2010-02-26T07:15:00Z</published-departure-time>
|
291
|
+
<scheduled-air-time type="integer">311</scheduled-air-time>
|
292
|
+
<scheduled-aircraft-type>319</scheduled-aircraft-type>
|
293
|
+
<scheduled-block-time type="integer">330</scheduled-block-time>
|
294
|
+
<scheduled-gate-arrival-time type="datetime">2010-02-26T12:45:00Z</scheduled-gate-arrival-time>
|
295
|
+
<scheduled-gate-departure-time type="datetime">2010-02-26T07:15:00Z</scheduled-gate-departure-time>
|
296
|
+
<scheduled-runway-arrival-time type="datetime">2010-02-26T12:34:00Z</scheduled-runway-arrival-time>
|
297
|
+
<scheduled-runway-departure-time type="datetime">2010-02-26T07:23:00Z</scheduled-runway-departure-time>
|
298
|
+
<status>Scheduled</status>
|
299
|
+
<status-code>S</status-code>
|
300
|
+
<tail-number nil="true"/>
|
301
|
+
<updated-at type="datetime">2010-02-26 06:32:46 UTC</updated-at>
|
302
|
+
<predictions>
|
303
|
+
<prediction>
|
304
|
+
<state>delayed</state>
|
305
|
+
<chance>0.009502263</chance>
|
306
|
+
<minutes>50</minutes>
|
307
|
+
</prediction>
|
308
|
+
<prediction>
|
309
|
+
<state>delayed</state>
|
310
|
+
<chance>0.75927603</chance>
|
311
|
+
<minutes>0</minutes>
|
312
|
+
</prediction>
|
313
|
+
<prediction>
|
314
|
+
<state>delayed</state>
|
315
|
+
<chance>0.028506787</chance>
|
316
|
+
<minutes>60</minutes>
|
317
|
+
</prediction>
|
318
|
+
<prediction>
|
319
|
+
<state>delayed</state>
|
320
|
+
<chance>0.10723982</chance>
|
321
|
+
<minutes>10</minutes>
|
322
|
+
</prediction>
|
323
|
+
<prediction>
|
324
|
+
<state>delayed</state>
|
325
|
+
<chance>0.053393666</chance>
|
326
|
+
<minutes>20</minutes>
|
327
|
+
</prediction>
|
328
|
+
<prediction>
|
329
|
+
<state>delayed</state>
|
330
|
+
<chance>0.028054299</chance>
|
331
|
+
<minutes>30</minutes>
|
332
|
+
</prediction>
|
333
|
+
<prediction>
|
334
|
+
<state>delayed</state>
|
335
|
+
<chance>0.014027149</chance>
|
336
|
+
<minutes>40</minutes>
|
337
|
+
</prediction>
|
338
|
+
</predictions>
|
339
|
+
</flight>
|
340
|
+
<flight>
|
341
|
+
<actual-air-time type="integer">313</actual-air-time>
|
342
|
+
<actual-aircraft-type nil="true"/>
|
343
|
+
<actual-block-time nil="true" type="integer"/>
|
344
|
+
<actual-gate-arrival-time type="datetime">2010-02-25T12:46:00Z</actual-gate-arrival-time>
|
345
|
+
<actual-gate-departure-time type="datetime">2010-02-25T07:13:00Z</actual-gate-departure-time>
|
346
|
+
<actual-runway-arrival-time type="datetime">2010-02-25T12:39:59Z</actual-runway-arrival-time>
|
347
|
+
<actual-runway-departure-time type="datetime">2010-02-25T07:26:04Z</actual-runway-departure-time>
|
348
|
+
<airline-icao-id>VRD</airline-icao-id>
|
349
|
+
<arrival-gate nil="true"/>
|
350
|
+
<arrival-terminal>4</arrival-terminal>
|
351
|
+
<arrival-time type="datetime">2010-02-25T12:45:00Z</arrival-time>
|
352
|
+
<baggage-claim nil="true"/>
|
353
|
+
<codeshares/>
|
354
|
+
<created-at type="datetime">2010-02-21 08:11:34 UTC</created-at>
|
355
|
+
<departure-gate>A3</departure-gate>
|
356
|
+
<departure-terminal>I</departure-terminal>
|
357
|
+
<departure-time type="datetime">2010-02-25T07:15:00Z</departure-time>
|
358
|
+
<destination-icao-id>KJFK</destination-icao-id>
|
359
|
+
<diverted-icao-id nil="true"/>
|
360
|
+
<estimated-gate-arrival-time type="datetime">2010-02-25T12:40:00Z</estimated-gate-arrival-time>
|
361
|
+
<estimated-gate-departure-time type="datetime">2010-02-25T07:15:00Z</estimated-gate-departure-time>
|
362
|
+
<estimated-runway-arrival-time type="datetime">2010-02-25T12:37:00Z</estimated-runway-arrival-time>
|
363
|
+
<estimated-runway-departure-time type="datetime">2010-02-25T07:26:00Z</estimated-runway-departure-time>
|
364
|
+
<flightstats-id>184622510</flightstats-id>
|
365
|
+
<id type="integer">2749039</id>
|
366
|
+
<local-departure-time type="datetime">2010-02-24 23:15:00 UTC</local-departure-time>
|
367
|
+
<number type="integer">28</number>
|
368
|
+
<origin-icao-id>KSFO</origin-icao-id>
|
369
|
+
<published-arrival-time type="datetime">2010-02-25T12:45:00Z</published-arrival-time>
|
370
|
+
<published-departure-time type="datetime">2010-02-25T07:15:00Z</published-departure-time>
|
371
|
+
<scheduled-air-time type="integer">318</scheduled-air-time>
|
372
|
+
<scheduled-aircraft-type>319</scheduled-aircraft-type>
|
373
|
+
<scheduled-block-time type="integer">333</scheduled-block-time>
|
374
|
+
<scheduled-gate-arrival-time type="datetime">2010-02-25T12:45:00Z</scheduled-gate-arrival-time>
|
375
|
+
<scheduled-gate-departure-time type="datetime">2010-02-25T07:15:00Z</scheduled-gate-departure-time>
|
376
|
+
<scheduled-runway-arrival-time type="datetime">2010-02-25T12:44:00Z</scheduled-runway-arrival-time>
|
377
|
+
<scheduled-runway-departure-time type="datetime">2010-02-25T07:26:00Z</scheduled-runway-departure-time>
|
378
|
+
<status>Landed</status>
|
379
|
+
<status-code>L</status-code>
|
380
|
+
<tail-number nil="true"/>
|
381
|
+
<updated-at type="datetime">2010-02-25 13:02:03 UTC</updated-at>
|
382
|
+
<predictions>
|
383
|
+
<prediction>
|
384
|
+
<state>delayed</state>
|
385
|
+
<chance>0.005966128</chance>
|
386
|
+
<minutes>50</minutes>
|
387
|
+
</prediction>
|
388
|
+
<prediction>
|
389
|
+
<state>delayed</state>
|
390
|
+
<chance>0.86425453</chance>
|
391
|
+
<minutes>0</minutes>
|
392
|
+
</prediction>
|
393
|
+
<prediction>
|
394
|
+
<state>delayed</state>
|
395
|
+
<chance>0.016551193</chance>
|
396
|
+
<minutes>60</minutes>
|
397
|
+
</prediction>
|
398
|
+
<prediction>
|
399
|
+
<state>delayed</state>
|
400
|
+
<chance>0.06607647</chance>
|
401
|
+
<minutes>10</minutes>
|
402
|
+
</prediction>
|
403
|
+
<prediction>
|
404
|
+
<state>delayed</state>
|
405
|
+
<chance>0.029638182</chance>
|
406
|
+
<minutes>20</minutes>
|
407
|
+
</prediction>
|
408
|
+
<prediction>
|
409
|
+
<state>delayed</state>
|
410
|
+
<chance>0.0093020275</chance>
|
411
|
+
<minutes>30</minutes>
|
412
|
+
</prediction>
|
413
|
+
<prediction>
|
414
|
+
<state>delayed</state>
|
415
|
+
<chance>0.008211445</chance>
|
416
|
+
<minutes>40</minutes>
|
417
|
+
</prediction>
|
418
|
+
</predictions>
|
419
|
+
</flight>
|
420
|
+
</flights>
|
421
|
+
|