yandex_cleanweb 0.0.6 → 0.0.7
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.
- checksums.yaml +7 -0
- data/.travis.yml +3 -5
- data/README.md +8 -0
- data/lib/yandex_cleanweb.rb +35 -0
- data/lib/yandex_cleanweb/version.rb +1 -1
- data/test/yandex_cleanweb_test.rb +37 -1
- data/yandex_cleanweb.gemspec +1 -1
- metadata +20 -32
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
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
|
data/lib/yandex_cleanweb.rb
CHANGED
@@ -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
|
|
@@ -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")
|
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
|
data/yandex_cleanweb.gemspec
CHANGED
@@ -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.
|
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:
|
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:
|
120
|
+
rubygems_version: 2.2.2
|
133
121
|
signing_key:
|
134
|
-
specification_version:
|
122
|
+
specification_version: 4
|
135
123
|
summary: Ruby wrapper for Yandex.Cleanweb spam detector
|
136
124
|
test_files:
|
137
125
|
- test/test_helper.rb
|