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 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