class TokyoMetro::App::Renderer::RealTimeInfos::EachRailwayLine
Constants
- TRAIN_OPERATION_STATUS_FOR_TEST
Attributes
railway_line[R]
train_location_infos[R]
train_operation_info[R]
Public Class Methods
new( request , railway_line , http_client , test_mode )
click to toggle source
Calls superclass method
# File lib/tokyo_metro/app/renderer/real_time_infos/each_railway_line.rb, line 5 def initialize( request , railway_line , http_client , test_mode ) super( request ) @railway_line = railway_line get_train_operation_info( http_client , test_mode ) get_train_location_infos( http_client , test_mode ) set_max_delay end
Public Instance Methods
render_train_location_infos()
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos/each_railway_line.rb, line 21 def render_train_location_infos if @train_location_infos.present? @train_location_infos.decorate( request , @railway_line ).render end end
render_train_operation_info( controller )
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos/each_railway_line.rb, line 17 def render_train_operation_info( controller ) @train_operation_info.decorate( request , @railway_line , @max_delay , controller , no_train? ).render end
update_train_operation_text_in_db()
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos/each_railway_line.rb, line 27 def update_train_operation_text_in_db if @train_operation_info.instance_of?( ::TokyoMetro::Api::TrainOperation::Info ) @train_operation_info.update_train_operation_text_in_db end end
Private Instance Methods
get_train_location_infos( http_client , test_mode )
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos/each_railway_line.rb, line 60 def get_train_location_infos( http_client , test_mode ) case test_mode when nil begin @train_location_infos = ::TokyoMetro::Api::TrainLocation.get( http_client , @railway_line.same_as , parse_json: true , generate_instance: true ) rescue ::SocketError @train_operation_info = ::TokyoMetro::Api::TrainOperation::Info::NetworkError.instance @train_location_infos = nil rescue ::JSON::ParserError @train_operation_info = ::TokyoMetro::Api::TrainOperation::Info::JsonParserError.instance @train_location_infos = nil ensure sleep( 0.2 ) end when :network_error , :json_parser_error @train_location_infos = nil else raise end end
get_train_operation_info( http_client , test_mode )
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos/each_railway_line.rb, line 35 def get_train_operation_info( http_client , test_mode ) case test_mode when nil begin train_operation_infos = ::TokyoMetro::Api::TrainOperation.get( http_client , railway_line: @railway_line.same_as , parse_json: true , generate_instance: true ) if train_operation_infos.length > 1 raise "Error" end @train_operation_info = train_operation_infos.first rescue ::SocketError @train_operation_info = ::TokyoMetro::Api::TrainOperation::Info::NetworkError.instance rescue ::JSON::ParserError @train_operation_info = ::TokyoMetro::Api::TrainOperation::Info::JsonParserError.instance ensure sleep( 0.2 ) end when :network_error @train_operation_info = ::TokyoMetro::Api::TrainOperation::Info::NetworkError.instance when :json_parser_error @train_operation_info = ::TokyoMetro::Api::TrainOperation::Info::JsonParserError.instance else raise end end
no_train?()
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos/each_railway_line.rb, line 85 def no_train? @train_location_infos.blank? end
set_max_delay()
click to toggle source
# File lib/tokyo_metro/app/renderer/real_time_infos/each_railway_line.rb, line 81 def set_max_delay @max_delay = @train_location_infos.try( :max_delay ) end