class AdtekioAdnetworks::Cost::Fractionalmedia
Constants
- API_ENDPOINT
Public Instance Methods
campaign_costs(from, till)
click to toggle source
# File lib/adtekio_adnetworks/importers/cost/fractionalmedia.rb, line 88 def campaign_costs(from, till) load_campaigns(from, till).map do |campaign| campaign[:metrics].map do |campaign_metric| { :campaign => campaign[:campaign], :adgroup => :banner, :ad => campaign[:ad], :date => campaign_metric[:date], :conversions => campaign_metric[:convs], :amount => campaign_metric[:revenue], :target_country => campaign[:country], :target_device => campaign[:platform] } end end.flatten end
http_call(method, login_required=false, params={})
click to toggle source
# File lib/adtekio_adnetworks/importers/cost/fractionalmedia.rb, line 10 def http_call(method, login_required=false, params={}) uri = Addressable::URI.parse("#{API_ENDPOINT}/#{method}.js") uri.query_values = params if login_required req = Net::HTTP::Get.new(uri.request_uri) req['Cookie'] = cookies.map(&:to_s).join('; ') if login_required else req = Net::HTTP::Post.new(uri.request_uri) end Net::HTTP.start(uri.host, uri.port, :use_ssl => true, :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http| http.request(req) end end
load_campaigns(from, till, id=25092)
click to toggle source
# File lib/adtekio_adnetworks/importers/cost/fractionalmedia.rb, line 59 def load_campaigns(from, till, id=25092) response = http_call(:get_all_camps, true, current: id) campaigns = JSON(response.body, :symbolize_names => true)[:camps] campaigns.map do |campaign_data| info = URI.unescape(campaign_data[:title]); name, country, platform, dump = info.split('~').map(&:strip).map(&:downcase) app, campaign, ad = parse_name(name, country, platform) { :id => campaign_data[:id], :app => app, :campaign => campaign, :ad => ad, :country => country, :platform => platform } end.compact.map do |campaign_data| campaign_data[:metrics] = load_compaign_metrics(from, till, campaign_data[:id]) campaign_data end end
load_compaign_metrics(from, till, id)
click to toggle source
# File lib/adtekio_adnetworks/importers/cost/fractionalmedia.rb, line 42 def load_compaign_metrics(from, till, id) response = http_call(:get_perf_hist, true, { campid: id, days: (Date.today - from).to_i }) json_data = JSON(response.body, :symbolize_names => true).try(:[], :data) || [] json_data.map do |metric| metric[:date] = Date.parse(metric[:date]) metric end.select do |metric| metric[:date] >= from and metric[:date] <= till end.reject do |metric| metric[:revenue] == 0 end end
parse_name(name, country, platform)
click to toggle source
# File lib/adtekio_adnetworks/importers/cost/fractionalmedia.rb, line 83 def parse_name(name, country, platform) app, ad = name.split('=') [app, "#{app}_#{country}_#{platform}", ad] end