google-adwords-api 1.5.0 → 1.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.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/COPYING +0 -0
  3. data/ChangeLog +4 -0
  4. data/README.md +9 -236
  5. data/lib/adwords_api.rb +2 -234
  6. metadata +8 -134
  7. data/adwords_api.yml +0 -53
  8. data/lib/adwords_api/api_config.rb +0 -221
  9. data/lib/adwords_api/batch_job_utils.rb +0 -334
  10. data/lib/adwords_api/credential_handler.rb +0 -96
  11. data/lib/adwords_api/errors.rb +0 -110
  12. data/lib/adwords_api/incremental_upload_helper.rb +0 -75
  13. data/lib/adwords_api/query_utils/query_builder.rb +0 -41
  14. data/lib/adwords_api/query_utils/report_query.rb +0 -30
  15. data/lib/adwords_api/query_utils/report_query_builder.rb +0 -82
  16. data/lib/adwords_api/query_utils/service_query.rb +0 -62
  17. data/lib/adwords_api/query_utils/service_query_builder.rb +0 -83
  18. data/lib/adwords_api/query_utils/where_builder.rb +0 -97
  19. data/lib/adwords_api/report_header_handler.rb +0 -80
  20. data/lib/adwords_api/report_stream.rb +0 -70
  21. data/lib/adwords_api/report_utils.rb +0 -383
  22. data/lib/adwords_api/utils.rb +0 -56
  23. data/lib/adwords_api/utils_reporter.rb +0 -58
  24. data/lib/adwords_api/v201809/account_label_service.rb +0 -46
  25. data/lib/adwords_api/v201809/account_label_service_registry.rb +0 -46
  26. data/lib/adwords_api/v201809/ad_customizer_feed_service.rb +0 -46
  27. data/lib/adwords_api/v201809/ad_customizer_feed_service_registry.rb +0 -46
  28. data/lib/adwords_api/v201809/ad_group_ad_service.rb +0 -62
  29. data/lib/adwords_api/v201809/ad_group_ad_service_registry.rb +0 -46
  30. data/lib/adwords_api/v201809/ad_group_bid_modifier_service.rb +0 -54
  31. data/lib/adwords_api/v201809/ad_group_bid_modifier_service_registry.rb +0 -46
  32. data/lib/adwords_api/v201809/ad_group_criterion_service.rb +0 -62
  33. data/lib/adwords_api/v201809/ad_group_criterion_service_registry.rb +0 -46
  34. data/lib/adwords_api/v201809/ad_group_extension_setting_service.rb +0 -54
  35. data/lib/adwords_api/v201809/ad_group_extension_setting_service_registry.rb +0 -46
  36. data/lib/adwords_api/v201809/ad_group_feed_service.rb +0 -54
  37. data/lib/adwords_api/v201809/ad_group_feed_service_registry.rb +0 -46
  38. data/lib/adwords_api/v201809/ad_group_service.rb +0 -62
  39. data/lib/adwords_api/v201809/ad_group_service_registry.rb +0 -46
  40. data/lib/adwords_api/v201809/ad_param_service.rb +0 -46
  41. data/lib/adwords_api/v201809/ad_param_service_registry.rb +0 -46
  42. data/lib/adwords_api/v201809/ad_service.rb +0 -46
  43. data/lib/adwords_api/v201809/ad_service_registry.rb +0 -46
  44. data/lib/adwords_api/v201809/adwords_user_list_service.rb +0 -62
  45. data/lib/adwords_api/v201809/adwords_user_list_service_registry.rb +0 -46
  46. data/lib/adwords_api/v201809/asset_service.rb +0 -46
  47. data/lib/adwords_api/v201809/asset_service_registry.rb +0 -46
  48. data/lib/adwords_api/v201809/batch_job_service.rb +0 -54
  49. data/lib/adwords_api/v201809/batch_job_service_registry.rb +0 -46
  50. data/lib/adwords_api/v201809/bidding_strategy_service.rb +0 -54
  51. data/lib/adwords_api/v201809/bidding_strategy_service_registry.rb +0 -46
  52. data/lib/adwords_api/v201809/budget_order_service.rb +0 -54
  53. data/lib/adwords_api/v201809/budget_order_service_registry.rb +0 -46
  54. data/lib/adwords_api/v201809/budget_service.rb +0 -54
  55. data/lib/adwords_api/v201809/budget_service_registry.rb +0 -46
  56. data/lib/adwords_api/v201809/campaign_bid_modifier_service.rb +0 -54
  57. data/lib/adwords_api/v201809/campaign_bid_modifier_service_registry.rb +0 -46
  58. data/lib/adwords_api/v201809/campaign_criterion_service.rb +0 -54
  59. data/lib/adwords_api/v201809/campaign_criterion_service_registry.rb +0 -46
  60. data/lib/adwords_api/v201809/campaign_extension_setting_service.rb +0 -54
  61. data/lib/adwords_api/v201809/campaign_extension_setting_service_registry.rb +0 -46
  62. data/lib/adwords_api/v201809/campaign_feed_service.rb +0 -54
  63. data/lib/adwords_api/v201809/campaign_feed_service_registry.rb +0 -46
  64. data/lib/adwords_api/v201809/campaign_group_performance_target_service.rb +0 -46
  65. data/lib/adwords_api/v201809/campaign_group_performance_target_service_registry.rb +0 -46
  66. data/lib/adwords_api/v201809/campaign_group_service.rb +0 -46
  67. data/lib/adwords_api/v201809/campaign_group_service_registry.rb +0 -46
  68. data/lib/adwords_api/v201809/campaign_service.rb +0 -62
  69. data/lib/adwords_api/v201809/campaign_service_registry.rb +0 -46
  70. data/lib/adwords_api/v201809/campaign_shared_set_service.rb +0 -54
  71. data/lib/adwords_api/v201809/campaign_shared_set_service_registry.rb +0 -46
  72. data/lib/adwords_api/v201809/constant_data_service.rb +0 -110
  73. data/lib/adwords_api/v201809/constant_data_service_registry.rb +0 -46
  74. data/lib/adwords_api/v201809/conversion_tracker_service.rb +0 -54
  75. data/lib/adwords_api/v201809/conversion_tracker_service_registry.rb +0 -46
  76. data/lib/adwords_api/v201809/custom_affinity_service.rb +0 -62
  77. data/lib/adwords_api/v201809/custom_affinity_service_registry.rb +0 -46
  78. data/lib/adwords_api/v201809/customer_extension_setting_service.rb +0 -54
  79. data/lib/adwords_api/v201809/customer_extension_setting_service_registry.rb +0 -46
  80. data/lib/adwords_api/v201809/customer_feed_service.rb +0 -54
  81. data/lib/adwords_api/v201809/customer_feed_service_registry.rb +0 -46
  82. data/lib/adwords_api/v201809/customer_negative_criterion_service.rb +0 -54
  83. data/lib/adwords_api/v201809/customer_negative_criterion_service_registry.rb +0 -46
  84. data/lib/adwords_api/v201809/customer_service.rb +0 -62
  85. data/lib/adwords_api/v201809/customer_service_registry.rb +0 -46
  86. data/lib/adwords_api/v201809/customer_sync_service.rb +0 -38
  87. data/lib/adwords_api/v201809/customer_sync_service_registry.rb +0 -47
  88. data/lib/adwords_api/v201809/data_service.rb +0 -94
  89. data/lib/adwords_api/v201809/data_service_registry.rb +0 -46
  90. data/lib/adwords_api/v201809/draft_async_error_service.rb +0 -46
  91. data/lib/adwords_api/v201809/draft_async_error_service_registry.rb +0 -46
  92. data/lib/adwords_api/v201809/draft_service.rb +0 -54
  93. data/lib/adwords_api/v201809/draft_service_registry.rb +0 -46
  94. data/lib/adwords_api/v201809/feed_item_service.rb +0 -54
  95. data/lib/adwords_api/v201809/feed_item_service_registry.rb +0 -46
  96. data/lib/adwords_api/v201809/feed_item_target_service.rb +0 -54
  97. data/lib/adwords_api/v201809/feed_item_target_service_registry.rb +0 -46
  98. data/lib/adwords_api/v201809/feed_mapping_service.rb +0 -54
  99. data/lib/adwords_api/v201809/feed_mapping_service_registry.rb +0 -46
  100. data/lib/adwords_api/v201809/feed_service.rb +0 -54
  101. data/lib/adwords_api/v201809/feed_service_registry.rb +0 -46
  102. data/lib/adwords_api/v201809/label_service.rb +0 -54
  103. data/lib/adwords_api/v201809/label_service_registry.rb +0 -46
  104. data/lib/adwords_api/v201809/location_criterion_service.rb +0 -46
  105. data/lib/adwords_api/v201809/location_criterion_service_registry.rb +0 -46
  106. data/lib/adwords_api/v201809/managed_customer_service.rb +0 -78
  107. data/lib/adwords_api/v201809/managed_customer_service_registry.rb +0 -46
  108. data/lib/adwords_api/v201809/media_service.rb +0 -54
  109. data/lib/adwords_api/v201809/media_service_registry.rb +0 -46
  110. data/lib/adwords_api/v201809/offline_call_conversion_feed_service.rb +0 -38
  111. data/lib/adwords_api/v201809/offline_call_conversion_feed_service_registry.rb +0 -46
  112. data/lib/adwords_api/v201809/offline_conversion_adjustment_feed_service.rb +0 -38
  113. data/lib/adwords_api/v201809/offline_conversion_adjustment_feed_service_registry.rb +0 -46
  114. data/lib/adwords_api/v201809/offline_conversion_feed_service.rb +0 -38
  115. data/lib/adwords_api/v201809/offline_conversion_feed_service_registry.rb +0 -46
  116. data/lib/adwords_api/v201809/offline_data_upload_service.rb +0 -46
  117. data/lib/adwords_api/v201809/offline_data_upload_service_registry.rb +0 -46
  118. data/lib/adwords_api/v201809/report_definition_service.rb +0 -38
  119. data/lib/adwords_api/v201809/report_definition_service_registry.rb +0 -46
  120. data/lib/adwords_api/v201809/shared_criterion_service.rb +0 -54
  121. data/lib/adwords_api/v201809/shared_criterion_service_registry.rb +0 -46
  122. data/lib/adwords_api/v201809/shared_set_service.rb +0 -54
  123. data/lib/adwords_api/v201809/shared_set_service_registry.rb +0 -46
  124. data/lib/adwords_api/v201809/targeting_idea_service.rb +0 -38
  125. data/lib/adwords_api/v201809/targeting_idea_service_registry.rb +0 -46
  126. data/lib/adwords_api/v201809/traffic_estimator_service.rb +0 -38
  127. data/lib/adwords_api/v201809/traffic_estimator_service_registry.rb +0 -46
  128. data/lib/adwords_api/v201809/trial_async_error_service.rb +0 -46
  129. data/lib/adwords_api/v201809/trial_async_error_service_registry.rb +0 -46
  130. data/lib/adwords_api/v201809/trial_service.rb +0 -54
  131. data/lib/adwords_api/v201809/trial_service_registry.rb +0 -46
  132. data/lib/adwords_api/version.rb +0 -24
@@ -1,82 +0,0 @@
1
- # Encoding: utf-8
2
- #
3
- # Copyright:: Copyright 2018, Google Inc. All Rights Reserved.
4
- #
5
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14
- # implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- # Class with methods to aid in building AWQL for reports.
19
-
20
- require 'adwords_api/query_utils/query_builder'
21
- require 'adwords_api/query_utils/report_query'
22
-
23
- module AdwordsApi
24
- class ReportQueryBuilder < QueryBuilder
25
- def initialize(api)
26
- super(api)
27
- @select = nil
28
- @from = nil
29
- @during_range = nil
30
- @during_start = nil
31
- @during_end = nil
32
- yield self if block_given?
33
- end
34
-
35
- def configure()
36
- yield self
37
- end
38
-
39
- def select(*fields)
40
- @select = fields
41
- end
42
-
43
- def from(report_name)
44
- @from = report_name
45
- end
46
-
47
- def during_date_range(date_range)
48
- @during_range = date_range
49
- end
50
-
51
- def during(start_date, end_date)
52
- @during_start = start_date
53
- @during_end = end_date
54
- end
55
-
56
- def build()
57
- raise ArgumentError,
58
- 'Must specify SELECT clause for valid AWQL' if @select.nil?
59
- raise ArgumentError,
60
- 'Must specify FROM clause for valid AWQL' if @from.nil?
61
- if !@during_range.nil? && (!@during_start.nil? || !@during_end.nil?)
62
- raise ArgumentError,
63
- 'Cannot specify both date range and start/end dates.'
64
- end
65
- result = sprintf('SELECT %s', @select.join(', '))
66
- result += sprintf(' FROM %s', @from)
67
- result += build_where()
68
- if !@during_range.nil?
69
- result += sprintf(' DURING %s', @during_range)
70
- elsif !@during_start.nil? || !@during_end.nil?
71
- if @during_start.nil?
72
- raise ArgumentError, 'Cannot specify end date without start date.'
73
- elsif @during_end.nil?
74
- raise ArgumentError, 'Cannot specify start date without end date.'
75
- end
76
- result += sprintf(' DURING %s,%s', @during_start, @during_end)
77
- end
78
- @api.utils_reporter.report_query_builder_used()
79
- return ReportQuery.new(result)
80
- end
81
- end
82
- end
@@ -1,62 +0,0 @@
1
- # Encoding: utf-8
2
- #
3
- # Copyright:: Copyright 2018, Google Inc. All Rights Reserved.
4
- #
5
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14
- # implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- # Class to hold a generated AWQL query and aid in paging for services.
19
-
20
- module AdwordsApi
21
- class ServiceQuery
22
- def initialize(query, start_index, page_size)
23
- @query = query
24
- @start_index = start_index
25
- @page_size = page_size
26
- end
27
-
28
- def has_next(page)
29
- raise ArgumentError,
30
- 'Cannot page through query with no LIMIT clause.' if @start_index.nil?
31
- return @start_index + @page_size < page[:total_num_entries]
32
- end
33
-
34
- # Determining whether another page exists when dealing with bid landscapes
35
- # is different from other types of queries. Use this method for those cases.
36
- def has_next_landscape_page(page)
37
- raise ArgumentError,
38
- 'Cannot page through query with no LIMIT clause.' if @start_index.nil?
39
- return false unless page[:entries]
40
- total_landscape_points_in_page = 0
41
- page[:entries].each do |landscape|
42
- total_landscape_points_in_page += landscape[:landscape_points].size
43
- end
44
- return total_landscape_points_in_page >= @page_size
45
- end
46
-
47
- def next_page()
48
- raise ArgumentError,
49
- 'Cannot page through query with no LIMIT clause.' if @start_index.nil?
50
- @start_index += @page_size
51
- return self
52
- end
53
-
54
- def to_s()
55
- query = @query
56
- unless @start_index.nil?
57
- query += sprintf(' LIMIT %s,%s', @start_index, @page_size)
58
- end
59
- return query
60
- end
61
- end
62
- end
@@ -1,83 +0,0 @@
1
- # Encoding: utf-8
2
- #
3
- # Copyright:: Copyright 2018, Google Inc. All Rights Reserved.
4
- #
5
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14
- # implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- # Class with methods to aid in building AWQL for services.
19
-
20
- require 'adwords_api/query_utils/query_builder'
21
- require 'adwords_api/query_utils/service_query'
22
- require 'set'
23
-
24
- module AdwordsApi
25
- class ServiceQueryBuilder < QueryBuilder
26
- def initialize(api)
27
- super(api)
28
- @select = nil
29
- @order = []
30
- @start_index = nil
31
- @page_size = nil
32
- yield self if block_given?
33
- end
34
-
35
- def configure()
36
- yield self
37
- end
38
-
39
- def select(*fields)
40
- @select = Set[*fields]
41
- end
42
-
43
- def order_by_asc(field)
44
- @order << {
45
- :field => field,
46
- :direction => 'ASC'
47
- }
48
- end
49
-
50
- def order_by_desc(field)
51
- @order << {
52
- :field => field,
53
- :direction => 'DESC'
54
- }
55
- end
56
-
57
- def limit(start_index, page_size)
58
- @start_index = start_index
59
- @page_size = page_size
60
- end
61
-
62
- def build()
63
- raise ArgumentError,
64
- 'Must specify SELECT clause for valid AWQL' if @select.nil?
65
- if !@start_index.nil? && @page_size.nil?
66
- raise ArgumentError, 'Cannot specify start index without page size.'
67
- end
68
- if !@page_size.nil? && @start_index.nil?
69
- raise ArgumentError, 'Cannot specify page size without start index.'
70
- end
71
- result = sprintf('SELECT %s', @select.to_a.join(', '))
72
- result += build_where()
73
- unless @order.empty?
74
- orders = @order.map do |o|
75
- sprintf('%s %s', o[:field], o[:direction])
76
- end
77
- result += sprintf(' ORDER BY %s', orders.join(', '))
78
- end
79
- @api.utils_reporter.service_query_builder_used()
80
- return ServiceQuery.new(result, @start_index, @page_size)
81
- end
82
- end
83
- end
@@ -1,97 +0,0 @@
1
- # Encoding: utf-8
2
- #
3
- # Copyright:: Copyright 2018, Google Inc. All Rights Reserved.
4
- #
5
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14
- # implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- # Class to aid in constructing where clauses for reporting and service queries.
19
-
20
- module AdwordsApi
21
- class WhereBuilder
22
- attr_reader :awql
23
-
24
- def initialize(field)
25
- @field = field
26
- @awql = nil
27
- end
28
-
29
- def equal_to(value)
30
- @awql = sprintf("%s = %s", @field, value)
31
- end
32
-
33
- def not_equal_to(value)
34
- @awql = sprintf("%s != %s", @field, value)
35
- end
36
-
37
- def greater_than(value)
38
- @awql = sprintf("%s > %s", @field, value)
39
- end
40
-
41
- def greater_than_or_equal_to(value)
42
- @awql = sprintf("%s >= %s", @field, value)
43
- end
44
-
45
- def less_than(value)
46
- @awql = sprintf("%s < %s", @field, value)
47
- end
48
-
49
- def less_than_or_equal_to(value)
50
- @awql = sprintf("%s <= %s", @field, value)
51
- end
52
-
53
- def starts_with(value)
54
- @awql = sprintf("%s STARTS_WITH %s", @field, value)
55
- end
56
-
57
- def starts_with_ignore_case(value)
58
- @awql = sprintf("%s STARTS_WITH_IGNORE_CASE %s", @field, value)
59
- end
60
-
61
- def contains(value)
62
- @awql = sprintf("%s CONTAINS %s", @field, value)
63
- end
64
-
65
- def contains_ignore_case(value)
66
- @awql = sprintf("%s CONTAINS_IGNORE_CASE %s", @field, value)
67
- end
68
-
69
- def does_not_contain(value)
70
- @awql = sprintf("%s DOES_NOT_CONTAIN %s", @field, value)
71
- end
72
-
73
- def does_not_contain_ignore_case(value)
74
- @awql = sprintf("%s DOES_NOT_CONTAIN_IGNORE_CASE %s", @field, value)
75
- end
76
-
77
- def in(*values)
78
- @awql = sprintf("%s IN [%s]", @field, values.join(','))
79
- end
80
-
81
- def not_in(*values)
82
- @awql = sprintf("%s NOT_IN [%s]", @field, values.join(','))
83
- end
84
-
85
- def contains_any(*values)
86
- @awql = sprintf("%s CONTAINS_ANY [%s]", @field, values.join(','))
87
- end
88
-
89
- def contains_none(*values)
90
- @awql = sprintf("%s CONTAINS_NONE [%s]", @field, values.join(','))
91
- end
92
-
93
- def contains_all(*values)
94
- @awql = sprintf("%s CONTAINS_ALL [%s]", @field, values.join(','))
95
- end
96
- end
97
- end
@@ -1,80 +0,0 @@
1
- # Encoding: utf-8
2
- #
3
- # Copyright:: Copyright 2012, Google Inc. All Rights Reserved.
4
- #
5
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14
- # implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- # Handles HTTP headers for AdHoc reporting requests.
19
-
20
- module AdwordsApi
21
- class ReportHeaderHandler
22
-
23
- # Initializes a header handler.
24
- #
25
- # Args:
26
- # - credential_handler: a header with credential data
27
- # - auth_handler: a header with auth data
28
- # - config: API config
29
- #
30
- def initialize(credential_handler, auth_handler, config)
31
- @credential_handler = credential_handler
32
- @auth_handler = auth_handler
33
- @config = config
34
- end
35
-
36
- # Returns the headers set for the report request.
37
- #
38
- # Args:
39
- # - url: URL for the report requests
40
- # - cid: clientCustomerId to use
41
- #
42
- # Returns:
43
- # - a Hash with HTTP headers.
44
- #
45
- def headers(url, cid)
46
- override = (cid.nil?) ? nil : {:client_customer_id => cid}
47
- credentials = @credential_handler.credentials(override)
48
- headers = {
49
- 'Content-Type' => 'application/x-www-form-urlencoded',
50
- 'Authorization' => @auth_handler.auth_string(credentials),
51
- 'User-Agent' => @credential_handler.generate_user_agent(),
52
- 'clientCustomerId' => credentials[:client_customer_id].to_s,
53
- 'developerToken' => credentials[:developer_token]
54
- }
55
- skip_report_header = @config.read('library.skip_report_header')
56
- unless skip_report_header.nil?
57
- headers['skipReportHeader'] = skip_report_header.to_s
58
- end
59
- skip_report_summary = @config.read('library.skip_report_summary')
60
- unless skip_report_summary.nil?
61
- headers['skipReportSummary'] = skip_report_summary.to_s
62
- end
63
- skip_column_header = @config.read('library.skip_column_header')
64
- unless skip_column_header.nil?
65
- headers['skipColumnHeader'] = skip_column_header.to_s
66
- end
67
- include_zero_impressions =
68
- @config.read('library.include_zero_impressions')
69
- unless include_zero_impressions.nil?
70
- headers['includeZeroImpressions'] = include_zero_impressions.to_s
71
- end
72
- use_raw_enum_values =
73
- @config.read('library.use_raw_enum_values')
74
- unless use_raw_enum_values.nil?
75
- headers['useRawEnumValues'] = use_raw_enum_values.to_s
76
- end
77
- return headers
78
- end
79
- end
80
- end
@@ -1,70 +0,0 @@
1
- # Encoding: utf-8
2
- #
3
- # Copyright:: Copyright 2015, Google Inc. All Rights Reserved.
4
- #
5
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
14
- # implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- # Includes a way to iterate over a report stream by line, rather than in
19
- # arbitrary chunks.
20
-
21
- module AdwordsApi
22
- class ReportStream
23
- def initialize(report_utils, report_definition, cid = nil, format = nil,
24
- is_awql = false)
25
- @report_utils = report_utils
26
- @report_definition = report_definition
27
- @format = format
28
- @cid = cid
29
- @is_awql = is_awql
30
- end
31
-
32
- def self.set_up(report_utils, report_definition, cid = nil)
33
- return ReportStream.new(report_utils, report_definition, cid)
34
- end
35
-
36
- def self.set_up_with_awql(
37
- report_utils, report_query, format, cid = nil)
38
- return ReportStream.new(
39
- report_utils, report_query, cid, format, true)
40
- end
41
-
42
- def each_line()
43
- # Determine which method and arguments to use depending on whether
44
- # this is an AWQL request or not.
45
- method = 'download_report_as_stream'
46
- method += '_with_awql' if @is_awql
47
- args = [@report_definition]
48
- args << @format if @is_awql
49
- args << @cid
50
-
51
- leftover_data = ''
52
- @report_utils.send(method, *args) do |batch|
53
- data_to_process = leftover_data + batch
54
- leftover_data = ''
55
- while !data_to_process.valid_encoding?
56
- leftover_data = data_to_process[-1] + leftover_data
57
- data_to_process = data_to_process[0, data_to_process.length - 1]
58
- end
59
- lines = data_to_process.each_line.map {|line| line}
60
- remainder = lines.pop
61
- leftover_data = remainder + leftover_data unless remainder.nil?
62
- lines.each do |line|
63
- yield line.chomp
64
- end
65
- end
66
- yield leftover_data.chomp unless
67
- leftover_data.nil? || leftover_data.empty?
68
- end
69
- end
70
- end