From 77c623b28ec2bd4e4f99bb453ddd69ab1387f394 Mon Sep 17 00:00:00 2001 From: "Umar M. Sheikh" Date: Tue, 14 Jan 2014 14:48:48 +0500 Subject: [PATCH] use typhoeus instead of patron --- Gemfile | 1 - Gemfile.lock | 2 -- app/models/agents/public_transport_agent.rb | 29 ++++++++++++--------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/Gemfile b/Gemfile index e5b71b67..0c482510 100644 --- a/Gemfile +++ b/Gemfile @@ -4,7 +4,6 @@ gem 'rails' gem 'rake' gem 'mysql2' gem 'devise' -gem "patron" gem 'kaminari' gem 'bootstrap-kaminari-views' gem "rufus-scheduler", :require => false diff --git a/Gemfile.lock b/Gemfile.lock index 62c38121..bf373842 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -138,7 +138,6 @@ GEM multi_xml (~> 0.5) rack (~> 1.2) orm_adapter (0.4.0) - patron (0.4.18) polyglot (0.3.3) pry (0.9.12.2) coderay (~> 1.0.5) @@ -281,7 +280,6 @@ DEPENDENCIES kramdown mysql2 nokogiri - patron pry rails rake diff --git a/app/models/agents/public_transport_agent.rb b/app/models/agents/public_transport_agent.rb index 001522a9..92946b6c 100644 --- a/app/models/agents/public_transport_agent.rb +++ b/app/models/agents/public_transport_agent.rb @@ -64,21 +64,26 @@ module Agents options["stops"].collect{|a| a.split("|").last} end def check - page = session.get(check_url) - page = Nokogiri::XML page.body - predictions = page.css("//prediction") - predictions.each do |pr| - parent = pr.parent.parent - vals = {routeTitle: parent["routeTitle"], stopTag: parent["stopTag"]} - if pr["minutes"] && pr["minutes"].to_i < options["alert_window_in_minutes"].to_i - vals = vals.merge Hash.from_xml(pr.to_xml) - if not_already_in_memory?(vals) - create_event(:payload => vals) - add_to_memory(vals) - else + hydra = Typhoeus::Hydra.new + request = Typhoeus::Request.new(check_url, :followlocation => true) + request.on_success do |response| + page = Nokogiri::XML response.body + predictions = page.css("//prediction") + predictions.each do |pr| + parent = pr.parent.parent + vals = {routeTitle: parent["routeTitle"], stopTag: parent["stopTag"]} + if pr["minutes"] && pr["minutes"].to_i < options["alert_window_in_minutes"].to_i + vals = vals.merge Hash.from_xml(pr.to_xml) + if not_already_in_memory?(vals) + create_event(:payload => vals) + add_to_memory(vals) + else + end end end end + hydra.queue request + hydra.run end def add_to_memory(vals) self.memory["existing_routes"] ||= []