Class: Slurpy

Inherits:
Thor
  • Object
show all
Defined in:
lib/slurpy/slurpy.rb

Constant Summary collapse

DEFAULTS_FILE =
"#{Dir.home}/.slurpy"
CACHE_FOLDER =
'/tmp/slurpy/cache'
BASE_URL =
'http://www.slushuttle.com/Services/JSONPRelay.svc/'
RESOURCES =
{
  times: 'GetScheduleFutureStopTimes?TimesPerStopString=2',
  stops: 'GetStops',
  routes: 'GetRoutes'
}

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Slurpy

Returns a new instance of Slurpy.



25
26
27
28
# File 'lib/slurpy/slurpy.rb', line 25

def initialize *args
  super
  APICache.store = Moneta.new(:File, dir: CACHE_FOLDER)
end

Instance Method Details

#next(origin = defaults['origin'], destination = defaults['destination']) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/slurpy/slurpy.rb', line 33

def next(origin = defaults['origin'], destination = defaults['destination'])

  origin, destination = destination, origin if options[:return]

  to_origin_shuttles, origin_name = Slurpy.shuttles_for_stop origin
  to_destination_shuttles, destination_name = Slurpy.shuttles_for_stop destination

  puts "Searching routes from '#{origin_name}' to '#{destination_name}'..."

  Slurpy.error 'Do you really want to go in circles?' if origin_name == destination_name

  origin_to_destination_shuttles = 
    to_origin_shuttles
      .select do |route_id, time|
        to_destination_shuttles[route_id] &&
          to_origin_shuttles[route_id] < to_destination_shuttles[route_id]
      end

  Slurpy.error "No shuttles from '#{origin_name}' to '#{destination_name}', sorry. " \
               "See http://www.slushuttle.com/ for more details." \
                 if origin_to_destination_shuttles.empty?

  origin_to_destination_shuttles.each do |route_id, time|
    puts "#{Slurpy.get_route_by_id(route_id)['Description']} " \
         "- Departure: #{to_origin_shuttles[route_id]} " \
         "Arrival: #{to_destination_shuttles[route_id]}"
  end
end