class DistanceFinder::Calculator
Attributes
display_full_response[R]
distance[R]
duration[R]
end_address[R]
start_address[R]
status[RW]
Public Class Methods
new(origin, destination, mode = "driving", units = "imperial")
click to toggle source
# File lib/distance_finder/calculator.rb, line 7 def initialize(origin, destination, mode = "driving", units = "imperial") @origin = origin.strip() @destination = destination.strip() @mode = "mode=" + mode @units = "units=" + units @google_object = parse_response end
Public Instance Methods
build_url()
click to toggle source
# File lib/distance_finder/calculator.rb, line 69 def build_url "https://maps.googleapis.com/maps/api/directions/json?origin=#{convert_input(@origin)}&destination=#{convert_input(@destination)}&#{@units}&#{@mode}" end
convert_input(string)
click to toggle source
Converts non english characters into english equivalents Replaces spaces with “+”
# File lib/distance_finder/calculator.rb, line 75 def convert_input(string) ActiveSupport::Inflector.transliterate(string).strip().tr(" ", "+") end
full_response()
click to toggle source
Generate pretty JSON for command line output
# File lib/distance_finder/calculator.rb, line 44 def full_response puts JSON.pretty_generate(@google_object) end
get_response()
click to toggle source
Checks for internet connection and gets response from Google API
# File lib/distance_finder/calculator.rb, line 60 def get_response begin TCPSocket.new 'google.com', 80 Net::HTTP.get_response(URI(build_url)) rescue SocketError return false end end
parse_response()
click to toggle source
# File lib/distance_finder/calculator.rb, line 49 def parse_response if get_response.kind_of? Net::HTTPSuccess JSON.parse(get_response.body) elsif !get_response JSON.parse('{"status" : "No internet connection!"}') else JSON.parse('{"status" : "Google API unaviable!"}') end end