yandex_cleanweb 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module YandexCleanweb
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -5,6 +5,8 @@ require "nokogiri"
5
5
  require "net/http"
6
6
 
7
7
  module YandexCleanweb
8
+ class NoApiKeyException < Exception; end
9
+
8
10
  API_URL = 'http://cleanweb-api.yandex.ru/1.0/'
9
11
 
10
12
  class << self
@@ -54,7 +56,7 @@ module YandexCleanweb
54
56
  def api_check_captcha(request_id, captcha_id, value)
55
57
  check_captcha_url = "#{API_URL}/check-captcha"
56
58
  params = {
57
- :key => api_key,
59
+ :key => prepare_api_key,
58
60
  :id => request_id,
59
61
  :captcha => captcha_id,
60
62
  :value => value
@@ -68,7 +70,7 @@ module YandexCleanweb
68
70
 
69
71
  def api_get_captcha(request_id)
70
72
  get_captcha_url = "#{API_URL}/get-captcha"
71
- params = { :key => api_key, :id => request_id }
73
+ params = { :key => prepare_api_key, :id => request_id }
72
74
 
73
75
  uri = URI.parse(get_captcha_url)
74
76
  uri.query = URI.encode_www_form(params)
@@ -77,7 +79,7 @@ module YandexCleanweb
77
79
  end
78
80
 
79
81
  def api_check_spam(options)
80
- cleanweb_options = { :key => api_key }
82
+ cleanweb_options = { :key => prepare_api_key }
81
83
 
82
84
  if options[0].is_a?(String) # quick check
83
85
  cleanweb_options[:body_plain] = options[0]
@@ -91,5 +93,11 @@ module YandexCleanweb
91
93
  response = Net::HTTP.post_form(uri, cleanweb_options)
92
94
  response.body
93
95
  end
96
+
97
+ def prepare_api_key
98
+ raise NoApiKeyException if api_key.nil? || api_key.empty?
99
+
100
+ api_key
101
+ end
94
102
  end
95
103
  end
data/test/test_helper.rb CHANGED
@@ -3,5 +3,6 @@ ENV["RAILS_ENV"] = "test"
3
3
  require "minitest/autorun"
4
4
  require "minitest/spec"
5
5
  require "minitest/pride"
6
+ require "minitest-spec-context"
6
7
 
7
8
  require "yandex_cleanweb"
@@ -2,47 +2,91 @@
2
2
  require "test_helper"
3
3
 
4
4
  describe YandexCleanweb do
5
- before do
6
- YandexCleanweb.api_key = "cw.1.1.20121227T080449Z.51de1ee126e5ced6.f4f417fb55727520d7e39b00cf5393d4b1ca5e78"
7
- end
8
5
 
9
- describe "#spam?" do
6
+ context "without api key" do
7
+ before do
8
+ YandexCleanweb.api_key = nil
9
+ end
10
10
 
11
- describe "simple check" do
12
- it "works" do
13
- YandexCleanweb.spam?("фраза").must_equal false
14
- YandexCleanweb.spam?("недорого увеличение пениса проститутки").must_equal false
11
+ describe "#spam?" do
12
+ it "raise an error" do
13
+ -> {
14
+ YandexCleanweb.spam?("anything")
15
+ }.must_raise YandexCleanweb::NoApiKeyException
15
16
  end
16
17
  end
17
18
 
18
- describe "advanced mode" do
19
- it "workd" do
20
- YandexCleanweb.spam?(:body_plain => "my text", :ip => "80.80.40.3").must_equal false
19
+ describe "#get_captcha" do
20
+ it "raise an error" do
21
+ -> {
22
+ YandexCleanweb.get_captcha("anything")
23
+ }.must_raise YandexCleanweb::NoApiKeyException
21
24
  end
25
+ end
22
26
 
23
- it "for some html" do
24
- result = YandexCleanweb.spam?(:body_html => "some spam <a href='http://spam.com'>spam link</a>")
25
-
26
- result[:id].wont_be_empty
27
- result[:links].must_be_empty
27
+ describe "#valid_captcha?" do
28
+ it "raise an error" do
29
+ -> {
30
+ YandexCleanweb.valid_captcha?("anything", "anything", 123)
31
+ }.must_raise YandexCleanweb::NoApiKeyException
28
32
  end
33
+ end
29
34
 
35
+ end
36
+
37
+ context "with empty api key" do
38
+ before do
39
+ YandexCleanweb.api_key = ""
30
40
  end
31
41
 
42
+ it "raise an error" do
43
+ -> {
44
+ YandexCleanweb.spam?("anything")
45
+ }.must_raise YandexCleanweb::NoApiKeyException
46
+ end
32
47
  end
33
48
 
34
- describe "#get_captcha + #valid_captcha?" do
49
+ context "with api key" do
35
50
 
36
- it "works for not valid captchas" do
37
- result = YandexCleanweb.spam?(:body_html => "some spam <a href='http://spam.com'>spam link</a>")
38
- captcha = YandexCleanweb.get_captcha(result[:id])
51
+ before do
52
+ YandexCleanweb.api_key = "cw.1.1.20121227T080449Z.51de1ee126e5ced6.f4f417fb55727520d7e39b00cf5393d4b1ca5e78"
53
+ end
39
54
 
40
- captcha[:url].wont_be_empty
41
- captcha[:captcha].wont_be_empty
55
+ describe "#spam?" do
42
56
 
43
- valid = YandexCleanweb.valid_captcha?(result[:id], captcha[:captcha], "1234")
44
- valid.must_equal false
57
+ describe "simple check" do
58
+ it "works" do
59
+ YandexCleanweb.spam?("фраза").must_equal false
60
+ YandexCleanweb.spam?("недорого увеличение пениса проститутки").must_equal false
61
+ end
62
+ end
63
+
64
+ describe "advanced mode" do
65
+ it "works" do
66
+ YandexCleanweb.spam?(:body_plain => "my text", :ip => "80.80.40.3").must_equal false
67
+ end
68
+
69
+ it "with some html" do
70
+ result = YandexCleanweb.spam?(:body_html => "some spam <a href='http://spam.com'>spam link</a>")
71
+
72
+ result[:id].wont_be_empty
73
+ result[:links].must_be_empty
74
+ end
75
+ end
45
76
  end
46
77
 
78
+ describe "#get_captcha + #valid_captcha?" do
79
+
80
+ it "works for not valid captchas" do
81
+ result = YandexCleanweb.spam?(:body_html => "some spam <a href='http://spam.com'>spam link</a>")
82
+ captcha = YandexCleanweb.get_captcha(result[:id])
83
+
84
+ captcha[:url].wont_be_empty
85
+ captcha[:captcha].wont_be_empty
86
+
87
+ valid = YandexCleanweb.valid_captcha?(result[:id], captcha[:captcha], "1234")
88
+ valid.must_equal false
89
+ end
90
+ end
47
91
  end
48
92
  end
@@ -21,4 +21,5 @@ Gem::Specification.new do |gem|
21
21
 
22
22
  gem.add_development_dependency "rake"
23
23
  gem.add_development_dependency "minitest", "~> 3.0"
24
+ gem.add_development_dependency "minitest-spec-context"
24
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yandex_cleanweb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-30 00:00:00.000000000 Z
12
+ date: 2013-04-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -59,6 +59,22 @@ dependencies:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '3.0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: minitest-spec-context
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
62
78
  description: Ruby wrapper for Yandex.Cleanweb
63
79
  email:
64
80
  - shatrov@me.com