class Keypic::Proxy

Attributes

env[R]

Public Class Methods

new(env) click to toggle source
# File lib/keypic/proxy.rb, line 5
def initialize(env)
  @env = env
end

Public Instance Methods

check!() click to toggle source
# File lib/keypic/proxy.rb, line 47
def check!
  body = Keypic::Client.new(:check_form).invoke

  if body && body["status"] == 'response'
    body["report"]
  end
end
clear!() click to toggle source
# File lib/keypic/proxy.rb, line 55
def clear!
  session.delete("keypic.token")
  @token = nil
end
client_params() click to toggle source
# File lib/keypic/proxy.rb, line 34
def client_params
  {
    'ServerName' => env['SERVER_NAME'],
    'ClientIP' => env['REMOTE_ADDR'],
    'ClientUserAgent' => env['HTTP_USER_AGENT'],
    'ClientAccept' => env['HTTP_ACCEPT'],
    'ClientAcceptEncoding' => env['HTTP_ACCEPT_ENCODING'],
    'ClientAcceptLanguage' => env['HTTP_ACCEPT_LANGUAGE'],
    'ClientAcceptCharset' => env['HTTP_ACCEPT_CHARSET'],
    'ClientHttpReferer' => env['HTTP_REFERER']
  }
end
fetch_rank(options = {}) click to toggle source
# File lib/keypic/proxy.rb, line 21
def fetch_rank(options = {})
  params = normalize_message(options)
  params = { 'Token' => token }.merge(client_params).merge(params)

  body = Keypic::Client.new(:validate).invoke(params)

  if body && body["status"] == 'response'
    body["spam"].to_f
  else
    0.0
  end
end
session() click to toggle source
# File lib/keypic/proxy.rb, line 60
def session
  env["rack.session"] || {}
end
spam?(options = {}, rank = 80) click to toggle source
# File lib/keypic/proxy.rb, line 17
def spam?(options = {}, rank = 80)
  !valid?(options, rank)
end
token() click to toggle source
# File lib/keypic/proxy.rb, line 9
def token
  @token ||= (fetch_token_from_session || fetch_token_form_server)
end
valid?(options = {}, rank = 80) click to toggle source
# File lib/keypic/proxy.rb, line 13
def valid?(options = {}, rank = 80)
  fetch_rank(options) >= rank.to_f
end

Protected Instance Methods

fetch_token_form_server() click to toggle source
# File lib/keypic/proxy.rb, line 70
def fetch_token_form_server
  params = { 'Quantity' => Keypic.configuration.quantity }.merge(client_params)

  body = Keypic::Client.new(:new_token).invoke(params)

  if body && body["status"] == 'new_token'
    body["Token"]
  end
end
fetch_token_from_session() click to toggle source
# File lib/keypic/proxy.rb, line 66
def fetch_token_from_session
  session["keypic.token"]
end
normalize_message(options) click to toggle source
# File lib/keypic/proxy.rb, line 80
def normalize_message(options)
  params = options.symbolize_keys

  {
    "ClientEmailAddress" => params[:email],
    "ClientUsername" => params[:name],
    "ClientMessage" => params[:message]
  }
end