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