cleantalk 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 023627ab25949a050d5ecf967503261f3643698e
4
- data.tar.gz: ee19c974e4f91eead37a688bb6470d8dc582e26a
3
+ metadata.gz: f2c0b40a43f70a7403492f512e744c5d10c2d752
4
+ data.tar.gz: 50def2748310bcb6b902bac7e2e35a6fdad87991
5
5
  SHA512:
6
- metadata.gz: 4ef7d507a1002406a8ffa498ec6ffc42f617272bf6f2254152590c16f88931394b62c5dfff84072c8e85b66079b93cf0dcf425c776b9d82f9f183da325f5fba6
7
- data.tar.gz: 298a42c598ec3949a87a78f1926f0cc9401f6069568d29aeadc6e9cc1248fa9521904114d65d67b9fe3bef297e32b9150658629534b0398daea8f33276a025b5
6
+ metadata.gz: 8b162b23499da00a3db9154669bc4d0e248cab7c9c0b9d67c5782e6dd966d70d601b6f358814f5e1a92ccee5bc700b32a38f52d7edc85f0f1412e8945da3bbfb
7
+ data.tar.gz: fd9330e52a3ec636416cd62337d957d27ae34f770517836aee1da09e1827b717f775adda4fda6851ec1bdd8ba6a890d645a69ca1bb29de903ff45857c0bde4a8
@@ -1,31 +1,12 @@
1
- require 'net/http'
2
- require 'json'
3
-
4
1
  class Cleantalk
5
- class Request
6
- attr_accessor :all_headers, :last_error_no, :last_error_time, \
7
- :last_error_text, :message, :example, :auth_key, :agent, \
8
- :stoplist_check, :response_lang, :sender_ip, :sender_email, \
9
- :sender_nickname, :sender_info, :post_info, :allow_links, \
10
- :submit_time, :js_on, :tz, :feedback, :phone
11
-
12
- # Fill params with constructor
13
- def initialize(params = nil)
14
- unless params.nil?
15
- params.each do |key, value|
16
- instance_variable_set("@#{key}", value)
17
- end
18
- end
19
- end
20
- end
21
-
22
2
  #
23
3
  # Function checks whether it is possible to publish the message
24
4
  # @param CleantalkRequest $request
25
5
  # @return type
26
6
  #
27
7
  def is_allowed_message(request)
28
- return http_request('check_message', request)
8
+ request.method_name = 'check_message'
9
+ return request.http_request
29
10
  end
30
11
 
31
12
  #
@@ -34,21 +15,24 @@ class Cleantalk
34
15
  # @return type
35
16
  #
36
17
  def is_allowed_user(request)
37
- return http_request('check_newuser', request)
18
+ request.method_name = 'check_newuser'
19
+ return request.http_request
38
20
  end
39
21
 
40
- def http_request(method_name, request)
41
- uri = URI 'https://moderate.cleantalk.org/api2.0'
22
+ @@auth_key = nil
42
23
 
43
- form_data = {method_name: method_name}
44
- attrs = request.instance_variables
45
- attrs.each {|elem| form_data[elem.to_s.sub('@','')] = request.instance_variable_get(elem) }
24
+ def self.auth_key
25
+ @@auth_key
26
+ end
46
27
 
47
- req = Net::HTTP::Post.new(uri, {'Content-Type' =>'application/json'})
48
- req.body = form_data.to_json
49
- response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
50
- http.request(req)
51
- end
52
- return JSON.parse(response.entity)
28
+ def self.auth_key= value
29
+ @@auth_key = value
53
30
  end
54
31
  end
32
+
33
+ require 'cleantalk/request'
34
+ require 'cleantalk/check_newuser'
35
+ require 'cleantalk/check_message'
36
+ require 'cleantalk/result'
37
+ require 'cleantalk/check_newuser_result'
38
+ require 'cleantalk/check_message_result'
@@ -0,0 +1,9 @@
1
+ class Cleantalk::CheckMessage < Cleantalk::Request
2
+ attr_accessor :message
3
+
4
+ def result
5
+ @result ||= Cleantalk::CheckMessageResult.new(http_request_without_parse)
6
+ end
7
+
8
+ METHOD = "check_message".freeze
9
+ end
@@ -0,0 +1,3 @@
1
+ class Cleantalk::CheckMessageResult < Cleantalk::Result
2
+ attr_reader :stop_queue, :spam
3
+ end
@@ -0,0 +1,7 @@
1
+ class Cleantalk::CheckNewuser < Cleantalk::Request
2
+ def result
3
+ @result ||= Cleantalk::CheckNewuserResult.new(http_request_without_parse)
4
+ end
5
+
6
+ METHOD = "check_newuser".freeze
7
+ end
@@ -0,0 +1,2 @@
1
+ class Cleantalk::CheckNewuserResult < Cleantalk::Result
2
+ end
@@ -0,0 +1,72 @@
1
+ require 'net/http'
2
+ require 'json'
3
+
4
+ class Cleantalk::Request
5
+ attr_accessor :method_name, :auth_key, #required
6
+ :all_headers, :last_error_no, :last_error_time,
7
+ :last_error_text, :message, :example, :agent,
8
+ :stoplist_check, :response_lang, :sender_ip, :sender_email,
9
+ :sender_nickname, :sender_info, :post_info, :allow_links,
10
+ :submit_time, :js_on, :tz, :feedback, :phone
11
+
12
+ # Fill params with constructor
13
+ def initialize(params = {})
14
+ self.method_name, self.auth_key = params.delete(:method_name) || self.class::METHOD, nil
15
+ unless params.empty?
16
+ params.each do |key, value|
17
+ send("#{key}=", value)
18
+ end
19
+ end
20
+ end
21
+
22
+ def http_request_without_parse
23
+ valid?
24
+ form_data = self.instance_variables.inject({}) do |params, var_name|
25
+ param_key = var_name.to_s.sub('@','')
26
+ params[param_key] = send(param_key)
27
+ params
28
+ end
29
+
30
+ req = Net::HTTP::Post.new(API_URI, API_HEADERS)
31
+ req.body = JSON.generate(form_data)
32
+ response = Net::HTTP.start(API_URI.hostname, API_URI.port, use_ssl: true) do |http|
33
+ http.request(req)
34
+ end
35
+
36
+ response.entity
37
+ end
38
+
39
+ # Remote Call
40
+ def http_request
41
+ JSON.parse http_request_without_parse
42
+ end
43
+
44
+ def auth_key
45
+ @auth_key || Cleantalk.auth_key
46
+ end
47
+
48
+ def method_name= value
49
+ @method_name = self.class::METHOD || value
50
+ end
51
+
52
+ def result
53
+ @result ||= http_request
54
+ end
55
+
56
+ def allowed?
57
+ self.result.allow == 1
58
+ end
59
+
60
+ private
61
+
62
+ def valid?
63
+ [:auth_key, :method_name].freeze.each do |required_param|
64
+ raise Cleantalk::Request::BadParameters, "params `#{required_param}` is required for #{self.class}" if send(required_param).nil?
65
+ end
66
+ end
67
+
68
+ API_URI = URI.parse('https://moderate.cleantalk.org/api2.0').freeze
69
+ API_HEADERS = {'Content-Type' =>'application/json'}.freeze
70
+ METHOD = nil
71
+ class Cleantalk::Request::BadParameters < StandardError; end
72
+ end
@@ -0,0 +1,11 @@
1
+ class Cleantalk::Result
2
+ attr_reader :id, :version, :inactive, :js_disabled, :blacklisted,
3
+ :comment, :codes,:fast_submit, :account_status, :allow
4
+
5
+ def initialize body
6
+ body = body.is_a?(String) ? JSON.parse(body) : body
7
+ body.each do |meth, value|
8
+ instance_variable_set("@#{meth}", value) if respond_to? meth
9
+ end
10
+ end
11
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cleantalk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-05 00:00:00.000000000 Z
11
+ date: 2017-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -45,7 +45,13 @@ extensions: []
45
45
  extra_rdoc_files: []
46
46
  files:
47
47
  - lib/cleantalk.rb
48
- homepage: https://github.com/francois2metz/ruby-antispam
48
+ - lib/cleantalk/check_message.rb
49
+ - lib/cleantalk/check_message_result.rb
50
+ - lib/cleantalk/check_newuser.rb
51
+ - lib/cleantalk/check_newuser_result.rb
52
+ - lib/cleantalk/request.rb
53
+ - lib/cleantalk/result.rb
54
+ homepage: https://github.com/CleanTalk/ruby-antispam
49
55
  licenses:
50
56
  - MIT
51
57
  metadata: {}