Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

## v2.10.0

* Added the `residential` attribute to the `anonymizer` object on
`Minfraud::Model::IPAddress`. This object contains residential proxy
data for the network, including a confidence score, the network last
seen date, and the provider name. It may be populated even when no
other anonymizer attributes are set. This is only available from the
minFraud Insights and Factors web services.
* Added the `tracking_token` attribute to `Minfraud::Components::Device`.
This is the token generated by the
[Device Tracking Add-on](https://dev.maxmind.com/minfraud/track-devices)
Expand Down
6 changes: 3 additions & 3 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ PATH
minfraud (2.9.0)
connection_pool (>= 2.2, < 4.0)
http (>= 4.3, < 6.0)
maxmind-geoip2 (~> 1.4)
maxmind-geoip2 (~> 1.6)
simpleidn (~> 0.1, >= 0.1.1)

GEM
Expand Down Expand Up @@ -53,9 +53,9 @@ GEM
ffi-compiler (~> 1.0)
rake (~> 13.0)
maxmind-db (1.4.0)
maxmind-geoip2 (1.5.1)
maxmind-geoip2 (1.6.0)
connection_pool (>= 2.2, < 4.0)
http (>= 4.3, < 6.0)
http (>= 4.3, < 7.0)
maxmind-db (~> 1.4)
parallel (1.28.0)
parser (3.3.11.1)
Expand Down
6 changes: 4 additions & 2 deletions lychee.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
# Run locally with:
# lychee './**/*.md' './lib/**/*.rb' './*.gemspec'

# Include URL fragments in checks
include_fragments = true
# Include URL fragments in checks. lychee 0.24 replaced the boolean
# `include_fragments` with a mode string; `full` checks both `#anchor`
# fragments and text fragments (`#:~:text=`).
include_fragments = "full"

# Don't allow any redirects, so links that have moved are surfaced and can be
# updated to their canonical destination.
Expand Down
2 changes: 1 addition & 1 deletion minfraud.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Gem::Specification.new do |spec|

spec.add_dependency 'connection_pool', '>= 2.2', '< 4.0'
spec.add_dependency 'http', '>= 4.3', '< 6.0'
spec.add_dependency 'maxmind-geoip2', '~> 1.4'
spec.add_dependency 'maxmind-geoip2', '~> 1.6'
spec.add_dependency 'simpleidn', '~> 0.1', '>= 0.1.1'

spec.add_development_dependency 'bundler', '~> 2.2'
Expand Down
80 changes: 53 additions & 27 deletions mise.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion spec/fixtures/files/factors-response1.json
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,12 @@
"is_residential_proxy": true,
"is_tor_exit_node": true,
"network_last_seen": "2025-01-15",
"provider_name": "TestVPN"
"provider_name": "TestVPN",
"residential": {
"confidence": 82,
"network_last_seen": "2026-05-11",
"provider_name": "quickshift"
}
}
},
"billing_address": {
Expand Down
7 changes: 6 additions & 1 deletion spec/fixtures/files/insights-response1.json
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,12 @@
"is_residential_proxy": true,
"is_tor_exit_node": true,
"network_last_seen": "2025-01-15",
"provider_name": "TestVPN"
"provider_name": "TestVPN",
"residential": {
"confidence": 82,
"network_last_seen": "2026-05-11",
"provider_name": "quickshift"
}
}
},
"billing_address": {
Expand Down
6 changes: 6 additions & 0 deletions spec/model/insights_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,12 @@
provider_name: 'TestVPN'
)

expect(m.ip_address.anonymizer.residential).to have_attributes(
confidence: 82,
network_last_seen: Date.new(2_026, 5, 11),
provider_name: 'quickshift'
)

expect(m.billing_address.is_postal_in_city).to be false
expect(m.billing_address.latitude).to eq 41.310571
expect(m.billing_address.longitude).to eq(-72.922891)
Expand Down
Loading