fraudrecord 0.0.1

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.
@@ -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: []