hamburglar 0.1.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.
- data/README.markdown +105 -0
- data/Rakefile +51 -0
- data/lib/cacert.pem +3910 -0
- data/lib/hamburglar/config.rb +14 -0
- data/lib/hamburglar/errors.rb +26 -0
- data/lib/hamburglar/gateways/base.rb +152 -0
- data/lib/hamburglar/gateways/max_mind.rb +68 -0
- data/lib/hamburglar/gateways.rb +6 -0
- data/lib/hamburglar/report.rb +61 -0
- data/lib/hamburglar/version.rb +3 -0
- data/lib/hamburglar.rb +19 -0
- metadata +109 -0
data/README.markdown
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
# Hamburglar
|
2
|
+
|
3
|
+
[](http://travis-ci.org/site5/hamburglar)
|
4
|
+
|
5
|
+
Hamburglar helps you prevent fraudulent orders.
|
6
|
+
|
7
|
+
Confirmed to work with ruby 1.8.7, 1.9.2, Rubinus, and JRuby 1.6.2.
|
8
|
+
|
9
|
+
## Prerequisites
|
10
|
+
|
11
|
+
You must have an active account with one of the APIs Hamburglar
|
12
|
+
supports. See **Supported APIs** below.
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
gem install hamburglar
|
17
|
+
|
18
|
+
## Usage
|
19
|
+
|
20
|
+
To get a fraud report, create a new instance of the `Hamburglar::Report`
|
21
|
+
class:
|
22
|
+
|
23
|
+
report = Hamburglar::Report.new(params)
|
24
|
+
|
25
|
+
Check for fraud by comparing the fraud score to
|
26
|
+
`Hamburglar.config.fraud_score`:
|
27
|
+
|
28
|
+
report.fraud?
|
29
|
+
|
30
|
+
By default, Hamburglar only considers the numeric fraud score when
|
31
|
+
trying to determine if an order is fraudulent. If you need more control,
|
32
|
+
you can configure `Hamburglar.config.fraud_proc`. It should be a block
|
33
|
+
that returns true when the order should be considered fraudulent.
|
34
|
+
|
35
|
+
Hamburglar.configure do |c|
|
36
|
+
c.fraud_proc = lambda do |report|
|
37
|
+
report.score > 5 && report.distance > 100
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
report.fraud?
|
42
|
+
|
43
|
+
### MaxMind
|
44
|
+
|
45
|
+
Hamburglar supports MaxMind's minFraud and Telephone Verification APIs.
|
46
|
+
By default, reports will use the minFraud API.
|
47
|
+
|
48
|
+
**Generate a fraud report using minFraud**
|
49
|
+
|
50
|
+
report = Hamburglar::Report.new(
|
51
|
+
:license_key => 's3cr3tz',
|
52
|
+
:i => '192.168.1.1',
|
53
|
+
:city => 'Funland',
|
54
|
+
:region => 'US',
|
55
|
+
:postal => '12345',
|
56
|
+
:country => 'US',
|
57
|
+
:bin => '12345',
|
58
|
+
:domain => 'example.com',
|
59
|
+
:binName => 'Happy Meal Bank',
|
60
|
+
:cust_phone => '+18004445555',
|
61
|
+
:email_address => 'test@example.com'
|
62
|
+
)
|
63
|
+
|
64
|
+
**Generate a fraud report using Telephone Verification**
|
65
|
+
|
66
|
+
report = Hamburglar::Report.new(
|
67
|
+
:gateway => :max_mind_telephone,
|
68
|
+
:l => 's3cr3tz',
|
69
|
+
:phone => '+18004445555'
|
70
|
+
)
|
71
|
+
|
72
|
+
## Optional Configuration
|
73
|
+
|
74
|
+
You may optionally configure the default gateway and credentials
|
75
|
+
Hamburglar will use. For example, in a Rails app where you always
|
76
|
+
used minFraud, you can add the following to
|
77
|
+
`config/initializers/hamburglar.rb`:
|
78
|
+
|
79
|
+
Hamburglar.configure do |config|
|
80
|
+
config.fraud_score = 2.5
|
81
|
+
config.gateway = :max_mind_min_fraud
|
82
|
+
config.credentials = { :license_key => 's3cr3tz' }
|
83
|
+
end
|
84
|
+
|
85
|
+
Note that Hamburglar uses a default fraud score of 2.5 and the default
|
86
|
+
gateway is minFraud.
|
87
|
+
|
88
|
+
## Supported APIs
|
89
|
+
|
90
|
+
* [MaxMind MinFraud](http://www.maxmind.com/app/ccv/)
|
91
|
+
* [MaxMind Telephone Verification](http://www.maxmind.com/app/telephone_api)
|
92
|
+
|
93
|
+
## Note on Patches/Pull Requests
|
94
|
+
|
95
|
+
* Fork the project.
|
96
|
+
* Make your feature addition or bug fix.
|
97
|
+
* Add tests for it. This is important so I don't break it in a future version
|
98
|
+
unintentionally.
|
99
|
+
* Commit, do not bump version. (If you want to have your own version, that is
|
100
|
+
fine but bump version in a commit by itself I can ignore when I pull.)
|
101
|
+
* Send me a pull request. Bonus points for topic branches.
|
102
|
+
|
103
|
+
## Copyright
|
104
|
+
|
105
|
+
Copyright (c) 2011 Site5 LLC. See LICENSE for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
$:.unshift 'lib'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'bundler'
|
5
|
+
Bundler::GemHelper.install_tasks
|
6
|
+
rescue LoadError
|
7
|
+
puts "Please install bundler (gem install bundler)"
|
8
|
+
exit
|
9
|
+
end
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'rspec/core/rake_task'
|
13
|
+
RSpec::Core::RakeTask.new :spec
|
14
|
+
rescue LoadError
|
15
|
+
puts "Please install rspec (bundle install)"
|
16
|
+
exit
|
17
|
+
end
|
18
|
+
|
19
|
+
begin
|
20
|
+
require 'metric_fu'
|
21
|
+
MetricFu::Configuration.run do |config|
|
22
|
+
config.rcov[:rcov_opts] << "-Ispec"
|
23
|
+
end
|
24
|
+
rescue LoadError
|
25
|
+
# puts "Can't find metric_fu"
|
26
|
+
end
|
27
|
+
|
28
|
+
begin
|
29
|
+
require 'rcov'
|
30
|
+
desc "Run all specs with rcov"
|
31
|
+
RSpec::Core::RakeTask.new(:rcov) do |t|
|
32
|
+
t.rcov = true
|
33
|
+
t.rcov_opts = %w{--exclude osx\/objc,gems\/,spec\/,features\/}
|
34
|
+
end
|
35
|
+
rescue LoadError
|
36
|
+
# puts "Can't find rcov"
|
37
|
+
end
|
38
|
+
|
39
|
+
desc "Open an irb session preloaded with this library"
|
40
|
+
task :console do
|
41
|
+
sh "irb -rubygems -r ./lib/hamburglar.rb -I ./lib"
|
42
|
+
end
|
43
|
+
|
44
|
+
desc "Run 'rake spec' with multiple rubies"
|
45
|
+
task :all_specs do
|
46
|
+
rubies = %w[1.8.7 1.9.2 jruby rbx-1.2.3].map { |r| "#{r}@hamburglar" }.join(',')
|
47
|
+
sh "rvm #{rubies} rake spec"
|
48
|
+
sh "find . -type f -name '*.rbc'| xargs rm"
|
49
|
+
end
|
50
|
+
|
51
|
+
task :default => :spec
|