Skip to content

Commit

Permalink
DFP API v201311 support
Browse files Browse the repository at this point in the history
  • Loading branch information
dklimkin committed Nov 26, 2013
1 parent 3c71e04 commit 9b4b459
Show file tree
Hide file tree
Showing 235 changed files with 18,304 additions and 10 deletions.
2 changes: 2 additions & 0 deletions dfp_api/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
0.7.1:
- Added support and examples for v201311.
- Require google-ads-common 0.9.4 or later from now on.

0.7.0:
- Added support and examples for v201308.
Expand Down
4 changes: 2 additions & 2 deletions dfp_api/README
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ Once the library object is created you can request services with a 'service'
method:
user_service = dfp.service(:UserService, <API_VERSION>)

where <API_VERSION> is required version of DFP API as symbol, e.g. :v201308.
where <API_VERSION> is required version of DFP API as symbol, e.g. :v201311.

Then you should be able to execute service methods:

Expand Down Expand Up @@ -150,7 +150,7 @@ Examples can be run by executing by running:

from the "examples/<version>/<service_name>" directory i.e.

$ cd examples/v201308/user_service
$ cd examples/v201311/user_service
$ ruby get_all_users.rb

Some examples require modification to be functional, like create_order example
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
#!/usr/bin/env ruby
# Encoding: utf-8
#
# Author:: [email protected] (David Torres)
#
# Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
#
# License:: Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This example creates new activity groups. To determine which activity groups
# exist, run get_all_activity_groups.rb.
#
# Tags: ActivityGroupService.createActivityGroups

require 'dfp_api'

API_VERSION = :v201311

def create_activity_groups()
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
dfp = DfpApi::Api.new

# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
# the configuration file or provide your own logger:
# dfp.logger = Logger.new('dfp_xml.log')

# Get the ActivityGroupService.
activity_group_service = dfp.service(:ActivityGroupService, API_VERSION)

# Set the ID of the advertiser company this activity group is associated
# with.
advertiser_company_id = 'INSERT_ADVERTISER_COMPANY_ID_HERE';

# Create a short-term activity group.
short_term_activity_group = {
:name => 'Short-term activity group',
:company_ids => [advertiser_company_id],
:clicks_lookback => 1,
:impressions_lookback => 1
}

# Create a long-term activity group.
long_term_activity_group = {
:name => 'Long-term activity group',
:company_ids => [advertiser_company_id],
:clicks_lookback => 30,
:impressions_lookback => 30
}

# Create the activity groups on the server.
return_activity_groups = activity_group_service.create_activity_groups([
short_term_activity_group, long_term_activity_group])

if return_activity_groups
return_activity_groups.each do |activity_group|
puts "An activity group with ID: %d and name: %s was created." %
[activity_group[:id], activity_group[:name]]
end
else
raise 'No activity groups were created.'
end
end

if __FILE__ == $0
begin
create_activity_groups()

# HTTP errors.
rescue AdsCommon::Errors::HttpError => e
puts "HTTP Error: %s" % e

# API errors.
rescue DfpApi::Errors::ApiException => e
puts "Message: %s" % e.message
puts 'Errors:'
e.errors.each_with_index do |error, index|
puts "\tError [%d]:" % (index + 1)
error.each do |field, value|
puts "\t\t%s: %s" % [field, value]
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
#!/usr/bin/env ruby
# Encoding: utf-8
#
# Author:: [email protected] (David Torres)
#
# Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
#
# License:: Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This example gets all active activity groups. To create activity groups,
# run create_activity_groups.rb.
#
# Tags: ActivityGroupService.getActivityGroupsByStatement

require 'dfp_api'

API_VERSION = :v201311
PAGE_SIZE = 500

def get_active_activity_groups()
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
dfp = DfpApi::Api.new

# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
# the configuration file or provide your own logger:
# dfp.logger = Logger.new('dfp_xml.log')

# Get the ActivityGroupService.
activity_group_service = dfp.service(:ActivityGroupService, API_VERSION)

# Define initial values.
offset = 0
page = {}

begin
# Create statement for one page with current offset.
statement = {
:query => 'WHERE status = :status ORDER BY id LIMIT %d OFFSET %d' %
[PAGE_SIZE, offset],
:values => [
{:key => 'status',
:value => {:value => 'ACTIVE', :xsi_type => 'TextValue'}}
]
}

# Get activity groups by statement.
page = activity_group_service.get_activity_groups_by_statement(statement)

if page[:results]
# Increase query offset by page size.
offset += PAGE_SIZE

# Get the start index for printout.
start_index = page[:start_index]

# Print details about each content object in results page.
page[:results].each_with_index do |activity_group, index|
puts "%d) Activity group with ID: %d, name: %s." % [index + start_index,
activity_group[:id], activity_group[:name]]
end
end
end while offset < page[:total_result_set_size]

# Print a footer
if page.include?(:total_result_set_size)
puts "Total number of results: %d" % page[:total_result_set_size]
end
end

if __FILE__ == $0
begin
get_active_activity_groups()

# HTTP errors.
rescue AdsCommon::Errors::HttpError => e
puts "HTTP Error: %s" % e

# API errors.
rescue DfpApi::Errors::ApiException => e
puts "Message: %s" % e.message
puts 'Errors:'
e.errors.each_with_index do |error, index|
puts "\tError [%d]:" % (index + 1)
error.each do |field, value|
puts "\t\t%s: %s" % [field, value]
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
#!/usr/bin/env ruby
# Encoding: utf-8
#
# Author:: [email protected] (David Torres)
#
# Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
#
# License:: Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This example gets all activity groups. To create activity groups,
# run create_activity_groups.rb.
#
# Tags: ActivityGroupService.getActivityGroupsByStatement

require 'dfp_api'

API_VERSION = :v201311
PAGE_SIZE = 500

def get_all_activity_groups()
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
dfp = DfpApi::Api.new

# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
# the configuration file or provide your own logger:
# dfp.logger = Logger.new('dfp_xml.log')

# Get the ActivityGroupService.
activity_group_service = dfp.service(:ActivityGroupService, API_VERSION)

# Define initial values.
offset = 0
page = {}

begin
# Create statement for one page with current offset.
statement = {
:query => 'ORDER BY id LIMIT %d OFFSET %d' % [PAGE_SIZE, offset],
}

# Get activity groups by statement.
page = activity_group_service.get_activity_groups_by_statement(statement)

if page[:results]
# Increase query offset by page size.
offset += PAGE_SIZE

# Get the start index for printout.
start_index = page[:start_index]

# Print details about each content object in results page.
page[:results].each_with_index do |activity_group, index|
puts "%d) Activity group with ID: %d, name: %s." % [index + start_index,
activity_group[:id], activity_group[:name]]
end
end
end while offset < page[:total_result_set_size]

# Print a footer
if page.include?(:total_result_set_size)
puts "Total number of results: %d" % page[:total_result_set_size]
end
end

if __FILE__ == $0
begin
get_all_activity_groups()

# HTTP errors.
rescue AdsCommon::Errors::HttpError => e
puts "HTTP Error: %s" % e

# API errors.
rescue DfpApi::Errors::ApiException => e
puts "Message: %s" % e.message
puts 'Errors:'
e.errors.each_with_index do |error, index|
puts "\tError [%d]:" % (index + 1)
error.each do |field, value|
puts "\t\t%s: %s" % [field, value]
end
end
end
end
Loading

0 comments on commit 9b4b459

Please sign in to comment.