google-dfp-api 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (161) hide show
  1. data/ChangeLog +4 -0
  2. data/README +17 -2
  3. data/Rakefile +3 -5
  4. data/examples/v201101/common/oauth_handling.rb +128 -0
  5. data/examples/v201101/company_service/create_companies.rb +1 -1
  6. data/examples/v201101/company_service/get_all_companies.rb +1 -1
  7. data/examples/v201101/creative_service/create_creatives.rb +1 -1
  8. data/examples/v201101/creative_service/get_all_creatives.rb +1 -1
  9. data/examples/v201101/custom_targeting_service/delete_custom_targeting_keys.rb +2 -2
  10. data/examples/v201101/custom_targeting_service/delete_custom_targeting_values.rb +2 -2
  11. data/examples/v201101/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +2 -2
  12. data/examples/v201101/inventory_service/create_ad_units.rb +1 -1
  13. data/examples/v201101/inventory_service/deactivate_ad_units.rb +2 -2
  14. data/examples/v201101/inventory_service/get_ad_units_by_statement.rb +1 -1
  15. data/examples/v201101/inventory_service/get_all_ad_units.rb +1 -1
  16. data/examples/v201101/line_item_creative_association_service/deactivate_licas.rb +2 -2
  17. data/examples/v201101/line_item_creative_association_service/get_all_licas.rb +1 -1
  18. data/examples/v201101/line_item_service/activate_line_items.rb +2 -2
  19. data/examples/v201101/line_item_service/create_line_items.rb +2 -2
  20. data/examples/v201101/line_item_service/get_all_line_items.rb +1 -1
  21. data/examples/v201101/order_service/approve_orders.rb +2 -2
  22. data/examples/v201101/order_service/create_orders.rb +1 -1
  23. data/examples/v201101/order_service/get_all_orders.rb +1 -1
  24. data/examples/v201101/placement_service/create_placements.rb +3 -3
  25. data/examples/v201101/placement_service/deactivate_placements.rb +2 -2
  26. data/examples/v201101/placement_service/get_all_placements.rb +1 -1
  27. data/examples/v201101/user_service/get_all_users.rb +1 -1
  28. data/examples/v201103/common/oauth_handling.rb +128 -0
  29. data/examples/v201103/company_service/create_companies.rb +1 -1
  30. data/examples/v201103/company_service/get_all_companies.rb +1 -1
  31. data/examples/v201103/creative_service/create_creatives.rb +1 -1
  32. data/examples/v201103/creative_service/get_all_creatives.rb +1 -1
  33. data/examples/v201103/custom_targeting_service/delete_custom_targeting_keys.rb +2 -2
  34. data/examples/v201103/custom_targeting_service/delete_custom_targeting_values.rb +2 -2
  35. data/examples/v201103/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +2 -2
  36. data/examples/v201103/inventory_service/create_ad_units.rb +1 -1
  37. data/examples/v201103/inventory_service/deactivate_ad_units.rb +2 -2
  38. data/examples/v201103/inventory_service/get_ad_units_by_statement.rb +1 -1
  39. data/examples/v201103/inventory_service/get_all_ad_units.rb +1 -1
  40. data/examples/v201103/line_item_creative_association_service/deactivate_licas.rb +2 -2
  41. data/examples/v201103/line_item_creative_association_service/get_all_licas.rb +1 -1
  42. data/examples/v201103/line_item_service/activate_line_items.rb +2 -2
  43. data/examples/v201103/line_item_service/create_line_items.rb +2 -2
  44. data/examples/v201103/line_item_service/get_all_line_items.rb +1 -1
  45. data/examples/v201103/order_service/approve_orders.rb +2 -2
  46. data/examples/v201103/order_service/create_orders.rb +1 -1
  47. data/examples/v201103/order_service/get_all_orders.rb +1 -1
  48. data/examples/v201103/placement_service/create_placements.rb +3 -3
  49. data/examples/v201103/placement_service/deactivate_placements.rb +2 -2
  50. data/examples/v201103/placement_service/get_all_placements.rb +1 -1
  51. data/examples/v201103/user_service/get_all_users.rb +1 -1
  52. data/examples/v201104/common/oauth_handling.rb +128 -0
  53. data/examples/v201104/company_service/create_companies.rb +1 -1
  54. data/examples/v201104/company_service/get_all_companies.rb +1 -1
  55. data/examples/v201104/creative_service/create_creatives.rb +1 -1
  56. data/examples/v201104/creative_service/get_all_creatives.rb +1 -1
  57. data/examples/v201104/custom_targeting_service/delete_custom_targeting_keys.rb +2 -2
  58. data/examples/v201104/custom_targeting_service/delete_custom_targeting_values.rb +2 -2
  59. data/examples/v201104/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +2 -2
  60. data/examples/v201104/inventory_service/create_ad_units.rb +1 -1
  61. data/examples/v201104/inventory_service/deactivate_ad_units.rb +2 -2
  62. data/examples/v201104/inventory_service/get_ad_units_by_statement.rb +1 -1
  63. data/examples/v201104/inventory_service/get_all_ad_units.rb +1 -1
  64. data/examples/v201104/line_item_creative_association_service/deactivate_licas.rb +2 -2
  65. data/examples/v201104/line_item_creative_association_service/get_all_licas.rb +1 -1
  66. data/examples/v201104/line_item_service/activate_line_items.rb +2 -2
  67. data/examples/v201104/line_item_service/create_line_items.rb +1 -1
  68. data/examples/v201104/line_item_service/get_all_line_items.rb +1 -1
  69. data/examples/v201104/order_service/approve_orders.rb +2 -2
  70. data/examples/v201104/order_service/create_orders.rb +1 -1
  71. data/examples/v201104/order_service/get_all_orders.rb +1 -1
  72. data/examples/v201104/placement_service/create_placements.rb +3 -3
  73. data/examples/v201104/placement_service/deactivate_placements.rb +2 -2
  74. data/examples/v201104/placement_service/get_all_placements.rb +1 -1
  75. data/examples/v201104/user_service/get_all_users.rb +1 -1
  76. data/lib/dfp_api.rb +24 -70
  77. data/lib/dfp_api/api_config.rb +3 -1
  78. data/lib/dfp_api/client_login_header_handler.rb +56 -0
  79. data/lib/dfp_api/credential_handler.rb +19 -14
  80. data/lib/dfp_api/errors.rb +1 -1
  81. data/lib/dfp_api/v201101/company_service.rb +3 -3
  82. data/lib/dfp_api/v201101/company_service_registry.rb +9 -4
  83. data/lib/dfp_api/v201101/creative_service.rb +3 -3
  84. data/lib/dfp_api/v201101/creative_service_registry.rb +9 -4
  85. data/lib/dfp_api/v201101/custom_targeting_service.rb +7 -7
  86. data/lib/dfp_api/v201101/custom_targeting_service_registry.rb +9 -4
  87. data/lib/dfp_api/v201101/forecast_service.rb +3 -3
  88. data/lib/dfp_api/v201101/forecast_service_registry.rb +9 -4
  89. data/lib/dfp_api/v201101/inventory_service.rb +7 -7
  90. data/lib/dfp_api/v201101/inventory_service_registry.rb +9 -4
  91. data/lib/dfp_api/v201101/line_item_creative_association_service.rb +7 -7
  92. data/lib/dfp_api/v201101/line_item_creative_association_service_registry.rb +9 -4
  93. data/lib/dfp_api/v201101/line_item_service.rb +7 -7
  94. data/lib/dfp_api/v201101/line_item_service_registry.rb +9 -4
  95. data/lib/dfp_api/v201101/network_service.rb +7 -7
  96. data/lib/dfp_api/v201101/network_service_registry.rb +9 -4
  97. data/lib/dfp_api/v201101/order_service.rb +11 -11
  98. data/lib/dfp_api/v201101/order_service_registry.rb +9 -4
  99. data/lib/dfp_api/v201101/placement_service.rb +3 -3
  100. data/lib/dfp_api/v201101/placement_service_registry.rb +9 -4
  101. data/lib/dfp_api/v201101/publisher_query_language_service.rb +3 -3
  102. data/lib/dfp_api/v201101/publisher_query_language_service_registry.rb +9 -4
  103. data/lib/dfp_api/v201101/report_service.rb +3 -3
  104. data/lib/dfp_api/v201101/report_service_registry.rb +9 -4
  105. data/lib/dfp_api/v201101/user_service.rb +7 -7
  106. data/lib/dfp_api/v201101/user_service_registry.rb +9 -4
  107. data/lib/dfp_api/v201103/company_service.rb +3 -3
  108. data/lib/dfp_api/v201103/company_service_registry.rb +9 -4
  109. data/lib/dfp_api/v201103/creative_service.rb +3 -3
  110. data/lib/dfp_api/v201103/creative_service_registry.rb +9 -4
  111. data/lib/dfp_api/v201103/custom_targeting_service.rb +7 -7
  112. data/lib/dfp_api/v201103/custom_targeting_service_registry.rb +9 -4
  113. data/lib/dfp_api/v201103/forecast_service.rb +3 -3
  114. data/lib/dfp_api/v201103/forecast_service_registry.rb +9 -4
  115. data/lib/dfp_api/v201103/inventory_service.rb +7 -7
  116. data/lib/dfp_api/v201103/inventory_service_registry.rb +9 -4
  117. data/lib/dfp_api/v201103/line_item_creative_association_service.rb +7 -7
  118. data/lib/dfp_api/v201103/line_item_creative_association_service_registry.rb +9 -4
  119. data/lib/dfp_api/v201103/line_item_service.rb +7 -7
  120. data/lib/dfp_api/v201103/line_item_service_registry.rb +9 -4
  121. data/lib/dfp_api/v201103/network_service.rb +7 -7
  122. data/lib/dfp_api/v201103/network_service_registry.rb +9 -4
  123. data/lib/dfp_api/v201103/order_service.rb +11 -11
  124. data/lib/dfp_api/v201103/order_service_registry.rb +9 -4
  125. data/lib/dfp_api/v201103/placement_service.rb +3 -3
  126. data/lib/dfp_api/v201103/placement_service_registry.rb +9 -4
  127. data/lib/dfp_api/v201103/publisher_query_language_service.rb +3 -3
  128. data/lib/dfp_api/v201103/publisher_query_language_service_registry.rb +9 -4
  129. data/lib/dfp_api/v201103/report_service.rb +3 -3
  130. data/lib/dfp_api/v201103/report_service_registry.rb +9 -4
  131. data/lib/dfp_api/v201103/user_service.rb +7 -7
  132. data/lib/dfp_api/v201103/user_service_registry.rb +9 -4
  133. data/lib/dfp_api/v201104/company_service.rb +3 -3
  134. data/lib/dfp_api/v201104/company_service_registry.rb +9 -4
  135. data/lib/dfp_api/v201104/creative_service.rb +3 -3
  136. data/lib/dfp_api/v201104/creative_service_registry.rb +9 -4
  137. data/lib/dfp_api/v201104/custom_targeting_service.rb +7 -7
  138. data/lib/dfp_api/v201104/custom_targeting_service_registry.rb +9 -4
  139. data/lib/dfp_api/v201104/forecast_service.rb +3 -3
  140. data/lib/dfp_api/v201104/forecast_service_registry.rb +9 -4
  141. data/lib/dfp_api/v201104/inventory_service.rb +7 -7
  142. data/lib/dfp_api/v201104/inventory_service_registry.rb +9 -4
  143. data/lib/dfp_api/v201104/line_item_creative_association_service.rb +7 -7
  144. data/lib/dfp_api/v201104/line_item_creative_association_service_registry.rb +9 -4
  145. data/lib/dfp_api/v201104/line_item_service.rb +7 -7
  146. data/lib/dfp_api/v201104/line_item_service_registry.rb +9 -4
  147. data/lib/dfp_api/v201104/network_service.rb +7 -7
  148. data/lib/dfp_api/v201104/network_service_registry.rb +9 -4
  149. data/lib/dfp_api/v201104/order_service.rb +11 -11
  150. data/lib/dfp_api/v201104/order_service_registry.rb +9 -4
  151. data/lib/dfp_api/v201104/placement_service.rb +3 -3
  152. data/lib/dfp_api/v201104/placement_service_registry.rb +9 -4
  153. data/lib/dfp_api/v201104/publisher_query_language_service.rb +3 -3
  154. data/lib/dfp_api/v201104/publisher_query_language_service_registry.rb +9 -4
  155. data/lib/dfp_api/v201104/report_service.rb +3 -3
  156. data/lib/dfp_api/v201104/report_service_registry.rb +9 -4
  157. data/lib/dfp_api/v201104/user_service.rb +7 -7
  158. data/lib/dfp_api/v201104/user_service_registry.rb +9 -4
  159. data/test/bugs/test_issue_00000016.rb +6 -5
  160. data/test/dfp_api/test_dfp_api.rb +29 -7
  161. metadata +257 -253
@@ -41,7 +41,7 @@ def create_companies()
41
41
  company_service = dfp.service(:CompanyService, API_VERSION)
42
42
 
43
43
  # Create an array to store local company objects.
44
- companies = Array.new
44
+ companies = []
45
45
  ITEM_COUNT.times do |index|
46
46
  companies << {:name => "Advertiser #%d" % index, :type => 'ADVERTISER'}
47
47
  end
@@ -40,7 +40,7 @@ def get_all_companies()
40
40
 
41
41
  # Define initial values.
42
42
  offset = 0
43
- page = Hash.new
43
+ page = {}
44
44
 
45
45
  begin
46
46
  # Create a statement to get one page with current offset.
@@ -53,7 +53,7 @@ def create_creatives()
53
53
  image_data_base64 = Base64.encode64(image_data)
54
54
 
55
55
  # Create an array to store local creative objects.
56
- creatives = Array.new
56
+ creatives = []
57
57
  ITEM_COUNT.times do |index|
58
58
  creatives << {
59
59
  :xsi_type => 'ImageCreative',
@@ -40,7 +40,7 @@ def get_all_creatives()
40
40
 
41
41
  # Define initial values.
42
42
  offset = 0
43
- page = Hash.new
43
+ page = {}
44
44
 
45
45
  begin
46
46
  # Create a statement to get one page with current offset.
@@ -48,8 +48,8 @@ def delete_custom_targeting_keys()
48
48
 
49
49
  # Define initial values.
50
50
  offset = 0
51
- page = Hash.new
52
- custom_target_key_ids = Array.new
51
+ page = {}
52
+ custom_target_key_ids = []
53
53
  statement = {
54
54
  :values => [
55
55
  {:key => 'name',
@@ -50,8 +50,8 @@ def delete_custom_targeting_values()
50
50
 
51
51
  # Define initial values.
52
52
  offset = 0
53
- page = Hash.new
54
- custom_target_value_ids = Array.new
53
+ page = {}
54
+ custom_target_value_ids = []
55
55
  statement = {
56
56
  :values => [
57
57
  {:key => 'key_id',
@@ -42,7 +42,7 @@ def get_all_custom_targeting_keys_and_values()
42
42
 
43
43
  # Define initial values.
44
44
  offset = 0
45
- page = Hash.new
45
+ page = {}
46
46
 
47
47
  begin
48
48
  # Create a statement to get one page with current offset.
@@ -82,7 +82,7 @@ end
82
82
  def print_all_values_for_key(custom_targeting_service, custom_targeting_key)
83
83
  # Define initial values.
84
84
  offset = 0
85
- page = Hash.new
85
+ page = {}
86
86
 
87
87
  # Create a statement to get values for given key.
88
88
  statement_text = "WHERE customTargetingKeyId = :key_id LIMIT %d" % PAGE_SIZE
@@ -51,7 +51,7 @@ def create_ad_units()
51
51
  puts "Using effective root ad unit: %d" % effective_root_ad_unit_id
52
52
 
53
53
  # Create an array to store local ad unit objects.
54
- ad_units = Array.new
54
+ ad_units = []
55
55
  ITEM_COUNT.times do |index|
56
56
  ad_units << {
57
57
  :name => "Ad_Unit_%d" % index,
@@ -51,8 +51,8 @@ def deactivate_ad_units()
51
51
 
52
52
  # Define initial values.
53
53
  offset = 0
54
- page = Hash.new
55
- ad_unit_ids = Array.new
54
+ page = {}
55
+ ad_unit_ids = []
56
56
 
57
57
  begin
58
58
  # Create a statement to get one page with current offset.
@@ -61,7 +61,7 @@ def get_ad_units_by_statement()
61
61
  page = inventory_service.get_ad_units_by_statement(statement)
62
62
 
63
63
  if page[:results]
64
- # Print details about each creative in results.
64
+ # Print details about each ad unit in results.
65
65
  page[:results].each_with_index do |ad_unit, index|
66
66
  puts "%d) Ad unit ID: %d, name: %s, status: %s." %
67
67
  [index, ad_unit[:id], ad_unit[:name], ad_unit[:status]]
@@ -40,7 +40,7 @@ def get_all_ad_units()
40
40
 
41
41
  # Define initial values.
42
42
  offset = 0
43
- page = Hash.new
43
+ page = {}
44
44
 
45
45
  begin
46
46
  # Create a statement to get one page with current offset.
@@ -58,8 +58,8 @@ def deactivate_licas()
58
58
 
59
59
  # Define initial values.
60
60
  offset = 0
61
- page = Hash.new
62
- creative_ids = Array.new
61
+ page = {}
62
+ creative_ids = []
63
63
 
64
64
  begin
65
65
  # Create a statement to get one page with current offset.
@@ -41,7 +41,7 @@ def get_all_licas()
41
41
 
42
42
  # Define initial values.
43
43
  offset = 0
44
- page = Hash.new
44
+ page = {}
45
45
 
46
46
  begin
47
47
  # Create statement for one page with current offset.
@@ -61,8 +61,8 @@ def activate_line_items()
61
61
 
62
62
  # Define initial values.
63
63
  offset = 0
64
- page = Hash.new
65
- line_item_ids = Array.new
64
+ page = {}
65
+ line_item_ids = []
66
66
 
67
67
  begin
68
68
  # Create a statement to get one page with current offset.
@@ -88,7 +88,7 @@ def create_line_items()
88
88
  }
89
89
 
90
90
  # Create an array to store local line item objects.
91
- line_items = Array.new
91
+ line_items = []
92
92
  ITEM_COUNT.times do |index|
93
93
  line_item = {:name => "Line item #%d" % index,
94
94
  :order_id => order_id,
@@ -41,7 +41,7 @@ def get_all_line_items()
41
41
 
42
42
  # Define initial values.
43
43
  offset = 0
44
- page = Hash.new
44
+ page = {}
45
45
 
46
46
  begin
47
47
  # Create a statement to get one page with current offset.
@@ -45,8 +45,8 @@ def approve_orders()
45
45
 
46
46
  # Define initial values.
47
47
  offset = 0
48
- page = Hash.new
49
- order_ids = Array.new
48
+ page = {}
49
+ order_ids = []
50
50
 
51
51
  begin
52
52
  # Create a statement to get one page with current offset.
@@ -49,7 +49,7 @@ def create_orders()
49
49
  trafficker_id = 'INSERT_TRAFFICKER_ID_HERE'.to_i
50
50
 
51
51
  # Create an array to store local order objects.
52
- orders = Array.new
52
+ orders = []
53
53
  ITEM_COUNT.times do |index|
54
54
  orders << {:name => "Order #%d" % index,
55
55
  :advertiser_id => advertiser_id,
@@ -40,7 +40,7 @@ def get_all_orders()
40
40
 
41
41
  # Define initial values.
42
42
  offset = 0
43
- page = Hash.new
43
+ page = {}
44
44
 
45
45
  begin
46
46
  # Create statement for one page with current offset.
@@ -46,21 +46,21 @@ def create_placements()
46
46
  skyscraper_ad_unit_placement = {
47
47
  :name => "Skyscraper AdUnit Placement #%d" % (Time.new.to_f * 1000),
48
48
  :description => 'Contains ad units for creatives of size 120x600',
49
- :targeted_ad_unit_ids => Array.new
49
+ :targeted_ad_unit_ids => []
50
50
  }
51
51
 
52
52
  # Create local placement object to store medium square ad units.
53
53
  medium_square_ad_unit_placement = {
54
54
  :name => "Medium Square AdUnit Placement #%d" % (Time.new.to_f * 1000),
55
55
  :description => 'Contains ad units for creatives of size 300x250',
56
- :targeted_ad_unit_ids => Array.new
56
+ :targeted_ad_unit_ids => []
57
57
  }
58
58
 
59
59
  # Create local placement object to store banner ad units.
60
60
  banner_ad_unit_placement = {
61
61
  :name => "Banner AdUnit Placement #%d" % (Time.new.to_f * 1000),
62
62
  :description => 'Contains ad units for creatives of size 468x60',
63
- :targeted_ad_unit_ids => Array.new
63
+ :targeted_ad_unit_ids => []
64
64
  }
65
65
 
66
66
  # Get the first 500 ad units.
@@ -51,8 +51,8 @@ def deactivate_placements()
51
51
 
52
52
  # Define initial values.
53
53
  offset = 0
54
- page = Hash.new
55
- placement_ids = Array.new
54
+ page = {}
55
+ placement_ids = []
56
56
 
57
57
  begin
58
58
  # Modify the statement to get one page with current offset.
@@ -41,7 +41,7 @@ def get_all_placements()
41
41
 
42
42
  # Define initial values.
43
43
  offset = 0
44
- page = Hash.new
44
+ page = {}
45
45
 
46
46
  begin
47
47
  # Create statement for one page with current offset.
@@ -40,7 +40,7 @@ def get_all_users()
40
40
 
41
41
  # Define initial values.
42
42
  offset = 0
43
- page = Hash.new
43
+ page = {}
44
44
 
45
45
  begin
46
46
  # Create statement for one page with current offset.
data/lib/dfp_api.rb CHANGED
@@ -20,17 +20,17 @@
20
20
  # Contains the main classes for the client library. Takes care of all
21
21
  # dependencies.
22
22
 
23
- gem 'google-ads-common', '~>0.4.0'
24
- require 'logger'
23
+ gem 'google-ads-common', '~>0.5.0'
24
+
25
+ require 'savon'
26
+
25
27
  require 'ads_common/api'
26
- require 'ads_common/config'
27
- require 'ads_common/auth/client_login_handler'
28
- require 'ads_common/savon_headers/client_login_header_handler'
28
+ require 'ads_common/savon_headers/oauth_header_handler'
29
29
  require 'ads_common/savon_headers/simple_header_handler'
30
- require 'dfp_api/errors'
31
30
  require 'dfp_api/api_config'
32
- require 'dfp_api/extensions'
31
+ require 'dfp_api/client_login_header_handler'
33
32
  require 'dfp_api/credential_handler'
33
+ require 'dfp_api/errors'
34
34
 
35
35
  # Main namespace for all the client library's modules and classes.
36
36
  module DfpApi
@@ -46,6 +46,11 @@ module DfpApi
46
46
  @credential_handler = DfpApi::CredentialHandler.new(@config)
47
47
  end
48
48
 
49
+ # Getter for the API service configurations.
50
+ def api_config
51
+ DfpApi::ApiConfig
52
+ end
53
+
49
54
  # Sets the logger to use.
50
55
  def logger=(logger)
51
56
  super(logger)
@@ -55,75 +60,24 @@ module DfpApi
55
60
  end
56
61
  end
57
62
 
58
- # Getter for the API service configurations.
59
- def api_config
60
- DfpApi::ApiConfig
61
- end
62
-
63
63
  private
64
64
 
65
- # Creates an appropriate authentication handler for each service (reuses the
66
- # ClientLogin one to avoid generating multiple tokens unnecessarily).
67
- def create_auth_handler(environment, version)
68
- if @client_login_handler.nil?
69
- auth_server = api_config.auth_server(environment)
70
- @client_login_handler =
71
- AdsCommon::Auth::ClientLoginHandler.new(config, auth_server,
72
- api_config.headers_config[:LOGIN_SERVICE_NAME])
73
- end
74
- return @client_login_handler
75
- end
76
-
77
65
  # Retrieve DFP HeaderHandlers per credential.
78
- def soap_header_handlers(auth_handler, header_list, version)
79
- ns = api_config.headers_config[:HEADER_NAMESPACE_PREAMBLE] + version.to_s
80
- handler = case version
81
- when :v201101 then AdsCommon::SavonHeaders::SimpleHeaderHandler
82
- when :v201103 then AdsCommon::SavonHeaders::ClientLoginHeaderHandler
83
- when :v201104 then AdsCommon::SavonHeaders::ClientLoginHeaderHandler
84
- else
85
- raise AdsCommon::Errors::Error,
86
- "Unknown or unspecified version: \"%s\"" % version.to_s
66
+ def soap_header_handlers(auth_handler, header_list, version, namespace)
67
+ handler = nil
68
+ auth_method = @config.read('authentication.method',
69
+ 'ClientLogin').to_s.upcase.to_sym
70
+ handler = case auth_method
71
+ when :CLIENTLOGIN
72
+ (version == :v201101) ?
73
+ AdsCommon::SavonHeaders::SimpleHeaderHandler :
74
+ DfpApi::ClientLoginHeaderHandler
75
+ when :OAUTH
76
+ AdsCommon::SavonHeaders::OAuthHeaderHandler
87
77
  end
78
+ ns = api_config.headers_config[:HEADER_NAMESPACE_PREAMBLE] + version.to_s
88
79
  return [handler.new(@credential_handler, auth_handler,
89
80
  api_config.headers_config[:REQUEST_HEADER], ns, version)]
90
81
  end
91
-
92
- # Handle loading of a single service wrapper. Needs to be implemented on
93
- # specific API level.
94
- #
95
- # Args:
96
- # - version: intended API version. Must be a symbol.
97
- # - service: name for the intended service. Must be a symbol.
98
- #
99
- # Returns:
100
- # - a wrapper generated for the service.
101
- #
102
- def prepare_wrapper(version, service)
103
- environment = config.read('service.environment')
104
- api_config.do_require(version, service)
105
- endpoint = api_config.endpoint(environment, version, service)
106
- interface_class_name = api_config.interface_name(version, service)
107
- endpoint_url = endpoint.nil? ? nil : endpoint.to_s + service.to_s
108
- wrapper = class_for_path(interface_class_name).new(endpoint_url)
109
-
110
- auth_handler = create_auth_handler(environment, version)
111
- header_list =
112
- auth_handler.header_list(@credential_handler.credentials(version))
113
-
114
- soap_handlers = soap_header_handlers(auth_handler, header_list, version)
115
- soap_handlers.each do |handler|
116
- wrapper.headerhandler << handler
117
- end
118
-
119
- return wrapper
120
- end
121
-
122
- # Converts complete class path into class object.
123
- def class_for_path(path)
124
- path.split('::').inject(Kernel) do |scope, const_name|
125
- scope.const_get(const_name)
126
- end
127
- end
128
82
  end
129
83
  end
@@ -40,7 +40,7 @@ module DfpApi
40
40
  # Set other constants
41
41
  API_NAME = 'DfpApi'
42
42
  API_PATH = 'dfp_api'
43
- CLIENT_LIB_VERSION = '0.2.1'
43
+ CLIENT_LIB_VERSION = '0.2.2'
44
44
  DEFAULT_CONFIG_FILENAME = 'dfp_api.yml'
45
45
 
46
46
  # Configure the services available to each version
@@ -65,11 +65,13 @@ module DfpApi
65
65
  # Configure the different environments, with the base URL for each one
66
66
  @@environment_config = {
67
67
  :PRODUCTION => {
68
+ :oauth_scope => 'https://www.google.com/apis/ads/publisher/',
68
69
  :v201101 => 'https://www.google.com/apis/ads/publisher/',
69
70
  :v201103 => 'https://www.google.com/apis/ads/publisher/',
70
71
  :v201104 => 'https://www.google.com/apis/ads/publisher/'
71
72
  },
72
73
  :SANDBOX => {
74
+ :oauth_scope => 'https://sandbox.google.com/apis/ads/publisher/',
73
75
  :v201101 => 'https://sandbox.google.com/apis/ads/publisher/',
74
76
  :v201103 => 'https://sandbox.google.com/apis/ads/publisher/',
75
77
  :v201104 => 'https://sandbox.google.com/apis/ads/publisher/'
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Authors:: api.dklimkin@gmail.com (Danial Klimkin)
4
+ #
5
+ # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
6
+ #
7
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
16
+ # implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+ # Handles SOAP headers and namespaces definition for ClientLogin type header.
21
+
22
+ require 'ads_common/savon_headers/simple_header_handler'
23
+
24
+ module DfpApi
25
+ class ClientLoginHeaderHandler < AdsCommon::SavonHeaders::SimpleHeaderHandler
26
+ private
27
+
28
+ # Generates SOAP request header with login credentials and namespace
29
+ # definition.
30
+ #
31
+ # Args:
32
+ # - None
33
+ #
34
+ # Returns:
35
+ # - Hash containing a header with filled in credentials
36
+ #
37
+ def generate_request_header()
38
+ headers = @auth_handler.headers(@credential_handler.credentials)
39
+ return headers.inject({}) do |request_header, (header, value)|
40
+ if header == :authToken
41
+ auth_header = prepend_namespace('authentication')
42
+ request_header[auth_header] = {
43
+ prepend_namespace('token') => value
44
+ }
45
+ request_header[:attributes!] ||= {}
46
+ request_header[:attributes!][auth_header] = {
47
+ 'xsi:type' => prepend_namespace('ClientLogin'),
48
+ }
49
+ else
50
+ request_header[prepend_namespace(header)] = value
51
+ end
52
+ request_header
53
+ end
54
+ end
55
+ end
56
+ end