Module: Rakismet

Defined in:
lib/rakismet.rb,
lib/rakismet/model.rb,
lib/rakismet/railtie.rb,
lib/rakismet/version.rb,
lib/rakismet/middleware.rb

Defined Under Namespace

Modules: Model Classes: Middleware, Railtie, Request

Constant Summary collapse

Undefined =
Class.new(NameError)
VERSION =
"1.5.4"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.excluded_headersObject

Returns the value of attribute excluded_headers.



16
17
18
# File 'lib/rakismet.rb', line 16

def excluded_headers
  @excluded_headers
end

.hostObject

Returns the value of attribute host.



16
17
18
# File 'lib/rakismet.rb', line 16

def host
  @host
end

.keyObject

Returns the value of attribute key.



16
17
18
# File 'lib/rakismet.rb', line 16

def key
  @key
end

.proxy_hostObject

Returns the value of attribute proxy_host.



16
17
18
# File 'lib/rakismet.rb', line 16

def proxy_host
  @proxy_host
end

.proxy_portObject

Returns the value of attribute proxy_port.



16
17
18
# File 'lib/rakismet.rb', line 16

def proxy_port
  @proxy_port
end

.testObject

Returns the value of attribute test.



16
17
18
# File 'lib/rakismet.rb', line 16

def test
  @test
end

.urlObject

Returns the value of attribute url.



16
17
18
# File 'lib/rakismet.rb', line 16

def url
  @url
end

Class Method Details

.akismet_call(function, args = {}) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/rakismet.rb', line 68

def akismet_call(function, args={})
  validate_config
  args.merge!(:blog => Rakismet.url, :is_test => Rakismet.test_mode)
  akismet = URI.parse(call_url(function))
  response = Net::HTTP.start(akismet.host, use_ssl: true, p_addr: proxy_host, p_port: proxy_port) do |http|
    params = args.map do |k,v|
      param = v.class < String ? v.to_str : v.to_s # for ActiveSupport::SafeBuffer and Nil, respectively
      "#{k}=#{CGI.escape(param)}"
    end
    http.post(akismet.path, params.join('&'), Rakismet.headers)
  end
  response.body
end

.clear_requestObject



38
39
40
# File 'lib/rakismet.rb', line 38

def clear_request
  @request = Request.new
end

.headersObject



42
43
44
45
46
47
48
49
50
51
52
# File 'lib/rakismet.rb', line 42

def headers
  @headers ||= begin
    user_agent = "Rakismet/#{Rakismet::VERSION}"

    if defined?(Rails) && Rails.respond_to?(:version)
      user_agent = "Rails/#{Rails.version} | " + user_agent
    end

    { 'User-Agent' => user_agent, 'Content-Type' => 'application/x-www-form-urlencoded' }
  end
end

.requestObject



22
23
24
# File 'lib/rakismet.rb', line 22

def request
  @request ||= Request.new
end

.set_request_vars(env) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/rakismet.rb', line 30

def set_request_vars(env)
  request.user_ip, request.user_agent, request.referrer =
    env['REMOTE_ADDR'], env['HTTP_USER_AGENT'], env['HTTP_REFERER']
    
  # Collect all CGI-style HTTP_ headers except cookies for privacy..
  request.http_headers = env.select { |k,v| k =~ /^HTTP_/ }.reject { |k,v| excluded_headers.include? k }
end

.valid_key?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/rakismet.rb', line 64

def valid_key?
  @valid_key == true
end

.validate_keyObject



54
55
56
57
58
59
60
61
62
# File 'lib/rakismet.rb', line 54

def validate_key
  validate_config
  akismet = URI.parse(verify_url)
  response = Net::HTTP.start(akismet.host, use_ssl: true, p_addr: proxy_host, p_port: proxy_port) do |http|
    data = "key=#{Rakismet.key}&blog=#{Rakismet.url}"
    http.post(akismet.path, data, Rakismet.headers)
  end
  @valid_key = (response.body == 'valid')
end