inspiredigital-rakismet 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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