Sha256: 6dc8f494946c64acb5ef8446813c94f9bed08d3d480266ce46f6c5efdd9f6a46
Contents?: true
Size: 1.3 KB
Versions: 6
Compression:
Stored size: 1.3 KB
Contents
# encoding: UTF-8 require 'open-uri' module Spontaneous::Field class Location < String def outputs [:html, :lat, :lng] end def generate_outputs(input, site) values = {} values[:html] = escape_html(input) values.update(geolocate(input)) values end def geolocate(address) return {} if address.blank? url = "http://maps.google.com/maps/api/geocode/json?address=#{URI.escape(address)}&sensor=false" response = open(url).read rescue "{}" data = Spontaneous.parse_json(response) rescue {} return {} unless data[:results] values = {} result = data[:results].first values[:formatted_address] = result[:formatted_address] geometry = result[:geometry] values[:lat] = geometry[:location][:lat] values[:lng] = geometry[:location][:lng] country = (result[:address_components].detect { |c| c[:types].first == "country" } || {})[:long_name] values[:country] = country values end def latitude value(:lat) end def longitude value(:lng) end def country value(:country) end def formatted_address value(:formatted_address) end alias_method :lat, :latitude alias_method :lng, :longitude self.register end # LongStringField end
Version data entries
6 entries across 6 versions & 1 rubygems