class RubySpamAssassin::SpamClient
Public Class Methods
new(host="localhost", port=783, timeout=5)
click to toggle source
# File lib/RubySpamAssassin.rb, line 25 def initialize(host="localhost", port=783, timeout=5) @port = port @host = host @timeout =timeout @socket = TCPSocket.open(@host, @port) end
Public Instance Methods
check(message)
click to toggle source
# File lib/RubySpamAssassin.rb, line 42 def check(message) protocol_response = send_message("CHECK", message) result = process_headers protocol_response[0...2] end
ping()
click to toggle source
# File lib/RubySpamAssassin.rb, line 61 def ping protocol_response = send_message("PING", message) result = process_headers protocol_response[0] end
reconnect()
click to toggle source
# File lib/RubySpamAssassin.rb, line 32 def reconnect @socket = @socket || TCPSocket.open(@host, @port) end
report(message)
click to toggle source
# File lib/RubySpamAssassin.rb, line 47 def report(message) protocol_response = send_message("REPORT", message) result = process_headers protocol_response[0...2] result.report = protocol_response[3..-1].join end
Also aliased as: process
report_ifspam(message)
click to toggle source
# File lib/RubySpamAssassin.rb, line 53 def report_ifspam(message) result = report(message).spam? end
send_symbol(message)
click to toggle source
# File lib/RubySpamAssassin.rb, line 36 def send_symbol(message) protocol_response = send_message("SYMBOLS", message) result = process_headers protocol_response[0...2] result.tags = protocol_response[3...-1].join(" ").split(',') end
skip()
click to toggle source
# File lib/RubySpamAssassin.rb, line 57 def skip protocol_response = send_message("SKIP", message) end
Private Instance Methods
process_headers(headers)
click to toggle source
# File lib/RubySpamAssassin.rb, line 81 def process_headers(headers) result = SpamResult.new headers.each do |line| case line.chomp when /(.+)\/(.+) (.+) (.+)/ then result.response_version = $2 result.response_code = $3 result.response_message = $4 when /^Spam: (.+) ; (.+) . (.+)$/ then result.score = $2 result.spam = $1 result.threshold = $3 when /Content-length: (.+)/ then result.content_length = $1 end end result end
send_message(command, message)
click to toggle source
# File lib/RubySpamAssassin.rb, line 69 def send_message(command, message) length = message.length @socket.write(command + " SPAMC/1.2\r\n") @socket.write("Content-length: " + length.to_s + "\r\n\r\n") @socket.write(message) @socket.shutdown(1) #have to shutdown sending side to get response response = @socket.readlines @socket.close #might as well close it now response end