for details:# Copyright (c) 2007 Jean-Claude Wippler
# http://www.opensource.org/licenses/mit-license.php
package provide akismet 0.1
package require http
# see http://akismet.com/development/api/
#
# blog (required)
# The front page or home URL of the instance making the request. For a blog
# or wiki this would be the front page. Note: Must be a full URI, including
# http://.
#
# 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 environment variables
# In PHP there is an array of environment 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.
namespace eval akismet {
variable key
variable blog
variable app
proc setup {key_ blog_ {app_ ""}} {
variable key $key_
variable blog $blog_
variable app $app_
if {[_connect verify-key "" key $key] ne "valid"} {
error "Akismet: invalid key"
}
}
proc comment-check {uip uagent args} {
variable key
_connect comment-check $key. user_ip $uip user_agent $uagent {*}$args
}
proc submit-spam {uip uagent args} {
variable key
_connect submit-spam $key. user_ip $uip user_agent $uagent {*}$args
}
proc submit-ham {uip uagent args} {
variable key
_connect submit-ham $key. user_ip $uip user_agent $uagent {*}$args
}
namespace export *
namespace ensemble create
proc _connect {type prefix args} {
variable blog
variable app
set ver [package require akismet]
set token [::http::geturl http://${prefix}rest.akismet.com/1.1/$type \
-headers [list User-Agent "$app | akismet.tcl/$ver"] \
-query [http::formatQuery blog $blog {*}$args]]
set ncode [http::ncode $token]
set data [http::data $token]
http::cleanup $token
if {$ncode != 200} { error "Akismet: $type failed (code $ncode)" }
return $data
}
}It's quite effective at tagging things we all are tired of having to clean up...
LV Too bad something like this couldn't be plugged into the Wiki...jcw - Don't see why not...
jdc Is it possible to give a usage example? I've tried the following but always get the true return, indicating my string is spam (setup completed without errors):
set ip <my ip address> set ua "Mozilla/5.0" set rt [akismet::comment-check $ip $ua comment_content "An example of using this packages."] puts "Check: $rt"

