class Formidable::Attempt

Public Class Methods

parse(cookies, form, valid) click to toggle source
# File lib/formidable/attempt.rb, line 5
def parse(cookies, form, valid)
  hash = Digest::MD5.hexdigest("#{Config::api_key}.#{form}")

  cookie = cookies["formidable"]
  cookie_data = cookie ? Marshal.load(cookie) : {} rescue {}

  cookie_data[hash] ||= 1
  attempt = cookie_data[hash]

  unless valid
    cookie_data[hash] += 1
    save_cookie(cookies, cookie_data)
  else
    cookie_data.delete hash
    if cookie_data.empty?
      cookies.delete "formidable"
    else
      save_cookie(cookies, cookie_data)
    end
  end

  attempt
end

Private Class Methods