google-dfp-api 0.2.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.
Files changed (106) hide show
  1. data/COPYING +201 -0
  2. data/ChangeLog +10 -0
  3. data/README +210 -0
  4. data/Rakefile +83 -0
  5. data/examples/v201101/common/error_handling.rb +76 -0
  6. data/examples/v201101/company_service/create_companies.rb +82 -0
  7. data/examples/v201101/company_service/get_all_companies.rb +92 -0
  8. data/examples/v201101/company_service/get_companies_by_statement.rb +88 -0
  9. data/examples/v201101/company_service/get_company.rb +72 -0
  10. data/examples/v201101/company_service/update_companies.rb +95 -0
  11. data/examples/v201101/creative_service/copy_image_creatives.rb +117 -0
  12. data/examples/v201101/creative_service/create_creatives.rb +109 -0
  13. data/examples/v201101/creative_service/get_all_creatives.rb +93 -0
  14. data/examples/v201101/creative_service/get_creative.rb +72 -0
  15. data/examples/v201101/creative_service/get_creatives_by_statement.rb +87 -0
  16. data/examples/v201101/creative_service/update_creatives.rb +98 -0
  17. data/examples/v201101/custom_targeting_service/create_custom_targeting_keys_and_values.rb +118 -0
  18. data/examples/v201101/custom_targeting_service/delete_custom_targeting_keys.rb +121 -0
  19. data/examples/v201101/custom_targeting_service/delete_custom_targeting_values.rb +125 -0
  20. data/examples/v201101/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +148 -0
  21. data/examples/v201101/custom_targeting_service/get_custom_targeting_keys_by_statement.rb +92 -0
  22. data/examples/v201101/custom_targeting_service/get_custom_targeting_values_by_statement.rb +98 -0
  23. data/examples/v201101/custom_targeting_service/update_custom_targeting_keys.rb +94 -0
  24. data/examples/v201101/custom_targeting_service/update_custom_targeting_values.rb +106 -0
  25. data/examples/v201101/forecast_service/get_forecast.rb +103 -0
  26. data/examples/v201101/forecast_service/get_forecast_by_id.rb +80 -0
  27. data/examples/v201101/inventory_service/create_ad_units.rb +98 -0
  28. data/examples/v201101/inventory_service/deactivate_ad_units.rb +119 -0
  29. data/examples/v201101/inventory_service/get_ad_unit.rb +72 -0
  30. data/examples/v201101/inventory_service/get_ad_units_by_statement.rb +96 -0
  31. data/examples/v201101/inventory_service/get_all_ad_units.rb +93 -0
  32. data/examples/v201101/inventory_service/update_ad_units.rb +94 -0
  33. data/examples/v201101/line_item_creative_association_service/create_licas.rb +94 -0
  34. data/examples/v201101/line_item_creative_association_service/deactivate_licas.rb +127 -0
  35. data/examples/v201101/line_item_creative_association_service/get_all_licas.rb +95 -0
  36. data/examples/v201101/line_item_creative_association_service/get_lica.rb +77 -0
  37. data/examples/v201101/line_item_creative_association_service/get_licas_by_statement.rb +91 -0
  38. data/examples/v201101/line_item_creative_association_service/update_licas.rb +92 -0
  39. data/examples/v201101/line_item_service/activate_line_items.rb +131 -0
  40. data/examples/v201101/line_item_service/create_line_items.rb +141 -0
  41. data/examples/v201101/line_item_service/get_all_line_items.rb +94 -0
  42. data/examples/v201101/line_item_service/get_line_item.rb +74 -0
  43. data/examples/v201101/line_item_service/get_line_items_by_statement.rb +89 -0
  44. data/examples/v201101/line_item_service/target_custom_criteria.rb +135 -0
  45. data/examples/v201101/line_item_service/update_line_items.rb +110 -0
  46. data/examples/v201101/network_service/get_all_networks.rb +74 -0
  47. data/examples/v201101/network_service/get_current_network.rb +66 -0
  48. data/examples/v201101/order_service/approve_orders.rb +116 -0
  49. data/examples/v201101/order_service/create_orders.rb +93 -0
  50. data/examples/v201101/order_service/get_all_orders.rb +93 -0
  51. data/examples/v201101/order_service/get_order.rb +74 -0
  52. data/examples/v201101/order_service/get_orders_by_statement.rb +90 -0
  53. data/examples/v201101/order_service/update_orders.rb +95 -0
  54. data/examples/v201101/placement_service/create_placements.rb +128 -0
  55. data/examples/v201101/placement_service/deactivate_placements.rb +118 -0
  56. data/examples/v201101/placement_service/get_all_placements.rb +93 -0
  57. data/examples/v201101/placement_service/get_placement.rb +74 -0
  58. data/examples/v201101/placement_service/get_placements_by_statement.rb +86 -0
  59. data/examples/v201101/placement_service/update_placements.rb +96 -0
  60. data/examples/v201101/publisher_query_language_service/get_all_cities.rb +85 -0
  61. data/examples/v201101/publisher_query_language_service/get_all_countries.rb +85 -0
  62. data/examples/v201101/publisher_query_language_service/get_all_metros.rb +85 -0
  63. data/examples/v201101/publisher_query_language_service/get_all_regions.rb +85 -0
  64. data/examples/v201101/report_service/download_report.rb +81 -0
  65. data/examples/v201101/report_service/run_delivery_report.rb +89 -0
  66. data/examples/v201101/report_service/run_inventory_report.rb +90 -0
  67. data/examples/v201101/report_service/run_sales_report.rb +89 -0
  68. data/examples/v201101/user_service/create_users.rb +89 -0
  69. data/examples/v201101/user_service/deactivate_users.rb +99 -0
  70. data/examples/v201101/user_service/get_all_roles.rb +73 -0
  71. data/examples/v201101/user_service/get_all_users.rb +92 -0
  72. data/examples/v201101/user_service/get_user.rb +73 -0
  73. data/examples/v201101/user_service/get_users_by_statement.rb +79 -0
  74. data/examples/v201101/user_service/update_users.rb +89 -0
  75. data/lib/dfp_api.rb +142 -0
  76. data/lib/dfp_api/api_config.rb +126 -0
  77. data/lib/dfp_api/credential_handler.rb +60 -0
  78. data/lib/dfp_api/errors.rb +59 -0
  79. data/lib/dfp_api/extensions.rb +54 -0
  80. data/lib/dfp_api/v201101/company_service.rb +52 -0
  81. data/lib/dfp_api/v201101/company_service_registry.rb +37 -0
  82. data/lib/dfp_api/v201101/creative_service.rb +52 -0
  83. data/lib/dfp_api/v201101/creative_service_registry.rb +37 -0
  84. data/lib/dfp_api/v201101/custom_targeting_service.rb +60 -0
  85. data/lib/dfp_api/v201101/custom_targeting_service_registry.rb +37 -0
  86. data/lib/dfp_api/v201101/forecast_service.rb +36 -0
  87. data/lib/dfp_api/v201101/forecast_service_registry.rb +37 -0
  88. data/lib/dfp_api/v201101/inventory_service.rb +56 -0
  89. data/lib/dfp_api/v201101/inventory_service_registry.rb +37 -0
  90. data/lib/dfp_api/v201101/line_item_creative_association_service.rb +56 -0
  91. data/lib/dfp_api/v201101/line_item_creative_association_service_registry.rb +37 -0
  92. data/lib/dfp_api/v201101/line_item_service.rb +56 -0
  93. data/lib/dfp_api/v201101/line_item_service_registry.rb +37 -0
  94. data/lib/dfp_api/v201101/network_service.rb +40 -0
  95. data/lib/dfp_api/v201101/network_service_registry.rb +37 -0
  96. data/lib/dfp_api/v201101/order_service.rb +56 -0
  97. data/lib/dfp_api/v201101/order_service_registry.rb +37 -0
  98. data/lib/dfp_api/v201101/placement_service.rb +56 -0
  99. data/lib/dfp_api/v201101/placement_service_registry.rb +37 -0
  100. data/lib/dfp_api/v201101/publisher_query_language_service.rb +32 -0
  101. data/lib/dfp_api/v201101/publisher_query_language_service_registry.rb +37 -0
  102. data/lib/dfp_api/v201101/report_service.rb +40 -0
  103. data/lib/dfp_api/v201101/report_service_registry.rb +37 -0
  104. data/lib/dfp_api/v201101/user_service.rb +60 -0
  105. data/lib/dfp_api/v201101/user_service_registry.rb +37 -0
  106. metadata +204 -0
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Author:: 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
+ # This example gets a user by its ID. To create users, run create_users.rb.
21
+ #
22
+ # Tags: UserService.getUser
23
+
24
+ require 'rubygems'
25
+ require 'dfp_api'
26
+
27
+ API_VERSION = :v201101
28
+
29
+ def get_user()
30
+ # Get DfpApi instance and load configuration from ~/dfp_api.yml.
31
+ dfp = DfpApi::Api.new
32
+
33
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
34
+ # the configuration file or provide your own logger:
35
+ # dfp.logger = Logger.new('dfp_xml.log')
36
+
37
+ # Get the UserService.
38
+ user_service = dfp.service(:UserService, API_VERSION)
39
+
40
+ # Set the ID of the user to get.
41
+ user_id = 'INSERT_USER_ID_HERE'.to_i
42
+
43
+ # Get the user.
44
+ user = user_service.get_user(user_id)
45
+
46
+ if user
47
+ puts "User with ID: %d, name: %s, email: %s and role: %s was found." %
48
+ [user[:id], user[:name], user[:email], user[:role_name]]
49
+ else
50
+ puts 'No user found for this ID.'
51
+ end
52
+ end
53
+
54
+ if __FILE__ == $0
55
+ begin
56
+ get_user()
57
+
58
+ # HTTP errors.
59
+ rescue AdsCommon::Errors::HttpError => e
60
+ puts "HTTP Error: %s" % e
61
+
62
+ # API errors.
63
+ rescue DfpApi::Errors::ApiException => e
64
+ puts "Message: %s" % e.message
65
+ puts 'Errors:'
66
+ e.errors.each_with_index do |error, index|
67
+ puts "\tError [%d]:" % (index + 1)
68
+ error.each do |field, value|
69
+ puts "\t\t%s: %s" % [field, value]
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Author:: 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
+ # This example gets all users sorted by name. The statement retrieves up to the
21
+ # maximum page size limit of 500. To create new users, run create_users.rb.
22
+ #
23
+ # Tags: UserService.getUsersByStatement
24
+
25
+ require 'rubygems'
26
+ require 'dfp_api'
27
+
28
+ API_VERSION = :v201101
29
+
30
+ def get_users_by_statement()
31
+ # Get DfpApi instance and load configuration from ~/dfp_api.yml.
32
+ dfp = DfpApi::Api.new
33
+
34
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
35
+ # the configuration file or provide your own logger:
36
+ # dfp.logger = Logger.new('dfp_xml.log')
37
+
38
+ # Get the UserService.
39
+ user_service = dfp.service(:UserService, API_VERSION)
40
+
41
+ # Create a statement to get all users sorted by name.
42
+ statement = {:query => 'ORDER BY name LIMIT 500'}
43
+
44
+ # Get users by statement.
45
+ page = user_service.get_users_by_statement(statement)
46
+
47
+ if page and page[:results]
48
+ page[:results].each_with_index do |user, index|
49
+ puts "%d) User ID: %d, name: %s, email: %s, role: %s." % [index,
50
+ user[:id], user[:name], user[:email], user[:role_name]]
51
+ end
52
+ end
53
+
54
+ # Print a footer.
55
+ if page.include?(:total_result_set_size)
56
+ puts "Number of results found: %d" % page[:total_result_set_size]
57
+ end
58
+ end
59
+
60
+ if __FILE__ == $0
61
+ begin
62
+ get_users_by_statement()
63
+
64
+ # HTTP errors.
65
+ rescue AdsCommon::Errors::HttpError => e
66
+ puts "HTTP Error: %s" % e
67
+
68
+ # API errors.
69
+ rescue DfpApi::Errors::ApiException => e
70
+ puts "Message: %s" % e.message
71
+ puts 'Errors:'
72
+ e.errors.each_with_index do |error, index|
73
+ puts "\tError [%d]:" % (index + 1)
74
+ error.each do |field, value|
75
+ puts "\t\t%s: %s" % [field, value]
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Author:: 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
+ # This example updates all users by adding "Sr." to the end of each name (after
21
+ # a very large baby boom and lack of creativity). To determine which users
22
+ # exist, run get_all_users.rb.
23
+ #
24
+ # Tags: UserService.updateUsers
25
+
26
+ require 'rubygems'
27
+ require 'dfp_api'
28
+
29
+ API_VERSION = :v201101
30
+
31
+ def update_users()
32
+ # Get DfpApi instance and load configuration from ~/dfp_api.yml.
33
+ dfp = DfpApi::Api.new
34
+
35
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
36
+ # the configuration file or provide your own logger:
37
+ # dfp.logger = Logger.new('dfp_xml.log')
38
+
39
+ # Get the UserService.
40
+ user_service = dfp.service(:UserService, API_VERSION)
41
+
42
+ # Create a statement to get all users.
43
+ statement = {:query => 'LIMIT 500'}
44
+
45
+ # Get users by statement.
46
+ page = user_service.get_users_by_statement(statement)
47
+
48
+ if page[:results]
49
+ users = page[:results]
50
+
51
+ # Update each local users object by changing its name.
52
+ users.each {|user| user[:name] += ' Sr.'}
53
+
54
+ # Update the users on the server.
55
+ return_users = user_service.update_users(users)
56
+
57
+ if return_users
58
+ return_users.each do |user|
59
+ puts ("User ID: %d, email: %s was updated with name %s") %
60
+ [user[:id], user[:email], user[:name]]
61
+ end
62
+ else
63
+ raise 'No users were updated.'
64
+ end
65
+ else
66
+ puts 'No users found to update.'
67
+ end
68
+ end
69
+
70
+ if __FILE__ == $0
71
+ begin
72
+ update_users()
73
+
74
+ # HTTP errors.
75
+ rescue AdsCommon::Errors::HttpError => e
76
+ puts "HTTP Error: %s" % e
77
+
78
+ # API errors.
79
+ rescue DfpApi::Errors::ApiException => e
80
+ puts "Message: %s" % e.message
81
+ puts 'Errors:'
82
+ e.errors.each_with_index do |error, index|
83
+ puts "\tError [%d]:" % (index + 1)
84
+ error.each do |field, value|
85
+ puts "\t\t%s: %s" % [field, value]
86
+ end
87
+ end
88
+ end
89
+ end
data/lib/dfp_api.rb ADDED
@@ -0,0 +1,142 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Authors:: api.dklimkin@gmail.com (Danial Klimkin)
4
+ #
5
+ # Copyright:: Copyright 2010, 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
+ # Contains the main classes for the client library. Takes care of all
21
+ # dependencies.
22
+
23
+ gem 'google-ads-common', '~>0.3.0'
24
+ require 'logger'
25
+ require 'ads_common/api'
26
+ require 'ads_common/config'
27
+ require 'ads_common/auth/client_login_handler'
28
+ require 'ads_common/savon_headers/simple_header_handler'
29
+ require 'dfp_api/errors'
30
+ require 'dfp_api/api_config'
31
+ require 'dfp_api/extensions'
32
+ require 'dfp_api/credential_handler'
33
+
34
+ # Main namespace for all the client library's modules and classes.
35
+ module DfpApi
36
+
37
+ # Wrapper class that serves as the main point of access for all the API usage.
38
+ #
39
+ # Holds all the services, as well as login credentials.
40
+ #
41
+ class Api < AdsCommon::Api
42
+ # TODO move to service.rb
43
+ HEADER_NAMESPACE_PREAMBLE = 'https://www.google.com/apis/ads/publisher/'
44
+ REQUEST_HEADER = 'RequestHeader'
45
+ LOGIN_SERVICE_NAME = 'gam'
46
+
47
+ public
48
+
49
+ # Getter for the API service configurations
50
+ def api_config
51
+ DfpApi::ApiConfig
52
+ end
53
+
54
+ # Constructor for Api
55
+ def initialize(provided_config = nil)
56
+ super(provided_config)
57
+ @credential_handler = DfpApi::CredentialHandler.new(@config)
58
+ env_string = config.read('service.environment')
59
+ if env_string.nil? or
60
+ !api_config.environments.include?(env_string.upcase.to_sym)
61
+ raise AdsCommon::Errors::Error,
62
+ "Unknown or unspecified environment: \"%s\"" % env_string
63
+ end
64
+ @drivers = Hash.new
65
+ @wrappers = Hash.new
66
+ end
67
+
68
+ # Sets the logger to use.
69
+ def logger=(logger)
70
+ super(logger)
71
+ Savon.configure do |config|
72
+ config.log_level = :debug
73
+ config.logger = logger
74
+ end
75
+ end
76
+
77
+ private
78
+
79
+ # Creates an appropriate authentication handler for each service (reuses the
80
+ # ClientLogin one to avoid generating multiple tokens unnecessarily).
81
+ def create_auth_handler(version, environment)
82
+ if @client_login_handler.nil?
83
+ auth_server = api_config.auth_server(environment)
84
+ @client_login_handler =
85
+ AdsCommon::Auth::ClientLoginHandler.new(config, auth_server,
86
+ LOGIN_SERVICE_NAME)
87
+ end
88
+ return @client_login_handler
89
+ end
90
+
91
+ # Retrieve DFP HeaderHandlers per credential.
92
+ def soap_header_handlers(auth_handler, header_list, version)
93
+ ns = HEADER_NAMESPACE_PREAMBLE + version.to_s
94
+ return [AdsCommon::SavonHeaders::SimpleHeaderHandler.new(
95
+ @credential_handler, auth_handler, REQUEST_HEADER, ns, version)]
96
+ end
97
+
98
+ # Handle loading of a single service.
99
+ # Creates the driver, sets up handlers, declares the appropriate wrapper
100
+ # class and creates an instance of it.
101
+ #
102
+ # Args:
103
+ # - version: intended API version. Must be an integer.
104
+ # - service: name for the intended service
105
+ #
106
+ # Returns:
107
+ # - the driver for the service
108
+ # - the simplified wrapper generated for the driver
109
+ #
110
+ def prepare_driver(version, service)
111
+ version = version.to_sym
112
+ service = service.to_sym
113
+ environment = config.read('service.environment')
114
+ api_config.do_require(version, service)
115
+ endpoint = api_config.endpoint(environment, version, service)
116
+ interface_class_name = api_config.interface_name(version, service)
117
+ endpoint_url = endpoint.nil? ? nil : endpoint.to_s + service.to_s
118
+ driver = class_for_path(interface_class_name).new(endpoint_url)
119
+
120
+ auth_handler = create_auth_handler(version, environment)
121
+ header_list =
122
+ auth_handler.header_list(@credential_handler.credentials(version))
123
+
124
+ soap_handlers = soap_header_handlers(auth_handler, header_list, version)
125
+
126
+ soap_handlers.each do |handler|
127
+ driver.headerhandler << handler
128
+ end
129
+
130
+ @drivers[[version, service]] = driver
131
+ @wrappers[[version, service]] = driver
132
+ return driver, driver
133
+ end
134
+
135
+ # Converts complete class path into class object.
136
+ def class_for_path(path)
137
+ path.split('::').inject(Kernel) do |scope, const_name|
138
+ scope.const_get(const_name)
139
+ end
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,126 @@
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
+ # Helper methods for loading and managing the available services in the DFP
21
+ # API.
22
+
23
+ require 'ads_common/api_config'
24
+ require 'savon'
25
+
26
+ module DfpApi
27
+
28
+ # Contains helper methods for loading and managing the available services.
29
+ module ApiConfig
30
+
31
+ class << ApiConfig
32
+ include AdsCommon::ApiConfig
33
+ end
34
+
35
+ # Set defaults
36
+ DEFAULT_VERSION = :v201101
37
+ DEFAULT_ENVIRONMENT = :PRODUCTION
38
+ LATEST_VERSION = :v201101
39
+
40
+ # Set other constants
41
+ API_NAME = 'DfpApi'
42
+ API_PATH = 'dfp_api'
43
+ CLIENT_LIB_VERSION = '0.2.0'
44
+ DEFAULT_CONFIG_FILENAME = 'dfp_api.yml'
45
+
46
+ # Configure the services available to each version
47
+ @@service_config = {
48
+ :v201101 => [:CompanyService, :CreativeService, :ForecastService,
49
+ :InventoryService, :LineItemCreativeAssociationService,
50
+ :LineItemService, :NetworkService, :OrderService,
51
+ :PlacementService, :ReportService, :UserService,
52
+ :CustomTargetingService, :PublisherQueryLanguageService]
53
+ }
54
+
55
+ # Configure the different environments, with the base URL for each one
56
+ @@environment_config = {
57
+ :PRODUCTION => {
58
+ :v201101 => 'https://www.google.com/apis/ads/publisher/'
59
+ },
60
+ :SANDBOX => {
61
+ :v201101 => 'https://sandbox.google.com/apis/ads/publisher/'
62
+ }
63
+ }
64
+
65
+ # Configure the auth servers to use for each environment
66
+ @@auth_server_config = {
67
+ :PRODUCTION => 'https://www.google.com',
68
+ :SANDBOX => 'https://www.google.com'
69
+ }
70
+
71
+ public
72
+
73
+ def self.do_require(version, service)
74
+ service_name = service.to_s.snakecase()
75
+ filename = "%s/%s/%s" % [api_path, version, service_name]
76
+ require filename
77
+ end
78
+
79
+ def self.interface_name(version, service)
80
+ version = version.to_sym
81
+ service = service.to_sym
82
+ return module_name(version, service) + "::" + service.to_s
83
+ end
84
+
85
+ # Getters for constants and module variables.
86
+ def self.default_version
87
+ DEFAULT_VERSION
88
+ end
89
+
90
+ def self.default_environment
91
+ DEFAULT_ENVIRONMENT
92
+ end
93
+
94
+ def self.latest_version
95
+ LATEST_VERSION
96
+ end
97
+
98
+ def self.api_name
99
+ API_NAME
100
+ end
101
+
102
+ def self.api_path
103
+ API_PATH
104
+ end
105
+
106
+ def self.service_config
107
+ @@service_config
108
+ end
109
+
110
+ def self.environment_config
111
+ @@environment_config
112
+ end
113
+
114
+ def self.subdir_config
115
+ nil
116
+ end
117
+
118
+ def self.auth_server_config
119
+ @@auth_server_config
120
+ end
121
+
122
+ def self.default_config_filename
123
+ DEFAULT_CONFIG_FILENAME
124
+ end
125
+ end
126
+ end