class AdtekioAdnetworks::Cost::Facebook

Public Instance Methods

campaign_costs(from, till) click to toggle source
# File lib/adtekio_adnetworks/importers/cost/facebook.rb, line 16
def campaign_costs(from, till)
  from.upto(till).map do |date|
    uri = Addressable::URI.
      parse("https://graph.facebook.com/act_#{credentials.account_id}/stats")
    uri.query_values = {
      :access_token => credentials.access_token,
      :start_time   => date.strftime("%s"),
      :end_time     => (date + 1).strftime("%s"),
    }
    (w = curlobj(uri.to_s)).perform
    JSON(w.body_str).merge(:date => date)
  end.flatten.group_by do |reports|
    reports[:date]
  end.map do |date, reports|
    {
      :date        => date,
      :impressions => reports.map{|v|v[:impressions]}.reduce(:+),
      :clicks      => reports.map{|v|v[:clicks]}.reduce(:+),
      :conversions => reports.map{|v|v[:conversions]}.reduce(:+),
      :amount      => reports.map{|v|v[:spent]}.reduce(:+)
    }
  end
end
curlobj(urlstr) click to toggle source
# File lib/adtekio_adnetworks/importers/cost/facebook.rb, line 8
def curlobj(urlstr)
  Curl::Easy.new.tap do |w|
    w.url = urlstr
    w.follow_location = false
    w.timeout = 10
  end
end