Class: Akismet

Inherits:
Object
  • Object
show all
Defined in:
lib/hobix/plugin/akismet.rb

Overview

Akismet

Author

David Czarnecki

Copyright

Copyright © 2005 - David Czarnecki

License

BSD

Modified by Dieter Komendera, Sparkling Studios:

append blog= to data string (Akismet said it is required)
changed require 'net/HTTP' to require 'net/http' (to work for me unter GNU/Linux)

Constant Summary collapse

STANDARD_HEADERS =
{
  'User-Agent' => 'Akismet Ruby API/1.0',
  'Content-Type' => 'application/x-www-form-urlencoded'
}

Instance Method Summary collapse

Constructor Details

#initialize(blog, apiKey) ⇒ Akismet

Create a new instance of the Akismet class

apiKey

Your Akismet API key

blog

The blog associated with your api key


86
87
88
89
90
# File 'lib/hobix/plugin/akismet.rb', line 86

def initialize(blog, apiKey)
  @apiKey = apiKey
  @blog = blog
  @verifiedKey = false
end

Instance Method Details

#commentCheck(user_ip, user_agent, referrer, permalink, comment_type, comment_author, comment_author_email, comment_author_url, comment_content, other) ⇒ Object

This is basically the core of everything. This call takes a number of arguments and characteristics about the submitted content and then returns a thumbs up or thumbs down. Almost everything is optional, but performance can drop dramatically if you exclude certain elements.

user_ip (required)

IP address of the comment submitter.

user_agent (required)

User agent information.

referrer (note spelling)

The content of the HTTP_REFERER header should be sent here.

permalink

The permanent location of the entry the comment was submitted to.

comment_type

May be blank, comment, trackback, pingback, or a made up value like "registration".

comment_author

Submitted name with the comment

comment_author_email

Submitted email address

comment_author_url

Commenter URL.

comment_content

The content that was submitted.

Other server enviroment variables

In PHP there is an array of enviroment variables called $_SERVER which contains information about the web server itself as well as a key/value for every HTTP header sent with the request. This data is highly useful to Akismet as how the submited content interacts with the server can be very telling, so please include as much information as possible.


181
182
183
# File 'lib/hobix/plugin/akismet.rb', line 181

def commentCheck(user_ip, user_agent, referrer, permalink, comment_type, comment_author, comment_author_email, comment_author_url, comment_content, other)
  return callAkismet('comment-check', user_ip, user_agent, referrer, permalink, comment_type, comment_author, comment_author_email, comment_author_url, comment_content, other)
end

#hasVerifiedKeyObject

Returns true if the API key has been verified, false otherwise



115
116
117
# File 'lib/hobix/plugin/akismet.rb', line 115

def hasVerifiedKey()
  return @verifiedKey
end

#setProxy(proxyHost, proxyPort) ⇒ Object

Set proxy information

proxyHost

Hostname for the proxy to use

proxyPort

Port for the proxy


98
99
100
101
# File 'lib/hobix/plugin/akismet.rb', line 98

def setProxy(proxyHost, proxyPort) 
  @proxyPort = proxyPort
  @proxyHost = proxyHost
end

#submitHam(user_ip, user_agent, referrer, permalink, comment_type, comment_author, comment_author_email, comment_author_url, comment_content, other) ⇒ Object

This call is intended for the marking of false positives, things that were incorrectly marked as spam. It takes identical arguments as comment check and submit spam. The call parameters are the same as for the #commentCheck method.



193
194
195
# File 'lib/hobix/plugin/akismet.rb', line 193

def submitHam(user_ip, user_agent, referrer, permalink, comment_type, comment_author, comment_author_email, comment_author_url, comment_content, other)
  callAkismet('submit-ham', user_ip, user_agent, referrer, permalink, comment_type, comment_author, comment_author_email, comment_author_url, comment_content, other)
end

#submitSpam(user_ip, user_agent, referrer, permalink, comment_type, comment_author, comment_author_email, comment_author_url, comment_content, other) ⇒ Object

This call is for submitting comments that weren’t marked as spam but should have been. It takes identical arguments as comment check. The call parameters are the same as for the #commentCheck method.



187
188
189
# File 'lib/hobix/plugin/akismet.rb', line 187

def submitSpam(user_ip, user_agent, referrer, permalink, comment_type, comment_author, comment_author_email, comment_author_url, comment_content, other)
  callAkismet('submit-spam', user_ip, user_agent, referrer, permalink, comment_type, comment_author, comment_author_email, comment_author_url, comment_content, other)
end

#verifyAPIKeyObject

Call to check and verify your API key. You may then call the #hasVerifiedKey method to see if your key has been validated.



104
105
106
107
108
109
110
111
112
# File 'lib/hobix/plugin/akismet.rb', line 104

def verifyAPIKey()
  http = Net::HTTP.new('rest.akismet.com', 80, @proxyHost, @proxyPort)
  path = '/1.1/verify-key'
  
  data="key=#{@apiKey}&blog=#{@blog}"
  
  resp, data = http.post(path, data, STANDARD_HEADERS)
  @verifiedKey = (data == "valid")
end