Class: CTA::TrainTracker::Parser
- Inherits:
-
Faraday::Response::Middleware
- Object
- Faraday::Response::Middleware
- CTA::TrainTracker::Parser
- Defined in:
- lib/cta_redux/faraday_middleware/train_tracker_parser.rb
Instance Method Summary collapse
- #call(request_env) ⇒ Object
- #has_errors?(parsed_body) ⇒ Boolean
-
#initialize(app, debug) ⇒ Parser
constructor
A new instance of Parser.
Constructor Details
#initialize(app, debug) ⇒ Parser
Returns a new instance of Parser.
4 5 6 7 |
# File 'lib/cta_redux/faraday_middleware/train_tracker_parser.rb', line 4 def initialize(app, debug) @debug = debug super(app) end |
Instance Method Details
#call(request_env) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/cta_redux/faraday_middleware/train_tracker_parser.rb', line 9 def call(request_env) api_response = nil @app.call(request_env).on_complete do |response_env| parsed_body = ::MultiXml.parse(response_env.body) if has_errors?(parsed_body) api_response = CTA::API::Response.new(parsed_body, response_env.body, @debug) else case response_env.url.to_s when /ttarrivals\.aspx/ api_response = ArrivalsResponse.new(parsed_body, response_env.body, @debug) when /ttfollow\.aspx/ api_response = FollowResponse.new(parsed_body, response_env.body, @debug) when /ttpositions\.aspx/ api_response = PositionsResponse.new(parsed_body, response_env.body, @debug) end end end api_response end |
#has_errors?(parsed_body) ⇒ Boolean
32 33 34 |
# File 'lib/cta_redux/faraday_middleware/train_tracker_parser.rb', line 32 def has_errors?(parsed_body) parsed_body["ctatt"]["errCd"] != "0" end |