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.
- data/lib/rakismet.rb +69 -0
- 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.
|
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
|