Class: Wiki2Go::Akismet

Inherits:
Object
  • Object
show all
Defined in:
lib/Wiki2Go/Akismet.rb

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(apiKey, blog) ⇒ Akismet

Create a new instance of the Akismet class

apiKey

Your Akismet API key

blog

The blog associated with your api key

33
34
35
36
37
# File 'lib/Wiki2Go/Akismet.rb', line 33

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

Instance Method Details

#check_comment(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.

129
130
131
# File 'lib/Wiki2Go/Akismet.rb', line 129

def check_comment(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

#set_proxy(proxyHost, proxyPort) ⇒ Object

Set proxy information

proxyHost

Hostname for the proxy to use

proxyPort

Port for the proxy

45
46
47
48
# File 'lib/Wiki2Go/Akismet.rb', line 45

def set_proxy(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.


141
142
143
# File 'lib/Wiki2Go/Akismet.rb', line 141

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.


135
136
137
# File 'lib/Wiki2Go/Akismet.rb', line 135

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

#verified_key?Boolean

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

Returns:

  • (Boolean)

62
63
64
# File 'lib/Wiki2Go/Akismet.rb', line 62

def verified_key?()
  return @verifiedKey
end

#verify_API_keyObject

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


51
52
53
54
55
56
57
58
59
# File 'lib/Wiki2Go/Akismet.rb', line 51

def verify_API_key()
  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