inspiredigital-rakismet 0.3.1 → 0.3.2

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.
Files changed (2) hide show
  1. data/lib/rakismet.rb +69 -0
  2. metadata +2 -1
data/lib/rakismet.rb ADDED
@@ -0,0 +1,69 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+
4
+ module Rakismet
5
+ module Version
6
+ Major = '0'
7
+ Minor = '3'
8
+ Tiny = '2'
9
+ end
10
+
11
+ def self.version
12
+ [Version::Major, Version::Minor, Version::Tiny].join('.')
13
+ end
14
+
15
+ class Base
16
+ cattr_accessor :valid_key, :rakismet_binding
17
+
18
+ class << self
19
+ def validate_key
20
+ validate_constants
21
+ akismet = URI.parse(verify_url)
22
+ _, valid = Net::HTTP.start(akismet.host) do |http|
23
+ data = "key=#{Rakismet::KEY}&blog=#{Rakismet::URL}"
24
+ http.post(akismet.path, data, Rakismet::HEADERS)
25
+ end
26
+ self.valid_key = (valid == 'valid')
27
+ end
28
+
29
+ def valid_key?
30
+ @@valid_key == true
31
+ end
32
+
33
+ def akismet_call(function, args={})
34
+ validate_constants
35
+ args.merge!(:blog => Rakismet::URL)
36
+ akismet = URI.parse(call_url(function))
37
+ _, response = Net::HTTP.start(akismet.host) do |http|
38
+ data = args.map { |k,v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
39
+ http.post(akismet.path, data, Rakismet::HEADERS)
40
+ end
41
+ response
42
+ end
43
+
44
+ protected
45
+
46
+ def verify_url
47
+ "http://#{Rakismet::HOST}/1.1/verify-key"
48
+ end
49
+
50
+ def call_url(function)
51
+ "http://#{Rakismet::KEY}.#{Rakismet::HOST}/1.1/#{function}"
52
+ end
53
+
54
+ def validate_constants
55
+ raise Undefined, "Rakismet::KEY is not defined" if Rakismet::KEY.blank?
56
+ raise Undefined, "Rakismet::URL is not defined" if Rakismet::URL.blank?
57
+ raise Undefined, "Rakismet::HOST is not defined" if Rakismet::HOST.blank?
58
+ end
59
+ end
60
+ end
61
+
62
+ Undefined = Class.new(NameError)
63
+ NoBinding = Class.new(NameError)
64
+
65
+ HEADERS = {
66
+ 'User-Agent' => "Rails/#{Rails::VERSION::STRING} | Rakismet/#{Rakismet.version}",
67
+ 'Content-Type' => 'application/x-www-form-urlencoded'
68
+ }
69
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inspiredigital-rakismet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh French
@@ -26,6 +26,7 @@ files:
26
26
  - CHANGELOG
27
27
  - README.md
28
28
  - rails/init.rb
29
+ - lib/rakismet.rb
29
30
  - lib/rakismet
30
31
  - lib/rakismet/controller_extensions.rb
31
32
  - lib/rakismet/model_extensions.rb