class AdtekioAdnetworks::BasePostbackClass

Attributes

event[R]
netcfg[R]
params[R]
user[R]

Public Class Methods

new(event, user, netcfg, params = nil) click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 57
def initialize(event, user, netcfg, params = nil)
  @event  = event
  @params = params || (event && event.params)
  @user   = user
  @netcfg = netcfg
end

Public Instance Methods

cfg_to_url(cfg) click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 97
def cfg_to_url(cfg)
  return unless should_handle?(cfg)

  header = either_hash_or_symbol_to_string(cfg.header)
  body   = either_hash_or_symbol_to_string(cfg.post)

  urlparams = ( (cfg.params.is_a?(Hash) && cfg.params) ||
                cfg.params.is_a?(Symbol) && send(cfg.params) ) || {}

  uri = Addressable::URI.parse(cfg.url)
  uri.query_values = urlparams unless urlparams.empty?
  url = CGI.unescape(uri.to_s)

  parsed_header = CGI::parse(parse_string(header) || "")
  parsed_header.each { |key, value| parsed_header[key] = value.first }

  { :url    => parse_string(url),
    :body   => parse_string(body),
    :header => parsed_header}
end
contains_eruby?(val) click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 72
def contains_eruby?(val)
  val && !!(val =~ /@\{.*\}@/ || val =~ /<%.*%>/m)
end
either_hash_or_symbol_to_string(val) click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 85
def either_hash_or_symbol_to_string(val)
  if val.is_a?(Hash)
    uri = Addressable::URI.new
    uri.query_values = val
    CGI.unescape(uri.to_s).gsub(/^[?]/,'')
  elsif val.is_a?(Symbol)
    send(val)
  else
    val.to_s
  end
end
muidify(val) click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 68
def muidify(val)
  Base64.encode64(MD5.md5(val).digest).tr("+/=", "-_\n").strip
end
parse_string(str) click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 76
def parse_string(str)
  contains_eruby?(str) ? CGIEruby.new(str).result(binding) : str
end
sha1(value) click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 64
def sha1(value)
  Digest::SHA1.hexdigest(value || "")
end
should_handle?(cfg) click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 80
def should_handle?(cfg)
  cfg.check.nil? ||
    !!(cfg.check.is_a?(Symbol) ? send(cfg.check) : eval(cfg.check))
end