class Velov::StationList
A Velo'v station list
Public Class Methods
fetch(params = {})
click to toggle source
Fetch data of all stations
# File lib/velov/station_list.rb, line 9 def self.fetch(params = {}) response = API.get(params) build_list(response.body) end
from_json(json)
click to toggle source
# File lib/velov/station_list.rb, line 15 def self.from_json(json) build_list(JSON.parse(json)) end
Private Class Methods
build_list(data)
click to toggle source
# File lib/velov/station_list.rb, line 19 def self.build_list(data) station_list = StationList.new data['values'].each do |station_params| station_list.add_station(station_params) end station_list end
Public Instance Methods
add_station(params)
click to toggle source
# File lib/velov/station_list.rb, line 30 def add_station(params) @list << Station.new(params) end
available_bike_stands()
click to toggle source
# File lib/velov/station_list.rb, line 52 def available_bike_stands @list.map(&:available_bike_stands).inject(:+) end
available_bikes()
click to toggle source
# File lib/velov/station_list.rb, line 56 def available_bikes @list.map(&:available_bikes).inject(:+) end
bike_stands()
click to toggle source
# File lib/velov/station_list.rb, line 48 def bike_stands @list.map(&:bike_stands).inject(:+) end
nearest(lat, lng)
click to toggle source
# File lib/velov/station_list.rb, line 42 def nearest(lat, lng) @list.sort_by do |station| station.distance_to(lat, lng) end end
size()
click to toggle source
# File lib/velov/station_list.rb, line 34 def size @list.size end
to_a()
click to toggle source
# File lib/velov/station_list.rb, line 38 def to_a @list end
walking_distance(start, arrival)
click to toggle source
# File lib/velov/station_list.rb, line 60 def walking_distance(start, arrival) start_station = nearest(start.first, start.last).find do |station| station.status == 'OPEN' && station.available_bikes > 0 end arrival_station = nearest(arrival.first, arrival.last).find do |station| station.status == 'OPEN' && station.available_bike_stands > 0 end start_station.distance_to(start.first, start.last) + arrival_station.distance_to(arrival.first, arrival.last) end