From 2d44d602a8c538d6be1a43c594ae17bf084d2d2f Mon Sep 17 00:00:00 2001 From: Alex Reisner <alex@alexreisner.com> Date: Sat, 5 Mar 2011 14:08:55 -0500 Subject: [PATCH] Add Rack::Request#location method. --- lib/geocoder.rb | 1 + lib/geocoder/request.rb | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 lib/geocoder/request.rb diff --git a/lib/geocoder.rb b/lib/geocoder.rb index 2030b787..b9e9c704 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 00000000..e2b1a9c8 --- /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 -- GitLab