jetblue_plane_tracker 0.2.3 → 0.2.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDVjNmYyYWQ4NTU5OGU2NDExNWU1ZmY2ZTgwNTA5NjVjM2M5YmNhNw==
4
+ ZGIwZjNmYTQ2NDVjMjlkY2U3YTZhNjU4N2JmM2UwNjE1Njg5NWQyZA==
5
5
  data.tar.gz: !binary |-
6
- MzY5Y2NkOGUxMThiOGM2NmZhOWM5OWIwNjM4M2JjNjMxYmZiMDE0Yg==
6
+ OTQ1YjM0OGE3NTBhNTJlNGJkNzVhNjFlZGI4Y2U5MDI5MDViYTliMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZjQzMTg4YWE3YzZlOTRhZWUxZGI4YzVkNjFhZDJjNTI5NGU3NzZkZGNmMmNh
10
- Njc2ZjlhOWM3ZWNlMDZmMGFmMzMwZDlhZWE5ODljM2RhZTZiMjI4MmUwYjUw
11
- OTFmN2QwYTlkMzg0NTAxNzkzMDlkMDlmZjEzMDc0M2FkMDIxMzY=
9
+ NDI1NDU1YjcwOTk2NDY2MzFiNTllNTZlNzc0Y2U2ZWYwZjVjOGFhNmIxNDUw
10
+ MTYzNzJlZGNiZmQzNWNlOTA3MWU2ZDUzYmEzMTM5MWM5MTQ1MDA1OGRjNDgx
11
+ MGMzZGU3NzUwYmUzZjZlMzZiMzVhYjJkOWRhMGE0ZmVhNDI5MDY=
12
12
  data.tar.gz: !binary |-
13
- ZTg3MDZlMzE2NTk4NjBmMjZkMmJmNzliZDZkMjM3MjU3OGEzZTc5NTFlZjgx
14
- YWI1NzM1ZDkxMTQzNmZkNTU5YzlmM2ZmYTQ1OGEwNDA4YjRlMWQwMDJmMWFl
15
- MzBiODYxOTBjYTg4MjY2MmUxOGYyNDE5YjIzMGQzZTQ5Y2E5YTE=
13
+ OTI5NjM3ZjQwYTNlMmI5NTQzZTgzNDVjYTU0ODgwYzFiOTE5NWE0ZDNlODY3
14
+ Y2ZjZjQ2NGRmMTA0NGFkMWZlYTU1MjYyYmVkZmFiNWFiNjdkYzA5MTA4MTEw
15
+ YTJhZWJmM2IyOWRmMDMwZWNmOTdmZGE0YzA2NWE2NTNlMWQxMGY=
@@ -1,14 +1,15 @@
1
1
  module JetBluePlaneTracker
2
2
  class Leg
3
- attr_accessor :number, :date, :departure, :arrival, :status, :progress
3
+ attr_accessor :number, :date, :departure, :arrival, :status, :progress, :current_location
4
4
 
5
5
  def initialize(number, date, departure, arrival, status)
6
6
  self.number = number
7
7
  self.date = date
8
8
  self.departure = departure
9
- self.arrival = arrival
9
+ self.arrival = arrival
10
10
  self.status = status
11
11
  self.progress = flight_tracker_progress
12
+ self.current_location = current_location
12
13
  end
13
14
 
14
15
  def to_s
@@ -22,28 +23,50 @@ module JetBluePlaneTracker
22
23
  "departure" => self.departure.to_json,
23
24
  "arrival" => self.arrival.to_json,
24
25
  "status" => self.status,
25
- "progress" => self.progress
26
+ "progress" => self.progress,
27
+ "current_location" => current_location
26
28
  }.to_json
27
29
  end
28
30
 
29
31
  def flight_tracker_progress
30
32
  min_progress = 0
31
33
  max_progress = 1
32
- progress = 0
33
-
34
- current_datetime = Time.now.to_i
35
- actual_arrival = Time.parse(self.arrival.actual_takeoff).to_i
36
- actual_departure = Time.parse(self.departure.actual_takeoff).to_i
37
-
38
- progress = (current_datetime - actual_departure).to_f / (actual_arrival- actual_departure).to_f
39
-
40
- progress = progress < min_progress ? min_progress : progress
34
+ progress = 0
35
+ # Arrival airport timezone (UTC)
36
+ utc = self.arrival.airport.timezone
37
+ # Convert dates to the actual arrival airport timezone
38
+ current_datetime = DateTime.now.change(:offset => utc.to_s).to_i
39
+
40
+ actual_arrival = self.arrival.actual_takeoff.change(:offset => utc.to_s).to_i
41
+
42
+ actual_departure = self.departure.actual_takeoff.change(:offset => utc.to_s).to_i
43
+
44
+ progress = (current_datetime - actual_departure).to_f / (actual_arrival - actual_departure).to_f
41
45
 
42
- progress = progress > max_progress ? max_progress : progress
46
+ # Check if progress is minor than min progress or max progress
47
+ progress = (progress < min_progress) ? min_progress : progress
48
+ progress = (progress > max_progress) ? max_progress : progress
43
49
 
44
50
  progress * 100
45
51
  end
46
52
 
53
+ # To be tested in different coordinates
54
+ def current_location
55
+ departude_longitude = self.departure.airport.longitude.to_f
56
+ arrival_longitude = self.arrival.airport.longitude.to_f
57
+ current_progress = self.progress / 100
58
+
59
+ current_latitude = self.arrival.airport.latitude
60
+ current_longitude = get_plane_longitude(departude_longitude, arrival_longitude, current_progress)
61
+
62
+ {latitude: current_latitude, longitude: current_longitude}
63
+ end
64
+
65
+ private
66
+ def get_plane_longitude(departurelng, arrivallng, progress)
67
+ (progress > 0) ? ((arrivallng + ((1-progress)*arrivallng)) - progress) : departurelng
68
+ end
69
+
47
70
  end
48
71
 
49
72
  end
@@ -5,8 +5,8 @@ module JetBluePlaneTracker
5
5
  def initialize(airport, scheduled_takeoff, actual_takeoff, terminal, gate, temperature)
6
6
  super()
7
7
  self.airport = Airport.find(iata: Airport.parse_airport_iata(airport))
8
- self.scheduled_takeoff = scheduled_takeoff
9
- self.actual_takeoff = actual_takeoff
8
+ self.scheduled_takeoff = DateTime.parse(scheduled_takeoff)
9
+ self.actual_takeoff = DateTime.parse(actual_takeoff)
10
10
  self.terminal = terminal
11
11
  self.gate = gate
12
12
  self.temperature = temperature
@@ -1,3 +1,3 @@
1
1
  module JetBluePlaneTracker
2
- VERSION = '0.2.3'
2
+ VERSION = '0.2.4.1'
3
3
  end
@@ -1,9 +1,10 @@
1
1
  require 'json'
2
2
  require 'httparty'
3
+ require 'active_support/time'
3
4
  require File.expand_path('../jetblue_plane_tracker/airport', __FILE__)
4
5
  require File.expand_path('../jetblue_plane_tracker/flight', __FILE__)
5
6
  require File.expand_path('../jetblue_plane_tracker/leg', __FILE__)
6
7
  require File.expand_path('../jetblue_plane_tracker/travel', __FILE__)
7
8
  require File.expand_path('../jetblue_plane_tracker/departure', __FILE__)
8
9
  require File.expand_path('../jetblue_plane_tracker/arrival', __FILE__)
9
- require File.expand_path('../jetblue_plane_tracker/tracker', __FILE__)
10
+ require File.expand_path('../jetblue_plane_tracker/tracker', __FILE__)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jetblue_plane_tracker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Díaz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-04 00:00:00.000000000 Z
11
+ date: 2015-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: A Ruby wrapper for JetBlue flights status API
42
56
  email: brian@briandiaz.me
43
57
  executables: []