diff --git a/lib/geocoder.rb b/lib/geocoder.rb index 2030b787e880812dcc5bb8e414cd6322449f0540..b9e9c70458714fd6bc36573a2fc5aac1e89f2f46 100644 --- a/lib/geocoder.rb +++ b/lib/geocoder.rb @@ -1,6 +1,7 @@ require "geocoder/configuration" require "geocoder/calculations" require "geocoder/railtie" +require "geocoder/request" module Geocoder extend self diff --git a/lib/geocoder/request.rb b/lib/geocoder/request.rb new file mode 100644 index 0000000000000000000000000000000000000000..e2b1a9c8db28c09083bc41cdbaadd870ef98aae9 --- /dev/null +++ b/lib/geocoder/request.rb @@ -0,0 +1,20 @@ +require 'geocoder' +require 'geocoder/results/freegeoip' + +module Geocoder + module Request + + def location + if ip.nil? or ip == "0.0.0.0" or ip.match /^127/ # don't look up loopback + # but return a Geocoder::Result for consistency + Geocoder::Result::Freegeoip.new("ip" => ip) + else + Geocoder.search(ip).first + end + end + end +end + +if defined?(Rack) and defined?(Rack::Request) + Rack::Request.send :include, Geocoder::Request +end