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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 50df0ea7655efd26ed2cd62cf05baa414cd08808
4
- data.tar.gz: f4bb77471eed59fce72a465e69ca5a71ab4f8c69
3
+ metadata.gz: 9ee540199c264f86ba6312ae82849a00defce72f
4
+ data.tar.gz: 3da57bfbdd0164679278815b5fc37f2b4c8e803a
5
5
  SHA512:
6
- metadata.gz: 2f3dfd04a23f954cbbda673973a5648160247570b18198fd4e72a919a8b141e0bd4d60c3f8893e82dc1d0d6df2c5cc3a21ee04b005c4edf3deae591791e016ff
7
- data.tar.gz: 597c9ab624cd3ce94fa3f848a70ea48f0e76f330c23258dca0babf1883eee7d9f6919a6d6c7d64a603231aa8f209e60d57f6ae37b922aefe2b911aa7662814b2
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
@@ -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,
@@ -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
- depart_at = DateTime.parse(rs['flights'][0]['depScheduled'])
23
- arrive_at = DateTime.parse(rs['flights'][0]['arrScheduled'])
24
- fare = rs['fareDetails']['totalTripFare']
25
- flight_number = rs['flights'][0]['marketingAirline'] + rs['flights'][0]['flightNumber']
26
- origin = rs['flights'][0]['departureAirport']['code']
27
- destination = rs['flights'][0]['arrivalAirport']['code']
28
-
29
- depart_at = depart_at.strftime('%I:%M %p')
30
- arrive_at = arrive_at.strftime('%I:%M %p')
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
- fares << { flight_name: 'Malaysia Airlines',
34
- flight_number: flight_number,
35
- origin: origin,
36
- destination: destination,
37
- depart_at: depart_at,
38
- arrive_at: arrive_at,
39
- fare: fare }
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
@@ -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,
@@ -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
- new_rows = rows.map { |row| row.values }
8
+ rows.each { |row| row[:fare] = row[:fare].rjust(9, ' ') }
8
9
 
9
- Terminal::Table.new(headings: headings, rows: new_rows)
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
- output = airasia.fares + mas.fares + malindo.fares + firefly.fares
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
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-09 00:00:00.000000000 Z
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