flightcheck 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/flightcheck.rb +54 -19
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d7279bcf039e1885bbd60fd2fb7d808a8592c70
|
4
|
+
data.tar.gz: 5fe29ad744055798a6a52fb33f92c29c319e181c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5cd02f37e734ca4db3f6594a69cd1c2bf7cbcdcfa3c5bb6f64e48fc8083faf7639797183cb8c5d441cd3f8a5e3a429cb083c21430bc518621f5d10537177de1
|
7
|
+
data.tar.gz: 1219acd2740153dc1c266d42014c453e876e0003248235bdee13f19457a6b51c146b3f6ebbaacb4dd4b187c4b1ace3eb64979727c6b79ab71b103608730bca38
|
data/lib/flightcheck.rb
CHANGED
@@ -4,11 +4,11 @@ class Flight
|
|
4
4
|
attr_reader :flight_number, :departure_date, :title, :status, :route, :url,
|
5
5
|
:raw_airline_iata, :airline_iata, :route_array, :departure_airport_iata,
|
6
6
|
:departure_airport_city, :departure_country_iata, :arriving_airport_iata,
|
7
|
-
:arriving_airport_city, :arriving_country_iata
|
7
|
+
:arriving_airport_city, :arriving_country_iata, :multiple_segments,
|
8
|
+
:segment_1, :segment_2, :selected_segment, :segment_1, :segment_2
|
8
9
|
|
9
10
|
## Initialize
|
10
11
|
def initialize(flight_number, departure_date)
|
11
|
-
|
12
12
|
# Flight number
|
13
13
|
# e.g. "BA2589"
|
14
14
|
@flight_number = flight_number
|
@@ -23,25 +23,63 @@ class Flight
|
|
23
23
|
|
24
24
|
## Use Mechanize to scrape all flight information
|
25
25
|
def check
|
26
|
-
|
27
26
|
# Instantiate a new Mechanize object
|
28
27
|
a = Mechanize.new
|
29
28
|
|
30
29
|
# Visit the flightstats URL to scrape information
|
31
30
|
a.get(@url) do |page|
|
32
|
-
|
33
|
-
#
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
31
|
+
# Check if flight has multiple segments
|
32
|
+
# Returns a boolean value
|
33
|
+
@multiple_segments = page.search("//*[@id='mainAreaLeftColumn']/div/div/text()").text.strip === "This flight has multiple segments. Please select a segment from the list." ? true : false
|
34
|
+
|
35
|
+
if @multiple_segments == true
|
36
|
+
|
37
|
+
@segment_1 = page.search("//*[@id='mainAreaLeftColumn']/div/div/p[1]/a").text.strip
|
38
|
+
@segment_2 = page.search("//*[@id='mainAreaLeftColumn']/div/div/p[2]/a").text.strip
|
39
|
+
|
40
|
+
puts "This flight has two flight segments,"
|
41
|
+
puts "please select the correct one"
|
42
|
+
puts "========================================"
|
43
|
+
puts "Segment 1: #{@segment_1}"
|
44
|
+
puts "Segment 2: #{@segment_2}"
|
45
|
+
puts "----------------------------------------"
|
46
|
+
print "1 or 2? Make your choice: "
|
47
|
+
@selected_segment = gets.chomp
|
48
|
+
|
49
|
+
if @selected_segment == "1"
|
50
|
+
@segment_1 = page.links[0].click
|
51
|
+
|
52
|
+
# Page title contains the basic information for the flight
|
53
|
+
# e.g. "(BA) British Airways 2589 Flight Status"
|
54
|
+
@title = @segment_1.search("head > title").text.strip
|
55
|
+
|
56
|
+
# Flight status
|
57
|
+
# e.g. "Landed - Delayed 103 minutes"
|
58
|
+
@status = @segment_1.search("#mainAreaLeftColumn > div.uiComponent674.flightStatusByFlightBlock > div > div.statusBlock > div.statusType").text.strip
|
59
|
+
|
60
|
+
# Flight route
|
61
|
+
# e.g. "(VCE) Venice, IT to (LGW) London, EN, GB"
|
62
|
+
@route = @segment_1.search("#mainAreaLeftColumn > div.uiComponent674.flightStatusByFlightBlock > div > div.route").text.strip
|
63
|
+
|
64
|
+
elsif @selected_segment == "2"
|
65
|
+
@segment_2 = page.links[1].click
|
66
|
+
|
67
|
+
# Page title contains the basic information for the flight
|
68
|
+
# e.g. "(BA) British Airways 2589 Flight Status"
|
69
|
+
@title = @segment_2.search("head > title").text.strip
|
70
|
+
|
71
|
+
# Flight status
|
72
|
+
# e.g. "Landed - Delayed 103 minutes"
|
73
|
+
@status = @segment_2.search("#mainAreaLeftColumn > div.uiComponent674.flightStatusByFlightBlock > div > div.statusBlock > div.statusType").text.strip
|
74
|
+
|
75
|
+
# Flight route
|
76
|
+
# e.g. "(VCE) Venice, IT to (LGW) London, EN, GB"
|
77
|
+
@route = @segment_2.search("#mainAreaLeftColumn > div.uiComponent674.flightStatusByFlightBlock > div > div.route").text.strip
|
78
|
+
|
79
|
+
else
|
80
|
+
puts "The input was unknown. Please use '1' for segment 1 and '2' for segment 2"
|
81
|
+
end
|
82
|
+
end
|
45
83
|
end
|
46
84
|
|
47
85
|
## Airline IATA
|
@@ -87,8 +125,5 @@ class Flight
|
|
87
125
|
puts @title
|
88
126
|
puts @status
|
89
127
|
puts @route
|
90
|
-
|
91
|
-
|
92
|
-
|
93
128
|
end
|
94
129
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flightcheck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Narek Aramjan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mechanize
|