Sha256: 41f06ce2b4aea8c7b49de43213311144617aac6a8609f3c2bb90a8a44a4c7aef

Contents?: true

Size: 1.23 KB

Versions: 2

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true
require 'soapy_bing/ads/reports'

module SoapyBing
  class Ads
    attr_reader :oauth_credentials, :account

    def initialize(oauth: {}, account: {})
      @oauth_credentials = OauthCredentials.new(oauth)
      @account = Account.new(account)
    end

    def campaign_performance_report(date_start:, date_end:, settings: {})
      Reports::CampaignPerformanceReport.new(
        oauth_credentials: oauth_credentials,
        account: account,
        date_start: date_start,
        date_end: date_end,
        settings: settings
      )
    end

    def get_ad_groups_by_campaign_id(campaign_id)
      do_request(Soap::Request::GetAdGroupsByCampaignIdRequest, campaign_id: campaign_id)
    end

    def get_ads_by_ad_group_id(ad_group_id)
      do_request(Soap::Request::GetAdsByAdGroupIdRequest, ad_group_id: ad_group_id)
    end

    def get_targets_by_campaign_ids(campaign_ids)
      do_request(Soap::Request::GetTargetsByCampaignIdsRequest, campaign_ids: campaign_ids)
    end

    private

    def do_request(klass, options)
      klass.new(context: {
        account: account,
        authentication_token: oauth_credentials.access_token
      }.merge(options))
        .perform
        .payload
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
soapy_bing-0.2.0 lib/soapy_bing/ads.rb
soapy_bing-0.1.0 lib/soapy_bing/ads.rb