Ad Exchange Buyer API v1 code samples.
Reviewed in http://codereview.appspot.com/5711045/.
Index: samples/adexchangebuyer/client_secrets.json
===================================================================
new file mode 100644
diff --git a/samples/adexchangebuyer/submit_creative.py b/samples/adexchangebuyer/submit_creative.py
new file mode 100644
index 0000000..1052eae
--- /dev/null
+++ b/samples/adexchangebuyer/submit_creative.py
@@ -0,0 +1,78 @@
+#!/usr/bin/python
+#
+# Copyright 2012 Google Inc. All Rights Reserved.
+#
+# 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 illustrates how to submit a new creative for its verification.
+
+Tags: creatives.insert
+"""
+
+__author__ = 'david.t@google.com (David Torres)'
+
+import pprint
+import sys
+import gflags
+from oauth2client.client import AccessTokenRefreshError
+import sample_utils
+
+# Declare command-line flags, and set them as required.
+gflags.DEFINE_string('account_id', None,
+ 'The ID of the account to which submit the creative',
+ short_name='a')
+gflags.MarkFlagAsRequired('account_id')
+gflags.DEFINE_string('adgroup_id', None,
+ 'The pretargeting adgroup id that this creative will be '
+ 'associated with',
+ short_name='g')
+gflags.MarkFlagAsRequired('adgroup_id')
+gflags.DEFINE_string('buyer_creative_id', None,
+ 'A buyer-specific id identifying the creative in this ad',
+ short_name='c')
+gflags.MarkFlagAsRequired('buyer_creative_id')
+
+
+def main(argv):
+ sample_utils.process_flags(argv)
+ account_id = gflags.FLAGS.account_id
+ adgroup_id = gflags.FLAGS.adgroup_id
+ buyer_creative_id = gflags.FLAGS.buyer_creative_id
+ pretty_printer = pprint.PrettyPrinter()
+
+ # Authenticate and construct service.
+ service = sample_utils.initialize_service()
+
+ try:
+ # Create a new creative to submit.
+ creative_body = {
+ 'accountId': account_id,
+ 'adgroupId': adgroup_id,
+ 'buyerCreativeId': buyer_creative_id,
+ 'HTMLSnippet': ('<html><body><a href="http://www.google.com">'
+ 'Hi there!</a></body></html>'),
+ 'clickThroughUrl': ['http://www.google.com'],
+ 'width': 300,
+ 'height': 250,
+ 'advertiserName': 'google'
+ }
+ creative = service.creatives().insert(body=creative_body).execute()
+ # Print the response. If the creative has been already reviewed, its status
+ # and categories will be included in the response.
+ pretty_printer.pprint(creative)
+ except AccessTokenRefreshError:
+ print ('The credentials have been revoked or expired, please re-run the '
+ 'application to re-authorize')
+
+if __name__ == '__main__':
+ main(sys.argv)