ipinfo-rails 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 48b6909038d2fd6aeba7e2ab4003e03488696606e4595e89c7b7984435ff4269
4
- data.tar.gz: 35858d6386399aa7f553456d188006f1553ef1fad571aee3d590739bcca75090
3
+ metadata.gz: 7c61ceb239c2e2253d2a2bf51dca8ef998cefbd974a4ecc9e30845ff4b6e00ba
4
+ data.tar.gz: 44b82b211f9e4a25bbef9ed8e3ee62066773539d5f0030d57585aba3acb6a5b3
5
5
  SHA512:
6
- metadata.gz: 915e1bae34ebbbb5b52139bd4141e7b06b68578fcc6b03d9e71e40620c172b28b99e20f6f8713a5e40ef23e951483e67150e05cf0f298e18297812f9ac595ba9
7
- data.tar.gz: 66e90173dc81ff9eee5d3a4022e40d87881a5e099699f7b24d187020d7f64f0175491259dd8e75436699be4a0c4a78ca1cbd851cb461f2545d036ae8b30899d8
6
+ metadata.gz: 429e3ef5365e9352d5f975357e329c78ec787df5810d90f812b22031bd0ae5f3738ae842ed759d61f2e031a3b404c1d8e4509b5ab39af78696fbec97c1bd0226
7
+ data.tar.gz: fc341a7dc64b6594186665fc0bcb483f6dfcab254f849dc9e9d1aff686619362ca23c2253b23b9dd765d77f5bcd6c019f786ad58371e0821744351c13343036b
@@ -0,0 +1,37 @@
1
+ name: Release package to rubygems.org
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+
12
+ permissions:
13
+ id-token: write
14
+
15
+ steps:
16
+ - name: Checkout
17
+ uses: actions/checkout@v3
18
+
19
+ - name: Install apt dependencies
20
+ run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev # needed by faraday-patron gem
21
+
22
+ - name: Set up Ruby
23
+ uses: ruby/setup-ruby@v1
24
+
25
+ - name: Install dependencies
26
+ run: bundle install
27
+
28
+ - name: Run tests
29
+ run: bundle exec rake
30
+ env:
31
+ IPINFO_TOKEN: ${{ secrets.IPINFO_TOKEN }}
32
+
33
+ - name: Build
34
+ run: gem build *.gemspec
35
+
36
+ - name: Publish
37
+ uses: rubygems/release-gem@v1
data/ipinfo-rails.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.homepage = 'https://ipinfo.io'
22
22
  s.license = 'Apache-2.0'
23
23
 
24
- s.add_dependency 'IPinfo', '~> 2.3'
24
+ s.add_dependency 'IPinfo', '~> 2.4'
25
25
  s.add_dependency 'rack', '~> 2.0'
26
26
 
27
27
  s.add_development_dependency 'mocha', '~> 2.7'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IPinfoRails
4
- VERSION = '1.1.0'
4
+ VERSION = '1.2.0'
5
5
  end
data/lib/ipinfo-rails.rb CHANGED
@@ -3,6 +3,8 @@
3
3
  require 'rack'
4
4
  require 'ipinfo'
5
5
  require 'ipinfo_lite'
6
+ require 'ipinfo_core'
7
+ require 'ipinfo_plus'
6
8
  require 'ipinfo-rails/ip_selector/default_ip_selector'
7
9
 
8
10
  def is_bot(request)
@@ -73,3 +75,63 @@ class IPinfoLiteMiddleware
73
75
  @app.call(env)
74
76
  end
75
77
  end
78
+
79
+ class IPinfoCoreMiddleware
80
+ def initialize(app, options = {})
81
+ @app = app
82
+ @token = options.fetch(:token, nil)
83
+ @ipinfo = IPinfoCore.create(@token, options)
84
+ @filter = options.fetch(:filter, nil)
85
+ @ip_selector = options.fetch(:ip_selector, DefaultIPSelector)
86
+ end
87
+
88
+ def call(env)
89
+ env['called'] = 'yes'
90
+ request = Rack::Request.new(env)
91
+ ip_selector = @ip_selector.new(request)
92
+ filtered = if @filter.nil?
93
+ is_bot(request)
94
+ else
95
+ @filter.call(request)
96
+ end
97
+
98
+ if filtered
99
+ env['ipinfo'] = nil
100
+ else
101
+ ip = ip_selector.get_ip
102
+ env['ipinfo'] = @ipinfo.details(ip)
103
+ end
104
+
105
+ @app.call(env)
106
+ end
107
+ end
108
+
109
+ class IPinfoPlusMiddleware
110
+ def initialize(app, options = {})
111
+ @app = app
112
+ @token = options.fetch(:token, nil)
113
+ @ipinfo = IPinfoPlus.create(@token, options)
114
+ @filter = options.fetch(:filter, nil)
115
+ @ip_selector = options.fetch(:ip_selector, DefaultIPSelector)
116
+ end
117
+
118
+ def call(env)
119
+ env['called'] = 'yes'
120
+ request = Rack::Request.new(env)
121
+ ip_selector = @ip_selector.new(request)
122
+ filtered = if @filter.nil?
123
+ is_bot(request)
124
+ else
125
+ @filter.call(request)
126
+ end
127
+
128
+ if filtered
129
+ env['ipinfo'] = nil
130
+ else
131
+ ip = ip_selector.get_ip
132
+ env['ipinfo'] = @ipinfo.details(ip)
133
+ end
134
+
135
+ @app.call(env)
136
+ end
137
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ipinfo-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - IPinfo releases
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-09-10 00:00:00.000000000 Z
11
+ date: 2025-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: IPinfo
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.3'
19
+ version: '2.4'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.3'
26
+ version: '2.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rack
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -62,6 +62,7 @@ executables: []
62
62
  extensions: []
63
63
  extra_rdoc_files: []
64
64
  files:
65
+ - ".github/workflows/release.yml"
65
66
  - ".github/workflows/test.yml"
66
67
  - ".gitignore"
67
68
  - ".rubocop.yml"