yandex_cleanweb 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ee60b4e2f1d08f35d57447784b1da0bc2b2535f9
4
+ data.tar.gz: b5142c4d04db8feb8c5c2bcda34a114b5ebbb742
5
+ SHA512:
6
+ metadata.gz: 9c47bb6e2a67bb38106d16aef35f6aab0ecc1ace339cc5f9e68f5e13edb8d0f90286ae439918797599aa3a6bdbfacb2798bce7d06e6923d8bf8547079f1aa8e8
7
+ data.tar.gz: 65ef3e95253845aeddd38eb00ad44b6b8adc45c5484a8a411819f39f558cecf51a715e1a6be474ef1ff4b946d54a96ce3f3054116110fa4a468a794c4c9f506c
data/.travis.yml CHANGED
@@ -1,8 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.2
4
3
  - 1.9.3
5
- - 2.0.0
6
- notifications:
7
- email:
8
- - shatrov@me.com
4
+ - 2.0
5
+ - 2.1
6
+ - 2.2
data/README.md CHANGED
@@ -36,6 +36,14 @@ YandexCleanweb.spam?(body_html: "some spam <a href='http://spam.com'>spam link</
36
36
  => { id: "request id", links: [ ['http://spam.com', true] ] }
37
37
  ```
38
38
 
39
+ Tell Cleanweb API that message is spam:
40
+
41
+ ```ruby
42
+ YandexCleanweb.api_key = "your_key"
43
+ YandexCleanweb.spam!("some spam here")
44
+ YandexCleanweb.spam!(body_html: "some spam <a href='http://spam.com'>spam link</a>")
45
+ ```
46
+
39
47
  More complex example:
40
48
 
41
49
  ```ruby
@@ -38,6 +38,32 @@ module YandexCleanweb
38
38
  end
39
39
  end
40
40
 
41
+ def spam!(*options)
42
+ response = api_check_spam(options)
43
+ doc = Nokogiri::XML(response)
44
+
45
+ request_id_tag = doc.xpath('//check-spam-result/id')
46
+ spam_flag_tag = doc.xpath('//check-spam-result/text')
47
+
48
+ raise BadResponseException if request_id_tag.size.zero?
49
+
50
+ request_id = request_id_tag[0].content
51
+ spam_flag = spam_flag_tag[0].attributes["spam-flag"].content
52
+
53
+ if spam_flag == 'yes'
54
+ true
55
+ else
56
+ response = api_mark_as_spam(request_id)
57
+ doc = Nokogiri::Slop(response)
58
+ status = doc.xpath("//complain-result/ok").first.name
59
+ if status=='ok'
60
+ true
61
+ else
62
+ false
63
+ end
64
+ end
65
+ end
66
+
41
67
  def get_captcha(request_id)
42
68
  response = api_get_captcha(request_id)
43
69
  doc = Nokogiri::XML(response)
@@ -97,6 +123,15 @@ module YandexCleanweb
97
123
  response.body
98
124
  end
99
125
 
126
+ def api_mark_as_spam(request_id)
127
+ cleanweb_options = { key: prepare_api_key, id: request_id, spamtype: 'spam' }
128
+ complain_url = "#{API_URL}/complain"
129
+
130
+ uri = URI.parse(complain_url)
131
+ response = Net::HTTP.post_form(uri, cleanweb_options)
132
+ response.body
133
+ end
134
+
100
135
  def prepare_api_key
101
136
  raise NoApiKeyException if api_key.nil? || api_key.empty?
102
137
 
@@ -1,3 +1,3 @@
1
1
  module YandexCleanweb
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -16,6 +16,14 @@ describe YandexCleanweb do
16
16
  end
17
17
  end
18
18
 
19
+ describe "#spam!" do
20
+ it "raise an error" do
21
+ -> {
22
+ YandexCleanweb.spam!("anything")
23
+ }.must_raise YandexCleanweb::NoApiKeyException
24
+ end
25
+ end
26
+
19
27
  describe "#get_captcha" do
20
28
  it "raise an error" do
21
29
  -> {
@@ -44,6 +52,13 @@ describe YandexCleanweb do
44
52
  YandexCleanweb.spam?("anything")
45
53
  }.must_raise YandexCleanweb::NoApiKeyException
46
54
  end
55
+
56
+ it "raise an error" do
57
+ -> {
58
+ YandexCleanweb.spam!("anything")
59
+ }.must_raise YandexCleanweb::NoApiKeyException
60
+ end
61
+
47
62
  end
48
63
 
49
64
  context "with api key" do
@@ -63,7 +78,12 @@ describe YandexCleanweb do
63
78
 
64
79
  describe "advanced mode" do
65
80
  it "works" do
66
- YandexCleanweb.spam?(body_plain: "my text", ip: "80.80.40.3").must_equal false
81
+ result = YandexCleanweb.spam?(body_plain: "my text", ip: "80.80.40.3")
82
+ result[:id].wont_be_empty
83
+ result[:links].must_be_empty
84
+
85
+
86
+ YandexCleanweb.spam?(body_plain: "my text").must_equal false
67
87
  end
68
88
 
69
89
  it "with some html" do
@@ -75,6 +95,22 @@ describe YandexCleanweb do
75
95
  end
76
96
  end
77
97
 
98
+ describe "#spam!" do
99
+ describe "simple check" do
100
+ it "works" do
101
+ YandexCleanweb.spam!("другая тестовая фраза").must_equal true
102
+ YandexCleanweb.spam!("недорого увеличение пениса проститутки без смс и регистрации").must_equal true
103
+ end
104
+
105
+ it "with some html" do
106
+ result = YandexCleanweb.spam!(body_html: "some spam <a href='http://spam.com'>spam link</a>")
107
+
108
+ result.must_equal true
109
+ end
110
+
111
+ end
112
+ end
113
+
78
114
  describe "#get_captcha + #valid_captcha?" do
79
115
 
80
116
  it "works for not valid captchas" do
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
  gem.email = ["shatrov@me.com"]
11
11
  gem.description = %q{Ruby wrapper for Yandex.Cleanweb}
12
12
  gem.summary = %q{Ruby wrapper for Yandex.Cleanweb spam detector}
13
- gem.homepage = ""
13
+ gem.homepage = "https://github.com/evrone/yandex-cleanweb"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
metadata CHANGED
@@ -1,94 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yandex_cleanweb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 0.0.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Kir Shatrov
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-07-26 00:00:00.000000000 Z
11
+ date: 2015-01-14 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: nokogiri
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: minitest
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ~>
45
+ - - "~>"
52
46
  - !ruby/object:Gem::Version
53
47
  version: '3.0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ~>
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
54
  version: '3.0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: minitest-spec-context
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - ">="
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - ">="
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: fakeweb
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - ">="
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - ">="
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  description: Ruby wrapper for Yandex.Cleanweb
@@ -98,8 +87,8 @@ executables: []
98
87
  extensions: []
99
88
  extra_rdoc_files: []
100
89
  files:
101
- - .gitignore
102
- - .travis.yml
90
+ - ".gitignore"
91
+ - ".travis.yml"
103
92
  - Gemfile
104
93
  - LICENSE.txt
105
94
  - README.md
@@ -109,29 +98,28 @@ files:
109
98
  - test/test_helper.rb
110
99
  - test/yandex_cleanweb_test.rb
111
100
  - yandex_cleanweb.gemspec
112
- homepage: ''
101
+ homepage: https://github.com/evrone/yandex-cleanweb
113
102
  licenses: []
103
+ metadata: {}
114
104
  post_install_message:
115
105
  rdoc_options: []
116
106
  require_paths:
117
107
  - lib
118
108
  required_ruby_version: !ruby/object:Gem::Requirement
119
- none: false
120
109
  requirements:
121
- - - ! '>='
110
+ - - ">="
122
111
  - !ruby/object:Gem::Version
123
112
  version: '0'
124
113
  required_rubygems_version: !ruby/object:Gem::Requirement
125
- none: false
126
114
  requirements:
127
- - - ! '>='
115
+ - - ">="
128
116
  - !ruby/object:Gem::Version
129
117
  version: '0'
130
118
  requirements: []
131
119
  rubyforge_project:
132
- rubygems_version: 1.8.23
120
+ rubygems_version: 2.2.2
133
121
  signing_key:
134
- specification_version: 3
122
+ specification_version: 4
135
123
  summary: Ruby wrapper for Yandex.Cleanweb spam detector
136
124
  test_files:
137
125
  - test/test_helper.rb