botscout 0.0.1 → 0.0.2

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/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --backtrace
3
+ --format documentation
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+ - 1.8.7
data/README.md CHANGED
@@ -1,6 +1,5 @@
1
- # Botscout
1
+ # Botscout [![Build Status](https://travis-ci.org/parallel588/botscout.png?branch=master)](https://travis-ci.org/parallel588/botscout)
2
2
 
3
- TODO: Write a gem description
4
3
 
5
4
  ## Installation
6
5
 
@@ -18,7 +17,14 @@ Or install it yourself as:
18
17
 
19
18
  ## Usage
20
19
 
21
- TODO: Write usage instructions here
20
+ botscout = Botscout::Client.new("key")
21
+ result = botscout.test mail: email
22
+ if result.success?
23
+ Logger.info "Email address is spam: #{email}" if result.bot?
24
+ else
25
+ Logger.info "Servis is not available: #{result.error}"
26
+ end
27
+
22
28
 
23
29
  ## Contributing
24
30
 
data/Rakefile CHANGED
@@ -1 +1,4 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+ task :default => :spec
4
+ RSpec::Core::RakeTask.new
@@ -19,5 +19,9 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_development_dependency "bundler", "~> 1.3"
21
21
  spec.add_development_dependency "rake"
22
+ spec.add_development_dependency 'rspec', '~> 2.13.0'
23
+ spec.add_development_dependency "vcr", "~> 2.4.0"
24
+ spec.add_development_dependency "webmock", "~> 1.11.0"
25
+
22
26
  spec.add_dependency "httparty", "~> 0.11.0"
23
27
  end
@@ -1,4 +1,5 @@
1
1
  require "botscout/version"
2
+ require 'httparty'
2
3
 
3
4
  module Botscout
4
5
  class Client
@@ -12,20 +13,38 @@ module Botscout
12
13
  end
13
14
 
14
15
  def test(options ={})
15
- _options = (@key.present? ? { :key => @key } : {}).merge(options)
16
- @response = self.class.get('/test', :query => _options)
16
+ _options = ((@key.nil? || @key.empty?) ? {} : { :key => @key } ).merge(options)
17
+ @response = self.class.get('/test/', :query => _options)
17
18
 
18
19
  Result.new(@response.body)
19
20
  end
20
21
 
21
22
  class Result
22
- attr_accessor :response, :result, :matched
23
+ attr_reader :response, :result, :matched
23
24
 
24
- def initialize(xml_response = "")
25
- @response = xml_response
25
+ def initialize(response = "")
26
+ @response = response.to_s
26
27
  parse!
27
28
  end
28
29
 
30
+ def bot?
31
+ @result.to_s == "Y"
32
+ end
33
+
34
+ def success?
35
+ !has_error?
36
+ end
37
+
38
+ def error
39
+ @response.match(/\A!(.*)/) && $1
40
+ end
41
+
42
+ def has_error?
43
+ !!@response.match(/\A!/)
44
+ end
45
+
46
+ private
47
+
29
48
  def parse!
30
49
  if has_error?
31
50
  @result = nil
@@ -45,23 +64,7 @@ module Botscout
45
64
  self
46
65
  end
47
66
 
48
- def bot?
49
- @result.to_s == "Y"
50
- end
51
67
 
52
- def success?
53
- !has_error?
54
- end
55
-
56
- def error
57
- @response.match(/\A!(.*)/) && $1
58
- end
59
-
60
- def has_error?
61
- !!@response.match(/\A!/)
62
- end
63
-
64
- private
65
68
  def parse_standart(response_array)
66
69
  {
67
70
  :count => response_array[2].to_i,
@@ -1,3 +1,3 @@
1
1
  module Botscout
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,78 @@
1
+ require "spec_helper"
2
+
3
+ describe Botscout::Client do
4
+ describe "#test" do
5
+ it "should return Botscout::Client::Result" do
6
+ VCR.use_cassette("test-spam-req") do
7
+ @client = Botscout::Client.new
8
+ @result = @client.test(:mail => "krasnhello@mail.ru")
9
+ expect(@result.is_a?(Botscout::Client::Result)).to be_true
10
+ end
11
+
12
+ end
13
+ end
14
+ describe "Result" do
15
+
16
+ describe "#bot?" do
17
+ context "when data is matched" do
18
+ it "should be true" do
19
+ VCR.use_cassette("test-spam-req") do
20
+ @client = Botscout::Client.new
21
+ @result = @client.test(:mail => "krasnhello@mail.ru")
22
+ expect(@result.bot?).to be_true
23
+ end
24
+ end
25
+ end
26
+ context "when data is not matched" do
27
+ it "should be false" do
28
+ VCR.use_cassette("test-not-pam-req") do
29
+ @client = Botscout::Client.new
30
+ @result = @client.test(:mail => "promotion@aliexpress.com")
31
+ expect(@result.bot?).to be_false
32
+ end
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+ context "when response is has error" do
39
+ before{
40
+ VCR.use_cassette("test-error-req") do
41
+ @client = Botscout::Client.new
42
+ @result = @client.test(:mail => "promotion@aliexpress.com")
43
+
44
+ end
45
+ }
46
+
47
+ it "#error should return the error message" do
48
+ expect(@result.error).to eq(" Sorry, but that doesn't appear to be a valid API key.")
49
+ end
50
+ it "#has_error? should return true" do
51
+ expect(@result.has_error?).to be_true
52
+ end
53
+ it "#success? should return false" do
54
+ expect(@result.success?).to be_false
55
+ end
56
+ end
57
+
58
+ context "when response is has not error" do
59
+ before{
60
+ VCR.use_cassette("test-spam-req") do
61
+ @client = Botscout::Client.new
62
+ @result = @client.test(:mail => "krasnhello@mail.ru")
63
+ end
64
+ }
65
+
66
+ it "#error should return nil" do
67
+ expect(@result.error).to be_nil
68
+ end
69
+ it "#has_error? should return false" do
70
+ expect(@result.has_error?).to be_false
71
+ end
72
+ it "#success? should return true" do
73
+ expect(@result.success?).to be_true
74
+ end
75
+ end
76
+
77
+ end
78
+ end
@@ -0,0 +1,32 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://botscout.com/test/?mail=promotion@aliexpress.com
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Date:
16
+ - Sat, 08 Jun 2013 18:51:22 GMT
17
+ Server:
18
+ - Apache/2.2.16 (Debian)
19
+ X-Powered-By:
20
+ - PHP/5.3.10-1~dotdeb.1
21
+ Vary:
22
+ - Accept-Encoding
23
+ Transfer-Encoding:
24
+ - chunked
25
+ Content-Type:
26
+ - text/html
27
+ body:
28
+ encoding: UTF-8
29
+ string: "! Sorry, but that doesn't appear to be a valid API key."
30
+ http_version:
31
+ recorded_at: Sat, 08 Jun 2013 18:51:21 GMT
32
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,32 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://botscout.com/test/?mail=promotion@aliexpress.com
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Date:
16
+ - Sat, 08 Jun 2013 18:50:02 GMT
17
+ Server:
18
+ - Apache/2.2.16 (Debian)
19
+ X-Powered-By:
20
+ - PHP/5.3.10-1~dotdeb.1
21
+ Vary:
22
+ - Accept-Encoding
23
+ Transfer-Encoding:
24
+ - chunked
25
+ Content-Type:
26
+ - text/html
27
+ body:
28
+ encoding: UTF-8
29
+ string: N|MAIL|0
30
+ http_version:
31
+ recorded_at: Sat, 08 Jun 2013 18:50:01 GMT
32
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,32 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://botscout.com/test/?mail=krasnhello@mail.ru
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Date:
16
+ - Sat, 08 Jun 2013 18:48:28 GMT
17
+ Server:
18
+ - Apache/2.2.16 (Debian)
19
+ X-Powered-By:
20
+ - PHP/5.3.10-1~dotdeb.1
21
+ Vary:
22
+ - Accept-Encoding
23
+ Transfer-Encoding:
24
+ - chunked
25
+ Content-Type:
26
+ - text/html
27
+ body:
28
+ encoding: UTF-8
29
+ string: Y|MAIL|0
30
+ http_version:
31
+ recorded_at: Sat, 08 Jun 2013 18:48:27 GMT
32
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,17 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ Bundler.require(:default)
4
+
5
+ require 'webmock/rspec'
6
+ require 'vcr'
7
+
8
+ VCR.configure do |c|
9
+ c.cassette_library_dir = 'spec/cassettes'
10
+ c.hook_into :webmock
11
+ c.default_cassette_options = { :record => :once }
12
+ end
13
+
14
+ RSpec.configure do |config|
15
+ config.treat_symbols_as_metadata_keys_with_true_values = true
16
+ config.run_all_when_everything_filtered = true
17
+ end
metadata CHANGED
@@ -1,65 +1,129 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: botscout
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.1
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ version: 0.0.2
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Maxim Pechnikov
8
14
  autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
- date: 2013-06-06 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2013-06-14 00:00:00 +04:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
14
22
  name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
17
27
  - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '1.3'
28
+ - !ruby/object:Gem::Version
29
+ hash: 9
30
+ segments:
31
+ - 1
32
+ - 3
33
+ version: "1.3"
34
+ type: :development
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
20
48
  type: :development
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: rspec
21
52
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
24
56
  - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '1.3'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
57
+ - !ruby/object:Gem::Version
58
+ hash: 59
59
+ segments:
60
+ - 2
61
+ - 13
62
+ - 0
63
+ version: 2.13.0
34
64
  type: :development
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ name: vcr
35
68
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: httparty
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
45
72
  - - ~>
46
- - !ruby/object:Gem::Version
47
- version: 0.11.0
48
- type: :runtime
73
+ - !ruby/object:Gem::Version
74
+ hash: 31
75
+ segments:
76
+ - 2
77
+ - 4
78
+ - 0
79
+ version: 2.4.0
80
+ type: :development
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ name: webmock
49
84
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
85
+ requirement: &id005 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
52
88
  - - ~>
53
- - !ruby/object:Gem::Version
89
+ - !ruby/object:Gem::Version
90
+ hash: 59
91
+ segments:
92
+ - 1
93
+ - 11
94
+ - 0
95
+ version: 1.11.0
96
+ type: :development
97
+ version_requirements: *id005
98
+ - !ruby/object:Gem::Dependency
99
+ name: httparty
100
+ prerelease: false
101
+ requirement: &id006 !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ~>
105
+ - !ruby/object:Gem::Version
106
+ hash: 51
107
+ segments:
108
+ - 0
109
+ - 11
110
+ - 0
54
111
  version: 0.11.0
112
+ type: :runtime
113
+ version_requirements: *id006
55
114
  description: BotScout
56
- email:
115
+ email:
57
116
  - parallel588@gmail.com
58
117
  executables: []
118
+
59
119
  extensions: []
120
+
60
121
  extra_rdoc_files: []
61
- files:
122
+
123
+ files:
62
124
  - .gitignore
125
+ - .rspec
126
+ - .travis.yml
63
127
  - Gemfile
64
128
  - LICENSE.txt
65
129
  - README.md
@@ -67,27 +131,48 @@ files:
67
131
  - botscout.gemspec
68
132
  - lib/botscout.rb
69
133
  - lib/botscout/version.rb
134
+ - spec/boutscout_spec.rb
135
+ - spec/cassettes/test-error-req.yml
136
+ - spec/cassettes/test-not-pam-req.yml
137
+ - spec/cassettes/test-spam-req.yml
138
+ - spec/spec_helper.rb
139
+ has_rdoc: true
70
140
  homepage: http://botscout.com/
71
141
  licenses: []
72
- metadata: {}
142
+
73
143
  post_install_message:
74
144
  rdoc_options: []
75
- require_paths:
145
+
146
+ require_paths:
76
147
  - lib
77
- required_ruby_version: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - '>='
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
- required_rubygems_version: !ruby/object:Gem::Requirement
83
- requirements:
84
- - - '>='
85
- - !ruby/object:Gem::Version
86
- version: '0'
148
+ required_ruby_version: !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ hash: 3
154
+ segments:
155
+ - 0
156
+ version: "0"
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ none: false
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ hash: 3
163
+ segments:
164
+ - 0
165
+ version: "0"
87
166
  requirements: []
167
+
88
168
  rubyforge_project:
89
- rubygems_version: 2.0.2
169
+ rubygems_version: 1.6.2
90
170
  signing_key:
91
- specification_version: 4
171
+ specification_version: 3
92
172
  summary: Ruby bindings for the botscout.com API
93
- test_files: []
173
+ test_files:
174
+ - spec/boutscout_spec.rb
175
+ - spec/cassettes/test-error-req.yml
176
+ - spec/cassettes/test-not-pam-req.yml
177
+ - spec/cassettes/test-spam-req.yml
178
+ - spec/spec_helper.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 5315f17aa32c90d89fb237b492e17a072d89d0a1
4
- data.tar.gz: b3672a5b70eee46b683c11d2010b95171e3310ab
5
- SHA512:
6
- metadata.gz: 0823893f9e1c48e15e14b182278443191f380d0861af1bd3fb28f13717713cdf2e173e68c4a2a0c6fe3f69a637a31f4d92bfcf7cc9d6a91e8b4ea575573e5665
7
- data.tar.gz: d7966e10defcf31b5a04e1a4f1555a6e2355e5e1d4a67bfc8b1159a9bf66f84d6964d6b9482641b5d8cc5059d10889c21d20a072fd2e5719d0904422e806647c