teecket 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|