fraudrecord 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8324882d5e84016b3e34e099d2efa34193b40b4c
4
+ data.tar.gz: 26736044fb731b660612ff3ccde5c1703bdd52de
5
+ SHA512:
6
+ metadata.gz: ef41aa56bb74caa1dd6b4455a94335d191ac4e557760226682644a396d4a4954e99bdf1ee68e2bc8fa4e5b2dfbea411828e186d1e87ddfc9fd2a4872d53f3707
7
+ data.tar.gz: 16dfcdd82db34805e2f92a5ed31c4608c6128bc3509201a29b193b729eac14eae91c030f3f0fcf636d4790dd0cdec46d30d80991ffb16a8e514db77971c8254c
Binary file
@@ -0,0 +1 @@
1
+ pkg/
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
@@ -0,0 +1,64 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ fraudrecord (0.0.1)
5
+ activesupport
6
+ faraday (~> 0.9.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ activesupport (4.2.0)
12
+ i18n (~> 0.7)
13
+ json (~> 1.7, >= 1.7.7)
14
+ minitest (~> 5.1)
15
+ thread_safe (~> 0.3, >= 0.3.4)
16
+ tzinfo (~> 1.1)
17
+ addressable (2.3.8)
18
+ coveralls (0.7.2)
19
+ multi_json (~> 1.3)
20
+ rest-client (= 1.6.7)
21
+ simplecov (>= 0.7)
22
+ term-ansicolor (= 1.2.2)
23
+ thor (= 0.18.1)
24
+ crack (0.4.2)
25
+ safe_yaml (~> 1.0.0)
26
+ docile (1.1.5)
27
+ faraday (0.9.1)
28
+ multipart-post (>= 1.2, < 3)
29
+ i18n (0.7.0)
30
+ json (1.8.2)
31
+ mime-types (2.4.3)
32
+ minitest (5.3.5)
33
+ multi_json (1.11.0)
34
+ multipart-post (2.0.0)
35
+ rest-client (1.6.7)
36
+ mime-types (>= 1.16)
37
+ safe_yaml (1.0.4)
38
+ simplecov (0.8.2)
39
+ docile (~> 1.1.0)
40
+ multi_json
41
+ simplecov-html (~> 0.8.0)
42
+ simplecov-html (0.8.0)
43
+ term-ansicolor (1.2.2)
44
+ tins (~> 0.8)
45
+ thor (0.18.1)
46
+ thread_safe (0.3.5)
47
+ tins (0.13.2)
48
+ tzinfo (1.2.2)
49
+ thread_safe (~> 0.1)
50
+ vcr (2.8.0)
51
+ webmock (1.8.11)
52
+ addressable (>= 2.2.7)
53
+ crack (>= 0.1.7)
54
+
55
+ PLATFORMS
56
+ ruby
57
+
58
+ DEPENDENCIES
59
+ coveralls (~> 0.7.0)
60
+ fraudrecord!
61
+ minitest (~> 5.3.1)
62
+ simplecov (~> 0.8.2)
63
+ vcr (~> 2.8.0)
64
+ webmock (~> 1.8.0)
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2015 Sean Handley
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
@@ -0,0 +1,60 @@
1
+ # Fraud Record
2
+
3
+ Gem wrapper for [fraudrecord.com](https://fraudrecord.com).
4
+
5
+ ## Installing
6
+
7
+ ```
8
+ gem install fraudrecord
9
+ ```
10
+
11
+ or
12
+
13
+ (in Gemfile or .gemspec)
14
+ ```ruby
15
+ gem 'fraudrecord'
16
+ ```
17
+
18
+ then
19
+
20
+ ```ruby
21
+ require 'fraudrecord'
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ First, you will need to create an account on https://www.fraudrecord.com and make a reporter profile. This will create an API key for you. Expose this to your Ruby runtime in the form of an environment variable i.e.
27
+
28
+ ```
29
+ export FRAUD_RECORD_API_KEY=f656a57c78
30
+ ```
31
+
32
+ Secondly, call the `query` method with a Ruby hash of parameters containing the data you wish to query. This will automatically be salted and hashed before being submitted to Fraud Record.
33
+
34
+ ```ruby
35
+ Fraudrecord.query name: 'Billy Jones', email: 'billy@fraudsters.com'
36
+ => {:value=>30, :count=>3, :reliability=>8.2, :report=>"https://www.fraudrecord.com/api/?showreport=2bbf78f6f8"}
37
+ ```
38
+
39
+ Fraud Record accepts variables as long as the variable name consists of [a-z] characters, 16 characters max. Uppercase variables will be converted to lowercase internally. The dash (hyphen) character is also accepted. For example, "paypal-email" is a valid variable name.
40
+
41
+ There is also a common set of accepted variables to choose from:
42
+
43
+ | Variable Name | Description |
44
+ |---------------|-------------------------------------------------------------|
45
+ | name | Client name. |
46
+ | password | Client password. Usually a good indicator of identity. |
47
+ | company | Company name which the client inputs. |
48
+ | email | Client's email address. |
49
+ | address | Client's postal address. |
50
+ | phone | Client's phone number. |
51
+ | ip | Client's registration IP address. |
52
+ | hostname | Hostname for server clients. |
53
+ | accountuser | Hosting account username. |
54
+ | accountpass | Hosting account password. |
55
+ | domain | Domain name of the hosting client. |
56
+ | payment | Payment processor identification, e.g. paypal email address |
57
+ | ccname | Name on credit card |
58
+ | ccnumber | Credit card number. |
59
+
60
+ To learn more, please read https://www.fraudrecord.com/developers.
@@ -0,0 +1,15 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rake/testtask'
5
+ namespace :test do
6
+ Rake::TestTask.new("unit") do |t|
7
+ t.libs << 'test'
8
+ t.pattern = "#{File.dirname(__FILE__)}/test/all.rb"
9
+ end
10
+ end
11
+
12
+ desc "Run tests"
13
+ task :test => ["test:unit"]
14
+
15
+ task :default => :test
@@ -0,0 +1,5 @@
1
+ {
2
+ "result": {
3
+ "covered_percent": 100.0
4
+ }
5
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "Unit Tests": {
3
+ "coverage": {
4
+ "/Users/sean/src/fraudrecord/lib/fraudrecord.rb": [
5
+ 1,
6
+ 1,
7
+ 1,
8
+ 1,
9
+ null,
10
+ 1,
11
+ 1,
12
+ 1,
13
+ null,
14
+ 1,
15
+ 1,
16
+ null,
17
+ null,
18
+ 1,
19
+ null,
20
+ 1,
21
+ 1,
22
+ null,
23
+ null,
24
+ 1,
25
+ 1,
26
+ 1,
27
+ 1,
28
+ null,
29
+ null,
30
+ null,
31
+ 1,
32
+ 1,
33
+ 2,
34
+ 2,
35
+ null,
36
+ null,
37
+ null,
38
+ 1,
39
+ 2,
40
+ 64000,
41
+ null,
42
+ 2,
43
+ null,
44
+ null
45
+ ]
46
+ },
47
+ "timestamp": 1429704742
48
+ }
49
+ }
File without changes
@@ -0,0 +1,26 @@
1
+ Gem::Specification.new do |gem|
2
+ gem.name = 'fraudrecord'
3
+ gem.version = '0.0.1'
4
+ gem.date = '2015-04-22'
5
+ gem.summary = 'fraudrecord'
6
+ gem.description = 'API wrapper for FraudRecord.com'
7
+ gem.authors = [ 'Sean Handley' ]
8
+ gem.email = 'sean.handley@gmail.com'
9
+ gem.files = `git ls-files`.split("\n")
10
+ gem.homepage = 'https://github.com/seanhandley/fraudrecord'
11
+ gem.license = 'MIT'
12
+
13
+ gem.required_ruby_version = '> 2.0.0'
14
+
15
+ # Runtime Dependencies
16
+ gem.add_runtime_dependency 'faraday', '~> 0.9.0'
17
+ gem.add_runtime_dependency 'activesupport', '~> 4.2.0'
18
+
19
+ # Development Dependencies
20
+ gem.add_development_dependency 'vcr', '~> 2.8.0'
21
+ gem.add_development_dependency 'webmock', '~> 1.8.0'
22
+ gem.add_development_dependency 'minitest', '~> 5.3.1'
23
+ gem.add_development_dependency 'simplecov', '~> 0.8.2'
24
+ gem.add_development_dependency 'coveralls', '~> 0.7.0'
25
+
26
+ end
@@ -0,0 +1,47 @@
1
+ require 'faraday'
2
+ require 'active_support'
3
+ require 'active_support/core_ext'
4
+ require 'digest/sha1'
5
+
6
+ module Fraudrecord
7
+ def self.query(args={})
8
+ raise(ArgumentError, "Env variable FRAUD_RECORD_API_KEY not set") unless ENV["FRAUD_RECORD_API_KEY"]
9
+ processed_args = process_args(args).merge!('_action' => 'query',
10
+ '_api' => ENV["FRAUD_RECORD_API_KEY"])
11
+ response = conn.get '/api/', processed_args
12
+ value, count, reliability, report = *Hash.from_xml(response.body)['report'].split('-')
13
+ {
14
+ value: value.to_i,
15
+ count: count.to_i,
16
+ reliability: reliability.to_f,
17
+ report: "https://www.fraudrecord.com/api/?showreport=#{report}"
18
+ }
19
+ end
20
+
21
+ private
22
+
23
+ def self.default_host
24
+ "https://www.fraudrecord.com"
25
+ end
26
+
27
+ def self.conn
28
+ Faraday.new(:url => default_host, ssl: { verify: false }) do |faraday|
29
+ faraday.request :url_encoded
30
+ faraday.adapter Faraday.default_adapter
31
+ end
32
+ end
33
+
34
+ def self.process_args(args)
35
+ args.inject({}) do |acc, v|
36
+ acc[v[0]] = salt_and_hash(v[1].gsub(/\s/,'').downcase)
37
+ acc
38
+ end
39
+ end
40
+
41
+ def self.salt_and_hash(value)
42
+ 32_000.times do
43
+ value = Digest::SHA1.hexdigest("fraudrecord-#{value}")
44
+ end
45
+ value
46
+ end
47
+ end
@@ -0,0 +1,6 @@
1
+ dir = File.dirname(__FILE__)
2
+ $LOAD_PATH.unshift(dir)
3
+
4
+ Dir["#{dir}/**/*_test.rb"].sort.each do |file|
5
+ require file.sub(/^#{dir}\/(.*)\.rb$/, '\1')
6
+ end
@@ -0,0 +1,24 @@
1
+ require 'simplecov'
2
+ if require 'coveralls'
3
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
4
+ SimpleCov.start do
5
+ add_filter '/test/'
6
+ end
7
+ end
8
+
9
+ require 'vcr'
10
+
11
+ VCR.configure do |c|
12
+ c.cassette_library_dir = 'test/vcr_cassettes'
13
+ c.hook_into :webmock
14
+ end
15
+
16
+ require_relative '../lib/fraudrecord'
17
+
18
+ TEST_ENV = true
19
+
20
+ require 'rubygems'
21
+ gem "minitest"
22
+ require 'minitest/autorun'
23
+
24
+ ENV["FRAUD_RECORD_API_KEY"] = "foo"
@@ -0,0 +1,15 @@
1
+ module Fraudrecord
2
+
3
+ require_relative '../../test_helper'
4
+
5
+ class FraudrecordTest < Minitest::Test
6
+ def test_query
7
+ VCR.use_cassette('standard_query') do
8
+ results = Fraudrecord.query(name: "Bob Jones", email: 'bob@jones.co.uk')
9
+ assert_equal 0, results[:value]
10
+ assert_equal 0, results[:count]
11
+ assert_equal 0.0, results[:reliability]
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,38 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.fraudrecord.com/api/?_action=query&_api=foo&email=52fde613f7b9d8aa992d7eeab8ad13c03c85e96c&name=225c0aa2542aa22fab3d441ff43b7a752c85aeba
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.1
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - nginx/1.2.1
23
+ Date:
24
+ - Wed, 22 Apr 2015 12:07:35 GMT
25
+ Content-Type:
26
+ - text/html
27
+ Transfer-Encoding:
28
+ - chunked
29
+ Connection:
30
+ - keep-alive
31
+ X-Powered-By:
32
+ - PHP/5.4.33
33
+ body:
34
+ encoding: UTF-8
35
+ string: "<report>0-0-0.0-ad8f2f262e234522</report>"
36
+ http_version:
37
+ recorded_at: Wed, 22 Apr 2015 12:07:33 GMT
38
+ recorded_with: VCR 2.9.3
metadata ADDED
@@ -0,0 +1,157 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fraudrecord
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Sean Handley
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.9.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.9.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 4.2.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 4.2.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: vcr
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.8.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.8.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: webmock
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.8.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.8.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 5.3.1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 5.3.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.8.2
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.8.2
97
+ - !ruby/object:Gem::Dependency
98
+ name: coveralls
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.7.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.7.0
111
+ description: API wrapper for FraudRecord.com
112
+ email: sean.handley@gmail.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - ".DS_Store"
118
+ - ".gitignore"
119
+ - Gemfile
120
+ - Gemfile.lock
121
+ - LICENSE
122
+ - README.md
123
+ - Rakefile
124
+ - coverage/.last_run.json
125
+ - coverage/.resultset.json
126
+ - coverage/.resultset.json.lock
127
+ - fraudrecord.gemspec
128
+ - lib/fraudrecord.rb
129
+ - test/all.rb
130
+ - test/test_helper.rb
131
+ - test/unit/lib/fraudrecord_test.rb
132
+ - test/vcr_cassettes/standard_query.yml
133
+ homepage: https://github.com/seanhandley/fraudrecord
134
+ licenses:
135
+ - MIT
136
+ metadata: {}
137
+ post_install_message:
138
+ rdoc_options: []
139
+ require_paths:
140
+ - lib
141
+ required_ruby_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">"
144
+ - !ruby/object:Gem::Version
145
+ version: 2.0.0
146
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ requirements: []
152
+ rubyforge_project:
153
+ rubygems_version: 2.4.5
154
+ signing_key:
155
+ specification_version: 4
156
+ summary: fraudrecord
157
+ test_files: []