google-dfp-api 0.2.1 → 0.2.2

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.
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