google-dfp-api 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ 0.6.0:
2
+ - Updated PQL example with paging.
3
+ - Require google-ads-common 0.9.0 or later from now on.
4
+ - Added support for AOuth2.0 JWT, removed OAuth1.0a support.
5
+
1
6
  0.5.0:
2
7
  - Added support and examples for v201211.
3
8
  - Removed support for deprecated v201108, v201111, v201201.
data/README CHANGED
@@ -90,20 +90,20 @@ or add it to the bash configuration file:
90
90
  $ echo 'export RUBYOPT="rubygems"' >> ~/.bashrc
91
91
 
92
92
 
93
- == Using OAuth
93
+ == Using OAuth2.0
94
94
 
95
- It is recommended to use OAuth authentication method instead of explicit
96
- email/password combination. OAuth support is almost transparent to the library
97
- user. In order to use OAuth you just need to:
95
+ It is recommended to use OAuth2.0 authentication method instead of ClientLogin
96
+ (explicit email/password combination). OAuth2.0 support is almost transparent to
97
+ the library user. In order to use OAuth you just need to:
98
98
 
99
- - set authentication method to 'OAuth' in configuration;
99
+ - set authentication method to 'OAuth2' in the configuration;
100
100
 
101
- - include oauth_consumer_key and oauth_consumer_secret;
101
+ - include oauth2_client_id and oauth2_client_secret;
102
102
 
103
- - handle OAuthVerificationRequired error and pass verification code to the
103
+ - handle OAuth2VerificationRequired error and pass verification code to the
104
104
  library.
105
105
 
106
- See 'dfp_api.yml' configuration file and 'common/oauth_handling.rb' example for
106
+ See 'dfp_api.yml' configuration file and 'common/oauth2_handling.rb' example for
107
107
  more details.
108
108
 
109
109
  == Accessing services
@@ -4,8 +4,7 @@
4
4
  # Detailed descriptions of these properties can be found at:
5
5
  # https://developers.google.com/doubleclick-publishers/docs/soap_xml
6
6
  :authentication:
7
- # Authentication method, methods currently supported:
8
- # OAuth2, OAuth, ClientLogin.
7
+ # Authentication method, methods currently supported: OAuth2, ClientLogin.
9
8
  :method: ClientLogin
10
9
 
11
10
  # Auth parameters for OAuth2.0 method.
@@ -20,20 +19,6 @@
20
19
  #:oauth2_access_type: INSERT_OAUTH2_ACCESS_TYPE_HERE
21
20
  #:oauth2_approval_prompt: INSERT_OAUTH2_APPROVAL_PROMPT_HERE
22
21
 
23
- # Auth parameters for OAuth1.0a method.
24
- # NOTE: OAuth1.0a method is deprecated, use OAuth2.0 instead.
25
- # Set the OAuth consumer key and secret. Anonymous values can be used for
26
- # testing, and real values can be obtained by registering your application:
27
- # https://developers.google.com/accounts/docs/RegistrationForWebAppsAuto
28
- #:oauth_consumer_key: anonymous
29
- #:oauth_consumer_secret: anonymous
30
- # If you manage or store access token manually, you can specify it here.
31
- #:oauth_token: INSERT_OAUTH_TOKEN_HERE
32
- # If you need to change signature method, specify it here.
33
- #:oauth_signature_method: HMAC-SHA1
34
- # Token secret for HMAC-SHA1 method.
35
- #:oauth_token_secret: INSERT_OAUTH_TOKEN_SECRET_HERE
36
-
37
22
  # Auth parameters for ClientLogin method.
38
23
  :password: INSERT_PASSWORD_HERE
39
24
  :email: INSERT_EMAIL_HERE
@@ -1,8 +1,9 @@
1
- #!/usr/bin/ruby
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
2
3
  #
3
4
  # Author:: api.dklimkin@gmail.com (Danial Klimkin)
4
5
  #
5
- # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
6
+ # Copyright:: Copyright 2012, Google Inc. All Rights Reserved.
6
7
  #
7
8
  # License:: Licensed under the Apache License, Version 2.0 (the "License");
8
9
  # you may not use this file except in compliance with the License.
@@ -17,18 +18,17 @@
17
18
  # See the License for the specific language governing permissions and
18
19
  # limitations under the License.
19
20
  #
20
- # This example shows how to use OAuth authorization method. It is designed to be
21
- # run from console and requires user input.
21
+ # This example shows how to use OAuth2.0 authorization method with JWT (Service
22
+ # Account).
22
23
  #
23
24
  # Tags: UserService.getUsersByStatement
24
25
 
25
26
  require 'dfp_api'
26
27
 
27
- API_VERSION = :v201203
28
+ API_VERSION = :v201211
28
29
  PAGE_SIZE = 500
29
- MAX_RETRIES = 3
30
30
 
31
- def oauth_handling()
31
+ def oauth2_jwt_handling()
32
32
  # Get DfpApi instance and load configuration from ~/dfp_api.yml.
33
33
  dfp = DfpApi::Api.new
34
34
 
@@ -36,14 +36,19 @@ def oauth_handling()
36
36
  # the configuration file or provide your own logger:
37
37
  # dfp.logger = Logger.new('dfp_xml.log')
38
38
 
39
- # Forcing authorization. A callback URL and other parameters could be
40
- # specified as parameter for OAuth method.
41
- token = dfp.authorize({:oauth_callback => 'oob'}) do |oauth_url|
42
- # For command-line we ask user to go to URL and type in code.
43
- verification_code = get_verification_code(oauth_url)
44
- # Return verification code from the block.
45
- (verification_code.empty?) ? nil : verification_code
46
- end
39
+ # Option 1: provide key filename as authentication -> oauth2_keyfile in the
40
+ # configuration file. No additional code is necessary.
41
+ # To provide a file name at runtime, use authorize:
42
+ # dfp.authorize({:oauth2_keyfile => key_filename})
43
+
44
+ # Option 2: retrieve key manually and create OpenSSL::PKCS12 object.
45
+ # key_filename = 'INSERT_FILENAME_HERE'
46
+ # key_secret = 'INSERT_SECRET_HERE'
47
+ # key_file_data = File.read(key_filename)
48
+ # key = OpenSSL::PKCS12.new(key_file_data, key_secret).key
49
+ # dfp.authorize({:oauth2_key => key})
50
+
51
+ # Now you can make API calls.
47
52
 
48
53
  # Get the UserService.
49
54
  user_service = dfp.service(:UserService, API_VERSION)
@@ -51,30 +56,13 @@ def oauth_handling()
51
56
  # Define initial values.
52
57
  offset = 0
53
58
  page = Hash.new
54
- retry_count = 0
55
59
 
56
60
  begin
57
61
  # Create statement for one page with current offset.
58
62
  statement = {:query => "LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]}
59
63
 
60
- begin
61
- # Get users by statement.
62
- page = user_service.get_users_by_statement(statement)
63
-
64
- # The second way to do OAuth authentication is to make a request and catch
65
- # the OAuthVerificationRequired exception. Add the verification code to the
66
- # credentials once acquired.
67
- rescue AdsCommon::Errors::OAuthVerificationRequired => e
68
- if retry_count < MAX_RETRIES
69
- verification_code = get_verification_code(e.oauth_url)
70
- dfp.credential_handler.set_credential(
71
- :oauth_verification_code, verification_code)
72
- retry_count += 1
73
- retry
74
- else
75
- raise AdsCommon::Errors::AuthError, 'Failed to authenticate.'
76
- end
77
- end
64
+ # Get users by statement.
65
+ page = user_service.get_users_by_statement(statement)
78
66
 
79
67
  if page[:results]
80
68
  # Increase query offset by page size.
@@ -97,17 +85,9 @@ def oauth_handling()
97
85
  end
98
86
  end
99
87
 
100
- # Misc util to get the verification code from the console.
101
- def get_verification_code(url)
102
- puts "Hit Auth error, please navigate to URL:\n\t%s" % url
103
- print 'Log in and type the verification code: '
104
- verification_code = gets.chomp
105
- return verification_code
106
- end
107
-
108
88
  if __FILE__ == $0
109
89
  begin
110
- oauth_handling()
90
+ oauth2_jwt_handling()
111
91
 
112
92
  # HTTP errors.
113
93
  rescue AdsCommon::Errors::HttpError => e
@@ -30,6 +30,7 @@ require 'dfp_api'
30
30
  API_VERSION = :v201211
31
31
  # A string to separate columns in output. Use "," to get CSV.
32
32
  COLUMN_SEPARATOR = "\t"
33
+ PAGE_SIZE = 500
33
34
 
34
35
  def get_all_cities()
35
36
  # Get DfpApi instance and load configuration from ~/dfp_api.yml.
@@ -42,29 +43,42 @@ def get_all_cities()
42
43
  # Get the PublisherQueryLanguageService.
43
44
  pql_service = dfp.service(:PublisherQueryLanguageService, API_VERSION)
44
45
 
45
- # Create statement to select all targetable cities.
46
- # For criteria that do not have a "targetable" property, the predicate may be
47
- # left off.
48
- statement = {:query => 'SELECT * FROM City WHERE targetable = true LIMIT 500'}
46
+ # Create a statement to select all targetable cities. For criteria that do not
47
+ # have a "targetable" property, the predicate may be left off.
48
+ statement_text =
49
+ 'SELECT * FROM City WHERE targetable = true LIMIT %d' % PAGE_SIZE
49
50
 
50
- # Get all cities.
51
- result_set = pql_service.select(statement)
51
+ # Set initial values for paging.
52
+ offset, result_set, all_rows = 0, nil, 0
52
53
 
53
- if result_set
54
- # Print out columns header.
55
- columns = result_set[:column_types].collect {|col| col[:label_name]}
56
- puts columns.join(COLUMN_SEPARATOR)
54
+ # Get all cities with paging.
55
+ begin
56
+ # Create statement for a page.
57
+ statement = {
58
+ :query => statement_text + ' OFFSET %d' % offset
59
+ }
60
+ result_set = pql_service.select(statement)
61
+
62
+ if result_set
63
+ # Print out columns header.
64
+ columns = result_set[:column_types].collect {|col| col[:label_name]}
65
+ puts columns.join(COLUMN_SEPARATOR)
57
66
 
58
- # Print out every row.
59
- result_set[:rows].each do |row_set|
60
- row = row_set[:values].collect {|item| item[:value]}
61
- puts row.join(COLUMN_SEPARATOR)
67
+ # Print out every row.
68
+ result_set[:rows].each do |row_set|
69
+ row = row_set[:values].collect {|item| item[:value]}
70
+ puts row.join(COLUMN_SEPARATOR)
71
+ end
62
72
  end
63
- end
73
+
74
+ # Update the counters.
75
+ offset += PAGE_SIZE
76
+ all_rows += result_set[:rows].size
77
+ end while result_set[:rows].size == PAGE_SIZE
64
78
 
65
79
  # Print a footer.
66
80
  if result_set[:rows]
67
- puts "Total number of rows found: %d" % result_set[:rows].size
81
+ puts "Total number of rows found: %d" % all_rows
68
82
  end
69
83
  end
70
84
 
@@ -51,8 +51,10 @@ module DfpApi
51
51
  def soap_header_handler(auth_handler, version, header_ns, default_ns)
52
52
  auth_method = @config.read('authentication.method', :CLIENTLOGIN)
53
53
  handler_class = case auth_method
54
- when :CLIENTLOGIN then DfpApi::ClientLoginHeaderHandler
55
- when :OAUTH, :OAUTH2 then AdsCommon::SavonHeaders::OAuthHeaderHandler
54
+ when :CLIENTLOGIN
55
+ DfpApi::ClientLoginHeaderHandler
56
+ when :OAUTH2, :OAUTH2_JWT
57
+ AdsCommon::SavonHeaders::OAuthHeaderHandler
56
58
  else
57
59
  raise AdsCommon::Errors::AuthError,
58
60
  "Unknown auth method: %s" % auth_method
@@ -1,4 +1,4 @@
1
- #!/usr/bin/ruby
1
+ # Encoding: utf-8
2
2
  #
3
3
  # Authors:: api.dklimkin@gmail.com (Danial Klimkin)
4
4
  #
@@ -21,6 +21,6 @@
21
21
 
22
22
  module DfpApi
23
23
  module ApiConfig
24
- CLIENT_LIB_VERSION = '0.5.0'
24
+ CLIENT_LIB_VERSION = '0.6.0'
25
25
  end
26
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-dfp-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-10 00:00:00.000000000 Z
12
+ date: 2013-01-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-ads-common
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.8.0
21
+ version: 0.9.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.8.0
29
+ version: 0.9.0
30
30
  description: google-dfp-api is a DFP API client library for Ruby
31
31
  email:
32
32
  - api.dklimkin@gmail.com
@@ -35,7 +35,6 @@ extensions: []
35
35
  extra_rdoc_files: []
36
36
  files:
37
37
  - examples/v201204/common/error_handling.rb
38
- - examples/v201204/common/oauth_handling.rb
39
38
  - examples/v201204/common/oauth2_handling.rb
40
39
  - examples/v201204/suggested_ad_unit_service/get_all_suggested_ad_units.rb
41
40
  - examples/v201204/suggested_ad_unit_service/approve_all_suggested_ad_units.rb
@@ -154,7 +153,6 @@ files:
154
153
  - examples/v201204/user_team_association_service/get_user_team_associations_by_statement.rb
155
154
  - examples/v201204/user_team_association_service/get_user_team_association.rb
156
155
  - examples/v201208/common/error_handling.rb
157
- - examples/v201208/common/oauth_handling.rb
158
156
  - examples/v201208/common/oauth2_handling.rb
159
157
  - examples/v201208/suggested_ad_unit_service/get_all_suggested_ad_units.rb
160
158
  - examples/v201208/suggested_ad_unit_service/approve_all_suggested_ad_units.rb
@@ -279,7 +277,6 @@ files:
279
277
  - examples/v201208/user_team_association_service/get_user_team_associations_by_statement.rb
280
278
  - examples/v201208/user_team_association_service/get_user_team_association.rb
281
279
  - examples/v201203/common/error_handling.rb
282
- - examples/v201203/common/oauth_handling.rb
283
280
  - examples/v201203/suggested_ad_unit_service/get_all_suggested_ad_units.rb
284
281
  - examples/v201203/suggested_ad_unit_service/approve_all_suggested_ad_units.rb
285
282
  - examples/v201203/suggested_ad_unit_service/get_suggested_ad_unit.rb
@@ -384,7 +381,6 @@ files:
384
381
  - examples/v201203/line_item_service/get_line_items_by_statement.rb
385
382
  - examples/v201203/line_item_service/get_line_item.rb
386
383
  - examples/v201206/common/error_handling.rb
387
- - examples/v201206/common/oauth_handling.rb
388
384
  - examples/v201206/common/oauth2_handling.rb
389
385
  - examples/v201206/suggested_ad_unit_service/get_all_suggested_ad_units.rb
390
386
  - examples/v201206/suggested_ad_unit_service/approve_all_suggested_ad_units.rb
@@ -506,8 +502,8 @@ files:
506
502
  - examples/v201206/user_team_association_service/update_user_team_associations.rb
507
503
  - examples/v201206/user_team_association_service/get_user_team_associations_by_statement.rb
508
504
  - examples/v201206/user_team_association_service/get_user_team_association.rb
505
+ - examples/v201211/common/oauth2_jwt_handling.rb
509
506
  - examples/v201211/common/error_handling.rb
510
- - examples/v201211/common/oauth_handling.rb
511
507
  - examples/v201211/common/oauth2_handling.rb
512
508
  - examples/v201211/creative_wrapper_service/create_creative_wrappers.rb
513
509
  - examples/v201211/creative_wrapper_service/update_creative_wrappers.rb
@@ -1,131 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example shows how to use OAuth1.0a authorization method. It is designed
22
- # to be run from console and requires user input.
23
- #
24
- # NOTE: OAuth1.0a authorization method is deprecated, use OAuth2.0 instead.
25
- # See oauth2_handling.rb for an example.
26
- #
27
- # Tags: UserService.getUsersByStatement
28
-
29
- require 'dfp_api'
30
-
31
- API_VERSION = :v201204
32
- PAGE_SIZE = 500
33
- MAX_RETRIES = 3
34
-
35
- def oauth_handling()
36
- # Get DfpApi instance and load configuration from ~/dfp_api.yml.
37
- dfp = DfpApi::Api.new
38
-
39
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
40
- # the configuration file or provide your own logger:
41
- # dfp.logger = Logger.new('dfp_xml.log')
42
-
43
- # Forcing authorization. A callback URL and other parameters could be
44
- # specified as parameter for OAuth method.
45
- token = dfp.authorize({:oauth_callback => 'oob'}) do |oauth_url|
46
- # For command-line we ask user to go to URL and type in code.
47
- verification_code = get_verification_code(oauth_url)
48
- # Return verification code from the block.
49
- (verification_code.empty?) ? nil : verification_code
50
- end
51
-
52
- # Get the UserService.
53
- user_service = dfp.service(:UserService, API_VERSION)
54
-
55
- # Define initial values.
56
- offset = 0
57
- page = Hash.new
58
- retry_count = 0
59
-
60
- begin
61
- # Create statement for one page with current offset.
62
- statement = {:query => "LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]}
63
-
64
- begin
65
- # Get users by statement.
66
- page = user_service.get_users_by_statement(statement)
67
-
68
- # The second way to do OAuth authentication is to make a request and catch
69
- # the OAuthVerificationRequired exception. Add the verification code to the
70
- # credentials once acquired.
71
- rescue AdsCommon::Errors::OAuthVerificationRequired => e
72
- if retry_count < MAX_RETRIES
73
- verification_code = get_verification_code(e.oauth_url)
74
- dfp.credential_handler.set_credential(
75
- :oauth_verification_code, verification_code)
76
- retry_count += 1
77
- retry
78
- else
79
- raise AdsCommon::Errors::AuthError, 'Failed to authenticate.'
80
- end
81
- end
82
-
83
- if page[:results]
84
- # Increase query offset by page size.
85
- offset += PAGE_SIZE
86
-
87
- # Get the start index for printout.
88
- start_index = page[:start_index]
89
-
90
- # Print details about each user in results page.
91
- page[:results].each_with_index do |user, index|
92
- puts "%d) User ID: %d, name: %s, email: %s" %
93
- [index + start_index, user[:id], user[:name], user[:email]]
94
- end
95
- end
96
- end while offset < page[:total_result_set_size]
97
-
98
- # Print a footer
99
- if page.include?(:total_result_set_size)
100
- puts "Total number of users: %d" % page[:total_result_set_size]
101
- end
102
- end
103
-
104
- # Misc util to get the verification code from the console.
105
- def get_verification_code(url)
106
- puts "Hit Auth error, please navigate to URL:\n\t%s" % url
107
- print 'Log in and type the verification code: '
108
- verification_code = gets.chomp
109
- return verification_code
110
- end
111
-
112
- if __FILE__ == $0
113
- begin
114
- oauth_handling()
115
-
116
- # HTTP errors.
117
- rescue AdsCommon::Errors::HttpError => e
118
- puts "HTTP Error: %s" % e
119
-
120
- # API errors.
121
- rescue DfpApi::Errors::ApiException => e
122
- puts "Message: %s" % e.message
123
- puts 'Errors:'
124
- e.errors.each_with_index do |error, index|
125
- puts "\tError [%d]:" % (index + 1)
126
- error.each do |field, value|
127
- puts "\t\t%s: %s" % [field, value]
128
- end
129
- end
130
- end
131
- end
@@ -1,131 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example shows how to use OAuth1.0a authorization method. It is designed
22
- # to be run from console and requires user input.
23
- #
24
- # NOTE: OAuth1.0a authorization method is deprecated, use OAuth2.0 instead.
25
- # See oauth2_handling.rb for an example.
26
- #
27
- # Tags: UserService.getUsersByStatement
28
-
29
- require 'dfp_api'
30
-
31
- API_VERSION = :v201206
32
- PAGE_SIZE = 500
33
- MAX_RETRIES = 3
34
-
35
- def oauth_handling()
36
- # Get DfpApi instance and load configuration from ~/dfp_api.yml.
37
- dfp = DfpApi::Api.new
38
-
39
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
40
- # the configuration file or provide your own logger:
41
- # dfp.logger = Logger.new('dfp_xml.log')
42
-
43
- # Forcing authorization. A callback URL and other parameters could be
44
- # specified as parameter for OAuth method.
45
- token = dfp.authorize({:oauth_callback => 'oob'}) do |oauth_url|
46
- # For command-line we ask user to go to URL and type in code.
47
- verification_code = get_verification_code(oauth_url)
48
- # Return verification code from the block.
49
- (verification_code.empty?) ? nil : verification_code
50
- end
51
-
52
- # Get the UserService.
53
- user_service = dfp.service(:UserService, API_VERSION)
54
-
55
- # Define initial values.
56
- offset = 0
57
- page = Hash.new
58
- retry_count = 0
59
-
60
- begin
61
- # Create statement for one page with current offset.
62
- statement = {:query => "LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]}
63
-
64
- begin
65
- # Get users by statement.
66
- page = user_service.get_users_by_statement(statement)
67
-
68
- # The second way to do OAuth authentication is to make a request and catch
69
- # the OAuthVerificationRequired exception. Add the verification code to the
70
- # credentials once acquired.
71
- rescue AdsCommon::Errors::OAuthVerificationRequired => e
72
- if retry_count < MAX_RETRIES
73
- verification_code = get_verification_code(e.oauth_url)
74
- dfp.credential_handler.set_credential(
75
- :oauth_verification_code, verification_code)
76
- retry_count += 1
77
- retry
78
- else
79
- raise AdsCommon::Errors::AuthError, 'Failed to authenticate.'
80
- end
81
- end
82
-
83
- if page[:results]
84
- # Increase query offset by page size.
85
- offset += PAGE_SIZE
86
-
87
- # Get the start index for printout.
88
- start_index = page[:start_index]
89
-
90
- # Print details about each user in results page.
91
- page[:results].each_with_index do |user, index|
92
- puts "%d) User ID: %d, name: %s, email: %s" %
93
- [index + start_index, user[:id], user[:name], user[:email]]
94
- end
95
- end
96
- end while offset < page[:total_result_set_size]
97
-
98
- # Print a footer
99
- if page.include?(:total_result_set_size)
100
- puts "Total number of users: %d" % page[:total_result_set_size]
101
- end
102
- end
103
-
104
- # Misc util to get the verification code from the console.
105
- def get_verification_code(url)
106
- puts "Hit Auth error, please navigate to URL:\n\t%s" % url
107
- print 'Log in and type the verification code: '
108
- verification_code = gets.chomp
109
- return verification_code
110
- end
111
-
112
- if __FILE__ == $0
113
- begin
114
- oauth_handling()
115
-
116
- # HTTP errors.
117
- rescue AdsCommon::Errors::HttpError => e
118
- puts "HTTP Error: %s" % e
119
-
120
- # API errors.
121
- rescue DfpApi::Errors::ApiException => e
122
- puts "Message: %s" % e.message
123
- puts 'Errors:'
124
- e.errors.each_with_index do |error, index|
125
- puts "\tError [%d]:" % (index + 1)
126
- error.each do |field, value|
127
- puts "\t\t%s: %s" % [field, value]
128
- end
129
- end
130
- end
131
- end
@@ -1,131 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example shows how to use OAuth1.0a authorization method. It is designed
22
- # to be run from console and requires user input.
23
- #
24
- # NOTE: OAuth1.0a authorization method is deprecated, use OAuth2.0 instead.
25
- # See oauth2_handling.rb for an example.
26
- #
27
- # Tags: UserService.getUsersByStatement
28
-
29
- require 'dfp_api'
30
-
31
- API_VERSION = :v201208
32
- PAGE_SIZE = 500
33
- MAX_RETRIES = 3
34
-
35
- def oauth_handling()
36
- # Get DfpApi instance and load configuration from ~/dfp_api.yml.
37
- dfp = DfpApi::Api.new
38
-
39
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
40
- # the configuration file or provide your own logger:
41
- # dfp.logger = Logger.new('dfp_xml.log')
42
-
43
- # Forcing authorization. A callback URL and other parameters could be
44
- # specified as parameter for OAuth method.
45
- token = dfp.authorize({:oauth_callback => 'oob'}) do |oauth_url|
46
- # For command-line we ask user to go to URL and type in code.
47
- verification_code = get_verification_code(oauth_url)
48
- # Return verification code from the block.
49
- (verification_code.empty?) ? nil : verification_code
50
- end
51
-
52
- # Get the UserService.
53
- user_service = dfp.service(:UserService, API_VERSION)
54
-
55
- # Define initial values.
56
- offset = 0
57
- page = Hash.new
58
- retry_count = 0
59
-
60
- begin
61
- # Create statement for one page with current offset.
62
- statement = {:query => "LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]}
63
-
64
- begin
65
- # Get users by statement.
66
- page = user_service.get_users_by_statement(statement)
67
-
68
- # The second way to do OAuth authentication is to make a request and catch
69
- # the OAuthVerificationRequired exception. Add the verification code to the
70
- # credentials once acquired.
71
- rescue AdsCommon::Errors::OAuthVerificationRequired => e
72
- if retry_count < MAX_RETRIES
73
- verification_code = get_verification_code(e.oauth_url)
74
- dfp.credential_handler.set_credential(
75
- :oauth_verification_code, verification_code)
76
- retry_count += 1
77
- retry
78
- else
79
- raise AdsCommon::Errors::AuthError, 'Failed to authenticate.'
80
- end
81
- end
82
-
83
- if page[:results]
84
- # Increase query offset by page size.
85
- offset += PAGE_SIZE
86
-
87
- # Get the start index for printout.
88
- start_index = page[:start_index]
89
-
90
- # Print details about each user in results page.
91
- page[:results].each_with_index do |user, index|
92
- puts "%d) User ID: %d, name: %s, email: %s" %
93
- [index + start_index, user[:id], user[:name], user[:email]]
94
- end
95
- end
96
- end while offset < page[:total_result_set_size]
97
-
98
- # Print a footer
99
- if page.include?(:total_result_set_size)
100
- puts "Total number of users: %d" % page[:total_result_set_size]
101
- end
102
- end
103
-
104
- # Misc util to get the verification code from the console.
105
- def get_verification_code(url)
106
- puts "Hit Auth error, please navigate to URL:\n\t%s" % url
107
- print 'Log in and type the verification code: '
108
- verification_code = gets.chomp
109
- return verification_code
110
- end
111
-
112
- if __FILE__ == $0
113
- begin
114
- oauth_handling()
115
-
116
- # HTTP errors.
117
- rescue AdsCommon::Errors::HttpError => e
118
- puts "HTTP Error: %s" % e
119
-
120
- # API errors.
121
- rescue DfpApi::Errors::ApiException => e
122
- puts "Message: %s" % e.message
123
- puts 'Errors:'
124
- e.errors.each_with_index do |error, index|
125
- puts "\tError [%d]:" % (index + 1)
126
- error.each do |field, value|
127
- puts "\t\t%s: %s" % [field, value]
128
- end
129
- end
130
- end
131
- end
@@ -1,131 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example shows how to use OAuth1.0a authorization method. It is designed
22
- # to be run from console and requires user input.
23
- #
24
- # NOTE: OAuth1.0a authorization method is deprecated, use OAuth2.0 instead.
25
- # See oauth2_handling.rb for an example.
26
- #
27
- # Tags: UserService.getUsersByStatement
28
-
29
- require 'dfp_api'
30
-
31
- API_VERSION = :v201211
32
- PAGE_SIZE = 500
33
- MAX_RETRIES = 3
34
-
35
- def oauth_handling()
36
- # Get DfpApi instance and load configuration from ~/dfp_api.yml.
37
- dfp = DfpApi::Api.new
38
-
39
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
40
- # the configuration file or provide your own logger:
41
- # dfp.logger = Logger.new('dfp_xml.log')
42
-
43
- # Forcing authorization. A callback URL and other parameters could be
44
- # specified as parameter for OAuth method.
45
- token = dfp.authorize({:oauth_callback => 'oob'}) do |oauth_url|
46
- # For command-line we ask user to go to URL and type in code.
47
- verification_code = get_verification_code(oauth_url)
48
- # Return verification code from the block.
49
- (verification_code.empty?) ? nil : verification_code
50
- end
51
-
52
- # Get the UserService.
53
- user_service = dfp.service(:UserService, API_VERSION)
54
-
55
- # Define initial values.
56
- offset = 0
57
- page = Hash.new
58
- retry_count = 0
59
-
60
- begin
61
- # Create statement for one page with current offset.
62
- statement = {:query => "LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]}
63
-
64
- begin
65
- # Get users by statement.
66
- page = user_service.get_users_by_statement(statement)
67
-
68
- # The second way to do OAuth authentication is to make a request and catch
69
- # the OAuthVerificationRequired exception. Add the verification code to the
70
- # credentials once acquired.
71
- rescue AdsCommon::Errors::OAuthVerificationRequired => e
72
- if retry_count < MAX_RETRIES
73
- verification_code = get_verification_code(e.oauth_url)
74
- dfp.credential_handler.set_credential(
75
- :oauth_verification_code, verification_code)
76
- retry_count += 1
77
- retry
78
- else
79
- raise AdsCommon::Errors::AuthError, 'Failed to authenticate.'
80
- end
81
- end
82
-
83
- if page[:results]
84
- # Increase query offset by page size.
85
- offset += PAGE_SIZE
86
-
87
- # Get the start index for printout.
88
- start_index = page[:start_index]
89
-
90
- # Print details about each user in results page.
91
- page[:results].each_with_index do |user, index|
92
- puts "%d) User ID: %d, name: %s, email: %s" %
93
- [index + start_index, user[:id], user[:name], user[:email]]
94
- end
95
- end
96
- end while offset < page[:total_result_set_size]
97
-
98
- # Print a footer
99
- if page.include?(:total_result_set_size)
100
- puts "Total number of users: %d" % page[:total_result_set_size]
101
- end
102
- end
103
-
104
- # Misc util to get the verification code from the console.
105
- def get_verification_code(url)
106
- puts "Hit Auth error, please navigate to URL:\n\t%s" % url
107
- print 'Log in and type the verification code: '
108
- verification_code = gets.chomp
109
- return verification_code
110
- end
111
-
112
- if __FILE__ == $0
113
- begin
114
- oauth_handling()
115
-
116
- # HTTP errors.
117
- rescue AdsCommon::Errors::HttpError => e
118
- puts "HTTP Error: %s" % e
119
-
120
- # API errors.
121
- rescue DfpApi::Errors::ApiException => e
122
- puts "Message: %s" % e.message
123
- puts 'Errors:'
124
- e.errors.each_with_index do |error, index|
125
- puts "\tError [%d]:" % (index + 1)
126
- error.each do |field, value|
127
- puts "\t\t%s: %s" % [field, value]
128
- end
129
- end
130
- end
131
- end