class NetworkRail::Message::TrainMovement::Movement

Attributes

operator[RW]
planned_time[RW]
time[RW]

Public Class Methods

factory(json_message) click to toggle source
# File lib/network_rail/message/train_movement/movement.rb, line 14
def self.factory(json_message)
  event_type = json_message['body']['event_type']
  target_class = event_type == 'ARRIVAL' ? Arrival : Departure
  target_class.new(json_message)
end
new(json_message) click to toggle source
# File lib/network_rail/message/train_movement/movement.rb, line 20
def initialize(json_message)
  super
  self.time = Time.at (json_message['body']['actual_timestamp'].to_i / 1000).to_i
  self.planned_time = Time.at (json_message['body']['planned_timestamp'].to_i / 1000).to_i
  self.operator = NetworkRail::Operators.numeric_codes.find {|key, value| value == json_message['body']['toc_id'].to_i }.first
end

Public Instance Methods

delay() click to toggle source
# File lib/network_rail/message/train_movement/movement.rb, line 31
def delay
  (time - planned_time).round
end
on_time?() click to toggle source
# File lib/network_rail/message/train_movement/movement.rb, line 27
def on_time?
  delay <= NetworkRail.late_threshold
end