teecket 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +50 -0
- data/bin/teecket +3 -1
- data/lib/teecket/air_asia.rb +2 -0
- data/lib/teecket/firefly.rb +2 -0
- data/lib/teecket/malaysia_airlines.rb +26 -16
- data/lib/teecket/malindo_air.rb +11 -2
- data/lib/teecket/printer.rb +6 -3
- data/lib/teecket.rb +1 -4
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ee540199c264f86ba6312ae82849a00defce72f
|
4
|
+
data.tar.gz: 3da57bfbdd0164679278815b5fc37f2b4c8e803a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1aeccd697457d6ba343e113f03af7524efa6d5cb767b5393c1e7909ed5555f01383f6259acf6852d41d8f1999c70b06b557421b4179f9f1c400f63dde07f798
|
7
|
+
data.tar.gz: e442fe72a00deef871928fc56b48116c85b169373bf1aa42f0b9e7bf9ff64d6873a5920dc5703dec4e42112458a6711103f0981a197f002c0158deb3685f37f0
|
data/README.md
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
## Welcome to Teecket
|
2
|
+
|
3
|
+
Teecket is a gem that will search from AirAsia, Firefly, Malaysia Airlines and
|
4
|
+
Malindo Air from the comfort of your command line.
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
At the command prompt, install it using `gem`:
|
9
|
+
|
10
|
+
gem install teecket
|
11
|
+
|
12
|
+
## Usage
|
13
|
+
|
14
|
+
This is an example for a working command:
|
15
|
+
|
16
|
+
teecket KUL KBR 30-07-2015
|
17
|
+
|
18
|
+
If you're unsure, typing just the `teecket` will yield:
|
19
|
+
|
20
|
+
teecket KBR KUL 30-07-2015
|
21
|
+
|
22
|
+
This is an example of an output:
|
23
|
+
|
24
|
+
+-------------------+-----------------+---------+--------+-------------+----------+----------+-----------+
|
25
|
+
| Flight | Flight # | Transit | Origin | Destination | Depart | Arrive | Fare (RM) |
|
26
|
+
+-------------------+-----------------+---------+--------+-------------+----------+----------+-----------+
|
27
|
+
| Malaysia Airlines | FY5311 + FY5333 | YES | KBR | JHB | 08:00 AM | 11:40 AM | 296.20 |
|
28
|
+
| Malaysia Airlines | MH5427 | NO | KBR | JHB | 08:50 AM | 10:30 AM | 239.55 |
|
29
|
+
| Malaysia Airlines | FY5305 + FY5491 | YES | KBR | JHB | 01:25 PM | 05:10 PM | 296.20 |
|
30
|
+
| Malaysia Airlines | FY5323 + FY5339 | YES | KBR | JHB | 02:50 PM | 06:20 PM | 296.20 |
|
31
|
+
| Malaysia Airlines | FY5325 + FY5341 | YES | KBR | JHB | 03:35 PM | 07:50 PM | 296.20 |
|
32
|
+
| Malaysia Airlines | FY5505 + FY5343 | YES | KBR | JHB | 06:25 PM | 09:30 PM | 296.20 |
|
33
|
+
| Malaysia Airlines | FY5321 + FY5331 | YES | KBR | JHB | 10:20 PM | 08:15 AM | 296.20 |
|
34
|
+
| Malindo Air | OD1241 + OD1201 | YES | KBR | JHB | 01:25 AM | 09:50 AM | 141.00 |
|
35
|
+
| Malindo Air | OD1255 + OD1201 | YES | KBR | JHB | 03:10 AM | 09:50 AM | 141.00 |
|
36
|
+
| Malindo Air | OD1243 + OD1201 | YES | KBR | JHB | 04:25 AM | 09:50 AM | 141.00 |
|
37
|
+
| Malindo Air | OD1235 + OD1201 | YES | KBR | JHB | 06:05 AM | 09:50 AM | 141.00 |
|
38
|
+
| Malindo Air | OD1245 + OD1217 | YES | KBR | JHB | 09:15 AM | 01:00 PM | 141.00 |
|
39
|
+
| Malindo Air | OD1245 + OD1213 | YES | KBR | JHB | 09:15 AM | 02:00 PM | 141.00 |
|
40
|
+
| Firefly | FY2231 | NO | KBR | JHB | 08:50 AM | 10:30 AM | 200.29 |
|
41
|
+
+-------------------+-----------------+---------+--------+-------------+----------+----------+-----------+
|
42
|
+
|
43
|
+
## Contributing
|
44
|
+
|
45
|
+
It'll help this gem stay alive, so, please do :)
|
46
|
+
|
47
|
+
## License
|
48
|
+
|
49
|
+
Teecket is released under the [MIT
|
50
|
+
License](http://www.opensource.org/licenses/MIT).
|
data/bin/teecket
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'teecket'
|
4
|
+
require 'teecket/printer'
|
4
5
|
|
5
6
|
if ARGV.count == 3
|
6
|
-
Teecket.search({ from: ARGV[0], to: ARGV[1], date: ARGV[2]})
|
7
|
+
output = Teecket.search({ from: ARGV[0], to: ARGV[1], date: ARGV[2]})
|
8
|
+
puts Printer.table(output)
|
7
9
|
else
|
8
10
|
puts 'Example: teecket KBR KUL 30-07-2015'
|
9
11
|
end
|
data/lib/teecket/air_asia.rb
CHANGED
@@ -22,6 +22,7 @@ class AirAsia < Flight
|
|
22
22
|
flight_number = rs['segments'][0]['flight-number']
|
23
23
|
origin = rs['segments'][0]['origincode']
|
24
24
|
destination = rs['segments'][0]['destinationcode']
|
25
|
+
transit = 'NO'
|
25
26
|
|
26
27
|
depart_at = depart_at.strftime('%I:%M %p')
|
27
28
|
arrive_at = arrive_at.strftime('%I:%M %p')
|
@@ -30,6 +31,7 @@ class AirAsia < Flight
|
|
30
31
|
|
31
32
|
fares << { flight_name: 'AirAsia',
|
32
33
|
flight_number: flight_number,
|
34
|
+
transit: transit,
|
33
35
|
origin: origin,
|
34
36
|
destination: destination,
|
35
37
|
depart_at: depart_at,
|
data/lib/teecket/firefly.rb
CHANGED
@@ -56,6 +56,7 @@ class Firefly < Flight
|
|
56
56
|
flight_number = doc.css('div.market1')[i].css('div.visible-xs').css('table')[0].text.strip
|
57
57
|
origin = doc.css('div.market1')[i]['onclick'].scan(/~[A-Z]{3}~/)[0].gsub('~', '')
|
58
58
|
destination = doc.css('div.market1')[i]['onclick'].scan(/~[A-Z]{3}~/)[1].gsub('~', '')
|
59
|
+
transit = 'NO'
|
59
60
|
|
60
61
|
depart_at = DateTime.parse("#{date} #{depart_at.gsub(/\t/, '').match(/^(.*?)(AM|PM)/).to_s}").strftime('%I:%M %p')
|
61
62
|
arrive_at = DateTime.parse("#{date} #{arrive_at.gsub(/\t/, '').match(/^(.*?)(AM|PM)/).to_s}").strftime('%I:%M %p')
|
@@ -64,6 +65,7 @@ class Firefly < Flight
|
|
64
65
|
|
65
66
|
fares << { flight_name: 'Firefly',
|
66
67
|
flight_number: flight_number,
|
68
|
+
transit: transit,
|
67
69
|
origin: origin,
|
68
70
|
destination: destination,
|
69
71
|
depart_at: depart_at,
|
@@ -19,24 +19,34 @@ class MalaysiaAirlines < Flight
|
|
19
19
|
|
20
20
|
if result['success']
|
21
21
|
result['outboundOptions'].each do |rs|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
22
|
+
fare = rs['fareDetails']['totalTripFare']
|
23
|
+
origin = rs['flights'][0]['departureAirport']['code']
|
24
|
+
depart_at = rs['flights'][0]['depScheduled']
|
25
|
+
|
26
|
+
if rs['flights'].count > 1
|
27
|
+
transit = 'YES'
|
28
|
+
arrive_at = rs['flights'][rs['flights'].count - 1]['arrScheduled']
|
29
|
+
flight_number = rs['flights'].map { |arr| arr['operatingAirline'] + arr['flightNumber'] }.join(' + ')
|
30
|
+
destination = rs['flights'][rs['flights'].count - 1]['arrivalAirport']['code']
|
31
|
+
else
|
32
|
+
transit = 'NO'
|
33
|
+
arrive_at = rs['flights'][0]['arrScheduled']
|
34
|
+
flight_number = rs['flights'][0]['marketingAirline'] + rs['flights'][0]['flightNumber']
|
35
|
+
destination = rs['flights'][0]['arrivalAirport']['code']
|
36
|
+
end
|
37
|
+
|
38
|
+
depart_at = DateTime.parse(depart_at).strftime('%I:%M %p')
|
39
|
+
arrive_at = DateTime.parse(arrive_at).strftime('%I:%M %p')
|
31
40
|
fare = sprintf("%.2f", fare)
|
32
41
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
42
|
+
fares << { flight_name: 'Malaysia Airlines',
|
43
|
+
flight_number: flight_number,
|
44
|
+
transit: transit,
|
45
|
+
origin: origin,
|
46
|
+
destination: destination,
|
47
|
+
depart_at: depart_at,
|
48
|
+
arrive_at: arrive_at,
|
49
|
+
fare: fare }
|
40
50
|
end
|
41
51
|
end
|
42
52
|
end
|
data/lib/teecket/malindo_air.rb
CHANGED
@@ -35,12 +35,20 @@ class MalindoAir < Flight
|
|
35
35
|
|
36
36
|
if result['SearchAirlineFlightsResult']
|
37
37
|
result['SearchAirlineFlightsResult'].each do |rs|
|
38
|
+
|
39
|
+
if rs['SegmentInformation'].count > 1
|
40
|
+
transit = 'YES'
|
41
|
+
arrive_at = rs['SegmentInformation'][rs['SegmentInformation'].count - 1]['ArrivalDate']
|
42
|
+
else
|
43
|
+
transit = 'NO'
|
44
|
+
arrive_at = rs['ArrivalDate']
|
45
|
+
end
|
46
|
+
|
38
47
|
depart_at = rs['DepartureDate']
|
39
|
-
arrive_at = rs['ArrivalDate']
|
40
48
|
fare = rs['FlightAmount']
|
41
|
-
flight_number = rs['MACode'] + rs['FlightNo']
|
42
49
|
origin = rs['DepCity']
|
43
50
|
destination = rs['ArrCity']
|
51
|
+
flight_number = rs['SegmentInformation'].map { |arr| arr['MACode'] + arr['FlightNo'] }.join(' + ')
|
44
52
|
|
45
53
|
depart_at = DateTime.strptime(depart_at.gsub(/^\/Date\(|\)\//, ''), '%Q').strftime('%I:%M %p')
|
46
54
|
arrive_at = DateTime.strptime(arrive_at.gsub(/^\/Date\(|\)\//, ''), '%Q').strftime('%I:%M %p')
|
@@ -48,6 +56,7 @@ class MalindoAir < Flight
|
|
48
56
|
|
49
57
|
fares << { flight_name: 'Malindo Air',
|
50
58
|
flight_number: flight_number,
|
59
|
+
transit: transit,
|
51
60
|
origin: origin,
|
52
61
|
destination: destination,
|
53
62
|
depart_at: depart_at,
|
data/lib/teecket/printer.rb
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
require 'terminal-table'
|
2
|
+
require 'byebug'
|
2
3
|
|
3
4
|
class Printer
|
4
5
|
def self.table(rows = [])
|
5
|
-
headings = ['Flight', 'Flight #', 'Origin', 'Destination', 'Depart', 'Arrive', 'Fare (RM)']
|
6
|
+
headings = ['Flight', 'Flight #', 'Transit', 'Origin', 'Destination', 'Depart', 'Arrive', 'Fare (RM)']
|
6
7
|
|
7
|
-
|
8
|
+
rows.each { |row| row[:fare] = row[:fare].rjust(9, ' ') }
|
8
9
|
|
9
|
-
|
10
|
+
rows.map! { |row| row.values }
|
11
|
+
|
12
|
+
Terminal::Table.new(headings: headings, rows: rows)
|
10
13
|
end
|
11
14
|
end
|
data/lib/teecket.rb
CHANGED
@@ -4,7 +4,6 @@ require 'teecket/flight'
|
|
4
4
|
require 'teecket/air_asia'
|
5
5
|
require 'teecket/malaysia_airlines'
|
6
6
|
require 'teecket/malindo_air'
|
7
|
-
require 'teecket/printer'
|
8
7
|
require 'teecket/firefly'
|
9
8
|
|
10
9
|
class Teecket
|
@@ -21,8 +20,6 @@ class Teecket
|
|
21
20
|
malindo = MalindoAir.new({ from: params[:from], to: params[:to], date: params[:date] })
|
22
21
|
malindo.get
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
puts Printer.table(output)
|
23
|
+
airasia.fares + mas.fares + malindo.fares + firefly.fares
|
27
24
|
end
|
28
25
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teecket
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amree Zaid
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: terminal-table
|
@@ -77,6 +77,7 @@ executables:
|
|
77
77
|
extensions: []
|
78
78
|
extra_rdoc_files: []
|
79
79
|
files:
|
80
|
+
- README.md
|
80
81
|
- bin/teecket
|
81
82
|
- lib/teecket.rb
|
82
83
|
- lib/teecket/air_asia.rb
|