Permalink
Browse files

Todo funcionando, primera etapa de adición de tests

  • Loading branch information...
1 parent a51be29 commit 05da59901fc61bbd227ed3a706af7fda33c640f2 Bruno Bonamin committed Apr 22, 2012
Showing with 124 additions and 1 deletion.
  1. +2 −0 .rspec
  2. +50 −0 LICENSE
  3. +37 −0 README.md
  4. +1 −0 colectivero.gemspec
  5. +9 −1 lib/colectivero/arrival.rb
  6. +12 −0 spec/colectivero/bus_spec.rb
  7. +13 −0 spec/spec_helper.rb
View
@@ -0,0 +1,2 @@
+--color
+--format progress
View
@@ -0,0 +1,50 @@
+Copyright (c) 2012 Bruno Bonamin
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the
+Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions of
+the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+----------------------------------------------------------
+
+TRADUCCIÓN NO OFICIAL NI AUTORIZADA PARA SU USO COMO LICENCIA LEGAL
+Copyright (c) 2012 Bruno Bonamin
+
+Se autoriza por la presente, de forma gratuita, a cualquier
+persona que haya obtenido una copia de este software y
+archivos asociados de documentación (el "Software"), para tratar en el
+Software sin restricción, incluyendo sin ninguna limitación en lo que concierne
+los derechos para usar, copiar, modificar, fusionar, publicar,
+distribuir, sublicenciar, y / o vender copias de este
+Software, y para permitir a las personas a las que se les proporcione el Software para
+hacer lo mismo, sujeto a las siguientes condiciones:
+
+El aviso de copyright anterior y este aviso de permiso
+tendrá que ser incluido en todas las copias o partes sustanciales de
+este Software.
+
+EL SOFTWARE SE ENTREGA "TAL CUAL", SIN GARANTÍA DE NINGÚN
+TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO SIN LIMITARSE A GARANTÍAS DE
+MERCANTIBILIDAD, CAPACIDAD DE HACER Y DE NO INFRACCIÓN DE COPYRIGHT. EN NINGÚN
+CASO LOS AUTORES O TITULARES DEL COPYRIGHT SERÁN RESPONSABLES DE
+NINGUNA RECLAMACIÓN, DAÑOS U OTRAS RESPONSABILIDADES,
+YA SEA EN UN LITIGIO, AGRAVIO O DE OTRO MODO,
+DERIVADAS DE, OCASIONADAS POR CULPA DE O EN CONEXION CON EL
+SOFTWARE O SU USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.
View
@@ -0,0 +1,37 @@
+#Colectivero
+
+Esta es una API no oficial para consultar el sistema de horarios de llegada de colectivos en la ciudad de Rosario, Argentina; del Ente de Transporte de Rosario.
+
+Incluyo un par de ejemplos que detallan su uso.
+
+##Instalación
+
+La instalación es muy simple:
+ gem install colectivero
+
+Y hacer un require:
+ require 'colectivero'
+
+##Uso
+Para conocer la lista de todos los colectivos disponibles:
+ Colectivero::Bus.list_all
+
+Seleccionando algún elemento de la lista, se puede instanciar un colectivo para poder conocer sus calles e intersecciones para obtener un número de parada:
+ bus = Colectivero::Bus.new('153')
+ bus.streets
+
+ calle = bus.streets[5]
+ intersec = bus.intersections(calle).first
+
+ parada = Colectivero::BusStop.new(bus, calle, intersec)
+
+Y finalmente, para consultar la llegada:
+ llegada = Colectivero::Arrival.new bus, parada
+ llegada.message # => "Linea 153R: 16min. 7434mts"
+
+Alternativamente, también se puede consultar la llegada mandando la parada como un entero o un string:
+ llegada = Colectivero::Arrival.new bus, '4186'
+ llegada = Colectivero::Arrival.new bus, 4186
+
+##Licencia
+Ver el archivo LICENSE para detalles.
View
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
s.add_dependency('mechanize', '>= 1.0.0')
s.add_dependency('json', '>= 1.6.6')
+ s.add_development_dependency 'rspec', '~> 2.9'
s.rubyforge_project = "colectivero"
s.files = `git ls-files`.split("\n")
@@ -4,11 +4,19 @@
module Colectivero
class Arrival
attr_reader :query_date_time, :message
+
def initialize(bus, bus_stop)
+ if bus_stop.is_a? Colectivero::BusStop
+ bus_stop_number = bus_stop.number
+ else
+ bus_stop_number = bus_stop.to_s
+ end
+
agent = Mechanize.new
- agent.post("http://www.etr.gov.ar/getSmsResponse.php", {"parada" => "#{bus_stop.number}", "linea"=>"#{bus.value}"})
+ agent.post("http://www.etr.gov.ar/getSmsResponse.php", {"parada" => "#{bus_stop_number}", "linea"=>"#{bus.value}"})
@message = agent.page.content
@query_date_time = Time.now
+
end
end
end
@@ -0,0 +1,12 @@
+require 'spec_helper'
+
+describe Bus do
+ before(:each) do
+ binding.pry
+ @bus = Colectivero::Bus.new('110')
+ end
+
+ it 'should be valid' do
+ @bus.should be_valid
+ end
+end
View
@@ -0,0 +1,13 @@
+# This file was generated by the `rspec --init` command. Conventionally, all
+# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
+# Require this file using `require "spec_helper.rb"` to ensure that it is only
+# loaded once.
+#
+# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
+Dir["../colectivero/lib/*.rb"].each {|file| require file }
+
+RSpec.configure do |config|
+ config.treat_symbols_as_metadata_keys_with_true_values = true
+ config.run_all_when_everything_filtered = true
+ config.filter_run :focus
+end

0 comments on commit 05da599

Please sign in to comment.