From cd3a7d9919c2fa5899a42693ab39554893214a43 Mon Sep 17 00:00:00 2001 From: Silvano Cerza Date: Mon, 24 Nov 2025 16:18:49 +0100 Subject: [PATCH 1/2] Bump IPinfo dependency to 2.4 --- ipinfo-rails.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipinfo-rails.gemspec b/ipinfo-rails.gemspec index f74f927..6d6d36e 100644 --- a/ipinfo-rails.gemspec +++ b/ipinfo-rails.gemspec @@ -21,7 +21,7 @@ Gem::Specification.new do |s| s.homepage = 'https://ipinfo.io' s.license = 'Apache-2.0' - s.add_dependency 'IPinfo', '~> 2.3' + s.add_dependency 'IPinfo', '~> 2.4' s.add_dependency 'rack', '~> 2.0' s.add_development_dependency 'mocha', '~> 2.7' From 3ce8c81bf9714638d70ec1e801eaa9db8974abfd Mon Sep 17 00:00:00 2001 From: Silvano Cerza Date: Mon, 24 Nov 2025 16:22:22 +0100 Subject: [PATCH 2/2] Add support for Core bundle --- lib/ipinfo-rails.rb | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/lib/ipinfo-rails.rb b/lib/ipinfo-rails.rb index ecb5cbd..1b2e0e6 100644 --- a/lib/ipinfo-rails.rb +++ b/lib/ipinfo-rails.rb @@ -3,6 +3,7 @@ require 'rack' require 'ipinfo' require 'ipinfo_lite' +require 'ipinfo_core' require 'ipinfo-rails/ip_selector/default_ip_selector' def is_bot(request) @@ -73,3 +74,33 @@ def call(env) @app.call(env) end end + +class IPinfoCoreMiddleware + def initialize(app, options = {}) + @app = app + @token = options.fetch(:token, nil) + @ipinfo = IPinfoCore.create(@token, options) + @filter = options.fetch(:filter, nil) + @ip_selector = options.fetch(:ip_selector, DefaultIPSelector) + end + + def call(env) + env['called'] = 'yes' + request = Rack::Request.new(env) + ip_selector = @ip_selector.new(request) + filtered = if @filter.nil? + is_bot(request) + else + @filter.call(request) + end + + if filtered + env['ipinfo'] = nil + else + ip = ip_selector.get_ip + env['ipinfo'] = @ipinfo.details(ip) + end + + @app.call(env) + end +end