module AdtekioAdnetworks::BasePostbacks
Public Class Methods
cfg_to_description(cfg)
click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 159 def self.cfg_to_description(cfg) url = if cfg.params.is_a?(Hash) uri = Addressable::URI.parse(cfg.url) uri.query_values = cfg.params unless cfg.params.empty? CGI.unescape(uri.to_s) else "%s?%s" % [cfg.url, cfg.params.to_s] end { :url => url, :user_required => cfg.user_required || false, :store_user => cfg.store_user || false } end
define_network_config() { || ... }
click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 130 def self.define_network_config(&block) @network_config = yield self.class_eval do def self.netcfg @network_config end end end
define_postback_for(platform, type) { || ... }
click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 139 def self.define_postback_for(platform, type, &block) cfg = OpenStruct.new(yield) postbacks[platform] << type.to_sym pbcfg[platform][type.to_sym] << cfg self.send(:define_method, type, Proc.new do |platform| pbc = self.class.instance_variable_get("@pbcfg") pbc[platform.to_sym][type.to_sym].map do |cfg| cfg_to_url(cfg) end.compact end) self.class.send(:define_method, type, Proc.new do |platform| @pbcfg[platform.to_sym][type.to_sym].map do |cfg| cfg_to_description(cfg) end end) end
included(klz)
click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 120 def self.included(klz) klz.class_eval do def self.postbacks @postbacks ||= Hash.new{ |k,v| k[v] = [] } end def self.pbcfg @pbcfg ||= Hash.new{ |k,v| k[v] = Hash.new{ |k,v| k[v] = [] }} end def self.define_network_config(&block) @network_config = yield self.class_eval do def self.netcfg @network_config end end end def self.define_postback_for(platform, type, &block) cfg = OpenStruct.new(yield) postbacks[platform] << type.to_sym pbcfg[platform][type.to_sym] << cfg self.send(:define_method, type, Proc.new do |platform| pbc = self.class.instance_variable_get("@pbcfg") pbc[platform.to_sym][type.to_sym].map do |cfg| cfg_to_url(cfg) end.compact end) self.class.send(:define_method, type, Proc.new do |platform| @pbcfg[platform.to_sym][type.to_sym].map do |cfg| cfg_to_description(cfg) end end) end def self.cfg_to_description(cfg) url = if cfg.params.is_a?(Hash) uri = Addressable::URI.parse(cfg.url) uri.query_values = cfg.params unless cfg.params.empty? CGI.unescape(uri.to_s) else "%s?%s" % [cfg.url, cfg.params.to_s] end { :url => url, :user_required => cfg.user_required || false, :store_user => cfg.store_user || false } end def self.user_required?(event, platform) self.send(event, platform).any? { |desc| desc[:user_required] } end def self.store_user?(event, platform) self.send(event, platform).any? { |desc| desc[:store_user] } end def self.network name.to_s.sub(/^.+::([^:]+)$/,'\1').snakecase.to_sym end end Postbacks.register(klz) end
netcfg()
click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 133 def self.netcfg @network_config end
network()
click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 181 def self.network name.to_s.sub(/^.+::([^:]+)$/,'\1').snakecase.to_sym end
pbcfg()
click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 126 def self.pbcfg @pbcfg ||= Hash.new{ |k,v| k[v] = Hash.new{ |k,v| k[v] = [] }} end
postbacks()
click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 122 def self.postbacks @postbacks ||= Hash.new{ |k,v| k[v] = [] } end
store_user?(event, platform)
click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 177 def self.store_user?(event, platform) self.send(event, platform).any? { |desc| desc[:store_user] } end
user_required?(event, platform)
click to toggle source
# File lib/adtekio_adnetworks/postbacks.rb, line 173 def self.user_required?(event, platform) self.send(event, platform).any? { |desc| desc[:user_required] } end