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 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