quarantino 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,38 @@
1
+ module Quarantino
2
+ class Report
3
+ attr_reader :attributes
4
+
5
+ class << self
6
+ def create(params)
7
+ Quarantino.new(params)
8
+ end
9
+ end
10
+
11
+ def initialize(params)
12
+ @attributes ||= request(params)
13
+ end
14
+
15
+ private
16
+
17
+ def request(params)
18
+ validate(params)
19
+
20
+ response = connection.post do |req|
21
+ req.url '/reports'
22
+ req.headers['Content-Type'] = 'application/json'
23
+ req.headers['X-API-Key'] = ENV['QUARANTINO_API_KEY'] if ENV['QUARANTINO_API_KEY']
24
+ req.body = {report: {session_attributes: params}}.to_json
25
+ end
26
+
27
+ JSON.parse(response.body)
28
+ end
29
+
30
+ def connection
31
+ @connection ||= Faraday.new(:url => 'http://quarantino.herokuapp.com')
32
+ end
33
+
34
+ def validate(params)
35
+ raise ArgumentError, "Please configure QUARANTINO_API_KEY in your environment." unless ENV['QUARANTINO_API_KEY']
36
+ end
37
+ end
38
+ end
@@ -1,3 +1,3 @@
1
1
  module Quarantino
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,74 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe Quarantino::Report do
4
+
5
+ before do
6
+ stub_request(
7
+ :post,
8
+ "http://quarantino.herokuapp.com/reports"
9
+ ).to_return(
10
+ :status => 200,
11
+ :body => File.open('./spec/support/responses/report.json')
12
+ )
13
+
14
+ @session_attributes = {
15
+ "ip"=>"93.54.11.50",
16
+ "city"=>"London",
17
+ "region"=>"London",
18
+ "postal_code"=>"EC1N 2JT",
19
+ "country"=>"United Kingdom",
20
+ "forwarded_ip"=>nil, "email_md5"=>"ANB",
21
+ "username_md5"=>"ASD",
22
+ "password_md5"=>"[FILTERED]",
23
+ "app_session_id"=>"1234",
24
+ "user_agent"=>"Mozilla",
25
+ "accept_language"=>"English-US"
26
+ }
27
+ end
28
+
29
+ describe "#new" do
30
+ it "requests a report" do
31
+ report = Quarantino::Report.new(@session_attributes)
32
+ end
33
+
34
+ it "uses the API_KEY environment variable" do
35
+ with_env 'QUARANTINO_API_KEY', 'ABC' do
36
+ report = Quarantino::Report.new(@session_attributes)
37
+
38
+ a_request(
39
+ :post,
40
+ "http://quarantino.herokuapp.com/reports"
41
+ ).with(
42
+ :headers => {'Content-Type' => 'application/json', 'X-API-Key' => ENV['QUARANTINO_API_KEY']}
43
+ ).should have_been_made
44
+ end
45
+ end
46
+
47
+ it "warns about a missing API_KEY environment variable" do
48
+ with_env 'QUARANTINO_API_KEY', nil do
49
+ lambda {
50
+ report = Quarantino::Report.new(@session_attributes)
51
+ }.should raise_error ArgumentError
52
+
53
+ a_request(
54
+ :post,
55
+ "http://quarantino.herokuapp.com/reports"
56
+ ).should_not have_been_made
57
+ end
58
+ end
59
+ end
60
+
61
+ describe "#attributes" do
62
+ it "sets the attributes from the report" do
63
+ report = Quarantino::Report.new(@session_attributes)
64
+ report.attributes.should == JSON.parse(File.open('./spec/support/responses/report.json').read)
65
+ end
66
+ end
67
+
68
+ def with_env(key, value, &block)
69
+ old_env = ENV[key]
70
+ ENV[key] = value
71
+ yield
72
+ ENV[key] = old_env
73
+ end
74
+ end
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'quarantino'
4
+ require 'rspec'
5
+ require 'rspec/autorun'
6
+ require 'webmock/rspec'
7
+
8
+ # Requires supporting ruby files with custom matchers and macros, etc,
9
+ # in spec/support/ and its subdirectories.
10
+ Dir[File.join(File.expand_path('../support', __FILE__), '**/*.rb')].each {|f| require f}
11
+
12
+ ENV['QUARANTINO_API_KEY'] = 'TEST-API-KEY'
13
+
14
+ RSpec.configure do |config|
15
+ config.color_enabled = true
16
+ end
@@ -0,0 +1 @@
1
+ {"anonymous_proxy":false,"city_postal_match":null,"country_code":"GB","country_match":true,"created_at":"2012-08-21T15:27:15Z","distance":0,"error":null,"high_risk_country":false,"high_risk_email":false,"high_risk_username":false,"id":1,"ip_accuracy_radius":15,"ip_area_code":"0","ip_asnum":"AS35228 Avatar Broadband Limited","ip_city":"London","ip_city_conf":56,"ip_continent_code":"EU","ip_corporate_proxy":false,"ip_country_name":"United Kingdom","ip_domain":"bethere.co.uk","ip_isp":"Be Un Limited","ip_latitude":"51.5142","ip_longitude":"-0.0931","ip_metro_code":"0","ip_net_speed_cell":"Cable/DSL","ip_org":"Be Un Limited","ip_postal_code":null,"ip_region":"H9","ip_region_name":"London, City of","ip_time_zone":"Europe/London","ip_user_type":"residential","score":"1.16","session_id":1,"ship_city_postal_match":null,"transparent_proxy":null,"updated_at":"2012-08-21T15:27:15Z"}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quarantino
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-08-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
16
- requirement: &70216912225920 !ruby/object:Gem::Requirement
16
+ requirement: &70094379356060 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70216912225920
24
+ version_requirements: *70094379356060
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &70216912225460 !ruby/object:Gem::Requirement
27
+ requirement: &70094379354440 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70216912225460
35
+ version_requirements: *70094379354440
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70216912224920 !ruby/object:Gem::Requirement
38
+ requirement: &70094379352280 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.2.9
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70216912224920
46
+ version_requirements: *70094379352280
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: webmock
49
- requirement: &70216912224280 !ruby/object:Gem::Requirement
49
+ requirement: &70094379365280 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70216912224280
57
+ version_requirements: *70094379365280
58
58
  description: Client for Quarantino
59
59
  email:
60
60
  - sam@samoliver.com
@@ -68,8 +68,12 @@ files:
68
68
  - README.md
69
69
  - Rakefile
70
70
  - lib/quarantino.rb
71
+ - lib/quarantino/report.rb
71
72
  - lib/quarantino/version.rb
72
73
  - quarantino.gemspec
74
+ - spec/report_spec.rb
75
+ - spec/spec_helper.rb
76
+ - spec/support/responses/report.json
73
77
  homepage: http://github.com/widernet/quarantino-client
74
78
  licenses: []
75
79
  post_install_message:
@@ -94,4 +98,7 @@ rubygems_version: 1.8.17
94
98
  signing_key:
95
99
  specification_version: 3
96
100
  summary: ''
97
- test_files: []
101
+ test_files:
102
+ - spec/report_spec.rb
103
+ - spec/spec_helper.rb
104
+ - spec/support/responses/report.json