google-ads-googleads 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/ChangeLog +2 -0
- data/README.md +107 -0
- data/Rakefile +7 -0
- data/googleads_config.rb +10 -0
- data/lib/google/ads/googleads.rb +25 -0
- data/lib/google/ads/googleads/config.rb +42 -0
- data/lib/google/ads/googleads/errors.rb +40 -0
- data/lib/google/ads/googleads/field_mask_util.rb +159 -0
- data/lib/google/ads/googleads/googleads_client.rb +177 -0
- data/lib/google/ads/googleads/patches.rb +45 -0
- data/lib/google/ads/googleads/path_lookup_util.rb +84 -0
- data/lib/google/ads/googleads/proto_lookup_util.rb +249 -0
- data/lib/google/ads/googleads/v0/common/ad_pb.rb +80 -0
- data/lib/google/ads/googleads/v0/common/bidding_pb.rb +71 -0
- data/lib/google/ads/googleads/v0/common/criteria_pb.rb +25 -0
- data/lib/google/ads/googleads/v0/common/custom_parameter_pb.rb +24 -0
- data/lib/google/ads/googleads/v0/common/metrics_pb.rb +65 -0
- data/lib/google/ads/googleads/v0/common/policy_pb.rb +24 -0
- data/lib/google/ads/googleads/v0/common/value_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/enums/ad_group_ad_status_pb.rb +29 -0
- data/lib/google/ads/googleads/v0/enums/ad_group_criterion_status_pb.rb +29 -0
- data/lib/google/ads/googleads/v0/enums/ad_group_status_pb.rb +29 -0
- data/lib/google/ads/googleads/v0/enums/ad_group_type_pb.rb +27 -0
- data/lib/google/ads/googleads/v0/enums/ad_network_type_pb.rb +31 -0
- data/lib/google/ads/googleads/v0/enums/ad_serving_optimization_status_pb.rb +31 -0
- data/lib/google/ads/googleads/v0/enums/ad_type_pb.rb +32 -0
- data/lib/google/ads/googleads/v0/enums/advertising_channel_sub_type_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/enums/advertising_channel_type_pb.rb +27 -0
- data/lib/google/ads/googleads/v0/enums/bid_source_pb.rb +29 -0
- data/lib/google/ads/googleads/v0/enums/bidding_strategy_type_pb.rb +36 -0
- data/lib/google/ads/googleads/v0/enums/budget_delivery_method_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/enums/budget_status_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/enums/campaign_serving_status_pb.rb +31 -0
- data/lib/google/ads/googleads/v0/enums/campaign_status_pb.rb +29 -0
- data/lib/google/ads/googleads/v0/enums/criterion_type_pb.rb +27 -0
- data/lib/google/ads/googleads/v0/enums/day_of_week_pb.rb +33 -0
- data/lib/google/ads/googleads/v0/enums/device_pb.rb +29 -0
- data/lib/google/ads/googleads/v0/enums/google_ads_field_category_pb.rb +30 -0
- data/lib/google/ads/googleads/v0/enums/google_ads_field_data_type_pb.rb +36 -0
- data/lib/google/ads/googleads/v0/enums/keyword_match_type_pb.rb +29 -0
- data/lib/google/ads/googleads/v0/enums/page_one_promoted_strategy_goal_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/enums/quality_score_bucket_pb.rb +29 -0
- data/lib/google/ads/googleads/v0/enums/slot_pb.rb +32 -0
- data/lib/google/ads/googleads/v0/errors/ad_customizer_error_pb.rb +31 -0
- data/lib/google/ads/googleads/v0/errors/ad_error_pb.rb +154 -0
- data/lib/google/ads/googleads/v0/errors/ad_group_ad_error_pb.rb +34 -0
- data/lib/google/ads/googleads/v0/errors/ad_group_criterion_error_pb.rb +63 -0
- data/lib/google/ads/googleads/v0/errors/ad_group_error_pb.rb +38 -0
- data/lib/google/ads/googleads/v0/errors/ad_sharing_error_pb.rb +29 -0
- data/lib/google/ads/googleads/v0/errors/adx_error_pb.rb +27 -0
- data/lib/google/ads/googleads/v0/errors/authentication_error_pb.rb +47 -0
- data/lib/google/ads/googleads/v0/errors/authorization_error_pb.rb +30 -0
- data/lib/google/ads/googleads/v0/errors/bidding_error_pb.rb +46 -0
- data/lib/google/ads/googleads/v0/errors/bidding_strategy_error_pb.rb +30 -0
- data/lib/google/ads/googleads/v0/errors/campaign_budget_error_pb.rb +40 -0
- data/lib/google/ads/googleads/v0/errors/campaign_criterion_error_pb.rb +36 -0
- data/lib/google/ads/googleads/v0/errors/campaign_error_pb.rb +60 -0
- data/lib/google/ads/googleads/v0/errors/collection_size_error_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/errors/criterion_error_pb.rb +106 -0
- data/lib/google/ads/googleads/v0/errors/date_error_pb.rb +34 -0
- data/lib/google/ads/googleads/v0/errors/date_range_error_pb.rb +31 -0
- data/lib/google/ads/googleads/v0/errors/distinct_error_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/errors/errors_pb.rb +154 -0
- data/lib/google/ads/googleads/v0/errors/feed_attribute_reference_error_pb.rb +29 -0
- data/lib/google/ads/googleads/v0/errors/field_mask_error_pb.rb +30 -0
- data/lib/google/ads/googleads/v0/errors/function_error_pb.rb +42 -0
- data/lib/google/ads/googleads/v0/errors/function_parsing_error_pb.rb +37 -0
- data/lib/google/ads/googleads/v0/errors/id_error_pb.rb +27 -0
- data/lib/google/ads/googleads/v0/errors/image_error_pb.rb +63 -0
- data/lib/google/ads/googleads/v0/errors/internal_error_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/errors/list_operation_error_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/errors/media_bundle_error_pb.rb +48 -0
- data/lib/google/ads/googleads/v0/errors/media_error_pb.rb +50 -0
- data/lib/google/ads/googleads/v0/errors/multiplier_error_pb.rb +38 -0
- data/lib/google/ads/googleads/v0/errors/mutate_error_pb.rb +31 -0
- data/lib/google/ads/googleads/v0/errors/new_resource_creation_error_pb.rb +29 -0
- data/lib/google/ads/googleads/v0/errors/not_empty_error_pb.rb +27 -0
- data/lib/google/ads/googleads/v0/errors/null_error_pb.rb +27 -0
- data/lib/google/ads/googleads/v0/errors/operation_access_denied_error_pb.rb +35 -0
- data/lib/google/ads/googleads/v0/errors/operator_error_pb.rb +27 -0
- data/lib/google/ads/googleads/v0/errors/query_error_pb.rb +72 -0
- data/lib/google/ads/googleads/v0/errors/quota_error_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/errors/range_error_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/errors/region_code_error_pb.rb +27 -0
- data/lib/google/ads/googleads/v0/errors/request_error_pb.rb +41 -0
- data/lib/google/ads/googleads/v0/errors/resource_access_denied_error_pb.rb +27 -0
- data/lib/google/ads/googleads/v0/errors/resource_count_limit_exceeded_error_pb.rb +33 -0
- data/lib/google/ads/googleads/v0/errors/setting_error_pb.rb +43 -0
- data/lib/google/ads/googleads/v0/errors/string_format_error_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/errors/string_length_error_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/errors/url_field_error_pb.rb +70 -0
- data/lib/google/ads/googleads/v0/resources/ad_group_ad_pb.rb +28 -0
- data/lib/google/ads/googleads/v0/resources/ad_group_criterion_pb.rb +64 -0
- data/lib/google/ads/googleads/v0/resources/ad_group_pb.rb +38 -0
- data/lib/google/ads/googleads/v0/resources/bidding_strategy_pb.rb +36 -0
- data/lib/google/ads/googleads/v0/resources/campaign_budget_pb.rb +32 -0
- data/lib/google/ads/googleads/v0/resources/campaign_criterion_pb.rb +32 -0
- data/lib/google/ads/googleads/v0/resources/campaign_pb.rb +70 -0
- data/lib/google/ads/googleads/v0/resources/customer_pb.rb +29 -0
- data/lib/google/ads/googleads/v0/resources/google_ads_field_pb.rb +38 -0
- data/lib/google/ads/googleads/v0/resources/keyword_view_pb.rb +22 -0
- data/lib/google/ads/googleads/v0/services/ad_group_ad_service_client.rb +262 -0
- data/lib/google/ads/googleads/v0/services/ad_group_ad_service_client_config.json +36 -0
- data/lib/google/ads/googleads/v0/services/ad_group_ad_service_pb.rb +47 -0
- data/lib/google/ads/googleads/v0/services/ad_group_ad_service_services_pb.rb +51 -0
- data/lib/google/ads/googleads/v0/services/ad_group_criterion_service_client.rb +262 -0
- data/lib/google/ads/googleads/v0/services/ad_group_criterion_service_client_config.json +36 -0
- data/lib/google/ads/googleads/v0/services/ad_group_criterion_service_pb.rb +47 -0
- data/lib/google/ads/googleads/v0/services/ad_group_criterion_service_services_pb.rb +51 -0
- data/lib/google/ads/googleads/v0/services/ad_group_service_client.rb +262 -0
- data/lib/google/ads/googleads/v0/services/ad_group_service_client_config.json +36 -0
- data/lib/google/ads/googleads/v0/services/ad_group_service_pb.rb +47 -0
- data/lib/google/ads/googleads/v0/services/ad_group_service_services_pb.rb +51 -0
- data/lib/google/ads/googleads/v0/services/bidding_strategy_service_client.rb +263 -0
- data/lib/google/ads/googleads/v0/services/bidding_strategy_service_client_config.json +36 -0
- data/lib/google/ads/googleads/v0/services/bidding_strategy_service_pb.rb +47 -0
- data/lib/google/ads/googleads/v0/services/bidding_strategy_service_services_pb.rb +52 -0
- data/lib/google/ads/googleads/v0/services/campaign_budget_service_client.rb +263 -0
- data/lib/google/ads/googleads/v0/services/campaign_budget_service_client_config.json +36 -0
- data/lib/google/ads/googleads/v0/services/campaign_budget_service_pb.rb +47 -0
- data/lib/google/ads/googleads/v0/services/campaign_budget_service_services_pb.rb +52 -0
- data/lib/google/ads/googleads/v0/services/campaign_criterion_service_client.rb +262 -0
- data/lib/google/ads/googleads/v0/services/campaign_criterion_service_client_config.json +36 -0
- data/lib/google/ads/googleads/v0/services/campaign_criterion_service_pb.rb +47 -0
- data/lib/google/ads/googleads/v0/services/campaign_criterion_service_services_pb.rb +51 -0
- data/lib/google/ads/googleads/v0/services/campaign_service_client.rb +262 -0
- data/lib/google/ads/googleads/v0/services/campaign_service_client_config.json +36 -0
- data/lib/google/ads/googleads/v0/services/campaign_service_pb.rb +47 -0
- data/lib/google/ads/googleads/v0/services/campaign_service_services_pb.rb +51 -0
- data/lib/google/ads/googleads/v0/services/credentials.rb +33 -0
- data/lib/google/ads/googleads/v0/services/customer_service_client.rb +214 -0
- data/lib/google/ads/googleads/v0/services/customer_service_client_config.json +31 -0
- data/lib/google/ads/googleads/v0/services/customer_service_pb.rb +24 -0
- data/lib/google/ads/googleads/v0/services/customer_service_services_pb.rb +49 -0
- data/lib/google/ads/googleads/v0/services/google_ads_field_service_client.rb +285 -0
- data/lib/google/ads/googleads/v0/services/google_ads_field_service_client_config.json +36 -0
- data/lib/google/ads/googleads/v0/services/google_ads_field_service_pb.rb +36 -0
- data/lib/google/ads/googleads/v0/services/google_ads_field_service_services_pb.rb +51 -0
- data/lib/google/ads/googleads/v0/services/google_ads_service_client.rb +242 -0
- data/lib/google/ads/googleads/v0/services/google_ads_service_client_config.json +31 -0
- data/lib/google/ads/googleads/v0/services/google_ads_service_pb.rb +72 -0
- data/lib/google/ads/googleads/v0/services/google_ads_service_services_pb.rb +49 -0
- data/lib/google/ads/googleads/v0/services/keyword_view_service_client.rb +216 -0
- data/lib/google/ads/googleads/v0/services/keyword_view_service_client_config.json +31 -0
- data/lib/google/ads/googleads/v0/services/keyword_view_service_pb.rb +24 -0
- data/lib/google/ads/googleads/v0/services/keyword_view_service_services_pb.rb +49 -0
- data/lib/google/ads/googleads/version.rb +25 -0
- data/lib/google/ads/googleads/wrapper_util.rb +48 -0
- metadata +248 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
# Encoding: utf-8
|
2
|
+
#
|
3
|
+
# Copyright 2018 Google LLC
|
4
|
+
#
|
5
|
+
# 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
|
+
# https://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 implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
# Here we gather custom patches we want to make the lib more usable.
|
18
|
+
|
19
|
+
require 'google/protobuf/wrappers_pb'
|
20
|
+
|
21
|
+
module Google
|
22
|
+
module Protobuf
|
23
|
+
class StringValue
|
24
|
+
def to_s; return value; end
|
25
|
+
end
|
26
|
+
|
27
|
+
class Int64Value
|
28
|
+
def to_s; return value.to_s; end
|
29
|
+
def to_i; return value.to_i; end
|
30
|
+
def to_f; return value.to_f; end
|
31
|
+
end
|
32
|
+
|
33
|
+
class Int32Value
|
34
|
+
def to_s; return value.to_s; end
|
35
|
+
def to_i; return value.to_i; end
|
36
|
+
def to_f; return value.to_f; end
|
37
|
+
end
|
38
|
+
|
39
|
+
class DoubleValue
|
40
|
+
def to_s; return value.to_s; end
|
41
|
+
def to_i; return value.to_i; end
|
42
|
+
def to_f; return value.to_f; end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# Encoding: utf-8
|
2
|
+
#
|
3
|
+
# Copyright 2018 Google LLC
|
4
|
+
#
|
5
|
+
# 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
|
+
# https://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 implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
# Utility that generates up resource names for entities given IDs.
|
18
|
+
|
19
|
+
module Google
|
20
|
+
module Ads
|
21
|
+
module Googleads
|
22
|
+
class PathLookupUtil
|
23
|
+
def initialize(proto_lookup_util)
|
24
|
+
@proto_lookup_util = proto_lookup_util
|
25
|
+
end
|
26
|
+
|
27
|
+
def ad_group_ad(customer_id, ad_group_id, ad_id)
|
28
|
+
@proto_lookup_util.service(:AdGroupAd).ad_group_ad_path(
|
29
|
+
customer_id.to_s, sprintf('%s_%s', ad_group_id.to_s, ad_id.to_s))
|
30
|
+
end
|
31
|
+
|
32
|
+
def ad_group_criterion(customer_id, ad_group_id, criterion_id)
|
33
|
+
@proto_lookup_util.service(:AdGroupCriterion).ad_group_criteria_path(
|
34
|
+
customer_id.to_s,
|
35
|
+
sprintf('%s_%s', ad_group_id.to_s, criterion_id.to_s)
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
39
|
+
def ad_group(customer_id, ad_group_id)
|
40
|
+
@proto_lookup_util.service(:AdGroup).ad_group_path(
|
41
|
+
customer_id.to_s, ad_group_id.to_s)
|
42
|
+
end
|
43
|
+
|
44
|
+
def bidding_strategy(customer_id, bidding_strategy_id)
|
45
|
+
@proto_lookup_util.service(:BiddingStrategy).bidding_strategy_path(
|
46
|
+
customer_id.to_s, bidding_strategy_id.to_s)
|
47
|
+
end
|
48
|
+
|
49
|
+
def campaign_budget(customer_id, campaign_budget_id)
|
50
|
+
@proto_lookup_util.service(:CampaignBudget).campaign_budget_path(
|
51
|
+
customer_id.to_s, campaign_budget_id.to_s)
|
52
|
+
end
|
53
|
+
|
54
|
+
def campaign_criterion(customer_id, campaign_id, criterion_id)
|
55
|
+
@proto_lookup_util.service(:CampaignCriterion).campaign_criteria_path(
|
56
|
+
customer_id.to_s,
|
57
|
+
sprintf('%s_%s', campaign_id.to_s, criterion_id.to_s)
|
58
|
+
)
|
59
|
+
end
|
60
|
+
|
61
|
+
def campaign(customer_id, campaign_id)
|
62
|
+
@proto_lookup_util.service(:Campaign).campaign_path(
|
63
|
+
customer_id.to_s, campaign_id.to_s)
|
64
|
+
end
|
65
|
+
|
66
|
+
def customer(customer_id)
|
67
|
+
@proto_lookup_util.service(:Customer).customer_path(customer_id.to_s)
|
68
|
+
end
|
69
|
+
|
70
|
+
def google_ads_field(google_ads_field)
|
71
|
+
@proto_lookup_util.service(:GoogleAdsField).google_ads_field_path(
|
72
|
+
google_ads_field.to_s)
|
73
|
+
end
|
74
|
+
|
75
|
+
def keyword_view(customer_id, ad_group_id, criterion_id)
|
76
|
+
@proto_lookup_util.service(:KeywordView).keyword_view_path(
|
77
|
+
customer_id.to_s,
|
78
|
+
sprintf('%s_%s', ad_group_id.to_s, criterion_id.to_s)
|
79
|
+
)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,249 @@
|
|
1
|
+
# Encoding: utf-8
|
2
|
+
#
|
3
|
+
# Copyright 2018 Google LLC
|
4
|
+
#
|
5
|
+
# 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
|
+
# https://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 implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
# Utility that looks up references to generated classes for proto objects.
|
18
|
+
|
19
|
+
module Google
|
20
|
+
module Ads
|
21
|
+
module Googleads
|
22
|
+
class ProtoLookupUtil
|
23
|
+
# Variables: Version, folder (resources/common), filename
|
24
|
+
RESOURCE_PATH = 'google/ads/googleads/%s/%s/%s'.freeze
|
25
|
+
# Variables: Version, class name
|
26
|
+
RESOURCE_CLASS_PATH = 'Google::Ads::Googleads::%s::Resources::%s'.freeze
|
27
|
+
# Variables: Version, class name
|
28
|
+
COMMON_CLASS_PATH = 'Google::Ads::Googleads::%s::Common::%s'.freeze
|
29
|
+
|
30
|
+
# Variables: Version, filename
|
31
|
+
ENUM_PATH = 'google/ads/googleads/%s/enums/%s'.freeze
|
32
|
+
# Variables: Version, enum name, enum name (again)
|
33
|
+
ENUM_CLASS_PATH = 'Google::Ads::Googleads::%s::Enums::%sEnum::%s'.freeze
|
34
|
+
|
35
|
+
# Variables: Version, filename
|
36
|
+
SERVICE_PATH = 'google/ads/googleads/%s/services/%s'.freeze
|
37
|
+
# Variables: Version, entity name
|
38
|
+
SERVICE_CLASS_PATH =
|
39
|
+
'Google::Ads::Googleads::%s::Services::%s'.freeze
|
40
|
+
|
41
|
+
RESOURCES = {
|
42
|
+
AdGroupAd: ['resources', 'ad_group_ad_pb', 'AdGroupAd'],
|
43
|
+
AdGroupCriterion: ['resources', 'ad_group_criterion_pb',
|
44
|
+
'AdGroupCriterion'],
|
45
|
+
QualityInfo: ['resources', 'ad_group_criterion_pb',
|
46
|
+
'AdGroupCriterion::QualityInfo'],
|
47
|
+
PositionEstimates: ['resources', 'ad_group_criterion_pb',
|
48
|
+
'AdGroupCriterion::PositionEstimates'],
|
49
|
+
AdGroup: ['resources', 'ad_group_pb', 'AdGroup'],
|
50
|
+
BiddingStrategy: ['resources', 'bidding_strategy_pb',
|
51
|
+
'BiddingStrategy'],
|
52
|
+
CampaignBudget: ['resources', 'campaign_budget_pb', 'CampaignBudget'],
|
53
|
+
CampaignCriterion: ['resources', 'campaign_criterion_pb',
|
54
|
+
'CampaignCriterion'],
|
55
|
+
Campaign: ['resources', 'campaign_pb', 'Campaign'],
|
56
|
+
NetworkSettings: ['resources', 'campaign_pb',
|
57
|
+
'Campaign::NetworkSettings'],
|
58
|
+
DynamicSearchAdsSetting: ['resources', 'campaign_pb',
|
59
|
+
'Campaign::DynamicSearchAdsSetting'],
|
60
|
+
Customer: ['resources', 'customer_pb', 'Customer'],
|
61
|
+
GoogleAdsField: ['resources', 'google_ads_field_pb',
|
62
|
+
'GoogleAdsField'],
|
63
|
+
KeywordView: ['resources', 'keyword_view_pb', 'KeywordView'],
|
64
|
+
Ad: ['common', 'ad_pb', 'Ad'],
|
65
|
+
TextAdInfo: ['common', 'ad_pb', 'TextAdInfo'],
|
66
|
+
ExpandedTextAdInfo: ['common', 'ad_pb', 'ExpandedTextAdInfo'],
|
67
|
+
DynamicSearchAdInfo: ['common', 'ad_pb', 'DynamicSearchAdInfo'],
|
68
|
+
ResponsiveDisplayAdInfo: ['common', 'ad_pb',
|
69
|
+
'ResponsiveDisplayAdInfo'],
|
70
|
+
CallOnlyAdInfo: ['common', 'ad_pb', 'CallOnlyAdInfo'],
|
71
|
+
ExpandedDynamicSearchAdInfo: ['common', 'ad_pb',
|
72
|
+
'ExpandedDynamicSearchAdInfo'],
|
73
|
+
EnhancedCpc: ['common', 'bidding_pb', 'EnhancedCpc'],
|
74
|
+
ManualCpc: ['common', 'bidding_pb', 'ManualCpc'],
|
75
|
+
ManualCpm: ['common', 'bidding_pb', 'ManualCpm'],
|
76
|
+
MaximizeConversions: ['common', 'bidding_pb', 'MaximizeConversions'],
|
77
|
+
MaximizeConversionValue: ['common', 'bidding_pb',
|
78
|
+
'MaximizeConversionValue'],
|
79
|
+
PageOnePromoted: ['common', 'bidding_pb', 'PageOnePromoted'],
|
80
|
+
TargetCpa: ['common', 'bidding_pb', 'TargetCpa'],
|
81
|
+
TargetOutrankShare: ['common', 'bidding_pb', 'TargetOutrankShare'],
|
82
|
+
TargetRoas: ['common', 'bidding_pb', 'TargetRoas'],
|
83
|
+
TargetSpend: ['common', 'bidding_pb', 'TargetSpend'],
|
84
|
+
KeywordInfo: ['common', 'criteria_pb', 'KeywordInfo'],
|
85
|
+
CustomParameter: ['common', 'custom_parameter_pb', 'CustomParameter'],
|
86
|
+
Metrics: ['common', 'metrics_pb', 'Metrics'],
|
87
|
+
PolicyViolationKey: ['common', 'policy_pb', 'PolicyViolationKey'],
|
88
|
+
Value: ['common', 'value_pb', 'Value']
|
89
|
+
}.freeze
|
90
|
+
|
91
|
+
ENUMS = {
|
92
|
+
AdGroupAdStatus: ['ad_group_ad_status_pb', 'AdGroupAdStatus'],
|
93
|
+
AdGroupCriterionStatus: ['ad_group_criterion_status_pb',
|
94
|
+
'AdGroupCriterionStatus'],
|
95
|
+
AdGroupStatus: ['ad_group_status_pb', 'AdGroupStatus'],
|
96
|
+
AdGroupType: ['ad_group_type_pb', 'AdGroupType'],
|
97
|
+
AdNetworkType: ['ad_network_type_pb', 'AdNetworkType'],
|
98
|
+
AdServingOptimizationStatus: ['ad_serving_optimization_status_pb',
|
99
|
+
'AdServingOptimizationStatus'],
|
100
|
+
AdType: ['ad_type_pb', 'AdType'],
|
101
|
+
AdvertisingChannelSubType: ['advertising_channel_sub_type_pb',
|
102
|
+
'AdvertisingChannelSubType'],
|
103
|
+
AdvertisingChannelType: ['advertising_channel_type_pb',
|
104
|
+
'AdvertisingChannelType'],
|
105
|
+
BidSource: ['bid_source_pb', 'BidSource'],
|
106
|
+
BiddingStrategyType: ['bidding_strategy_type_pb',
|
107
|
+
'BiddingStrategyType'],
|
108
|
+
BudgetDeliveryMethod: ['budget_delivery_method_pb',
|
109
|
+
'BudgetDeliveryMethod'],
|
110
|
+
BudgetStatus: ['budget_status_pb', 'BudgetStatus'],
|
111
|
+
CampaignServingStatus: ['campaign_serving_status_pb',
|
112
|
+
'CampaignServingStatus'],
|
113
|
+
CampaignStatus: ['campaign_status_pb', 'CampaignStatus'],
|
114
|
+
DayOfWeek: ['day_of_week_pb', 'DayOfWeek'],
|
115
|
+
Device: ['device_pb', 'Device'],
|
116
|
+
GoogleAdsFieldCategory: ['google_ads_field_category_pb',
|
117
|
+
'GoogleAdsFieldCategory'],
|
118
|
+
GoogleAdsFieldDataType: ['google_ads_field_data_type_pb',
|
119
|
+
'GoogleAdsFieldDataType'],
|
120
|
+
KeywordMatchType: ['keyword_match_type_pb', 'KeywordMatchType'],
|
121
|
+
PageOnePromotedStrategyGoal: ['page_one_promoted_strategy_goal_pb',
|
122
|
+
'PageOnePromotedStrategyGoal'],
|
123
|
+
QualityScoreBucket: ['quality_score_bucket_pb', 'QualityScoreBucket'],
|
124
|
+
Slot: ['slot_pb', 'Slot']
|
125
|
+
}.freeze
|
126
|
+
|
127
|
+
SERVICES = {
|
128
|
+
AdGroupAd: ['ad_group_ad_service_client', 'AdGroupAdServiceClient'],
|
129
|
+
AdGroupCriterion: ['ad_group_criterion_service_client',
|
130
|
+
'AdGroupCriterionServiceClient'],
|
131
|
+
AdGroup: ['ad_group_service_client', 'AdGroupServiceClient'],
|
132
|
+
BiddingStrategy: ['bidding_strategy_service_client',
|
133
|
+
'BiddingStrategyServiceClient'],
|
134
|
+
CampaignBudget: ['campaign_budget_service_client',
|
135
|
+
'CampaignBudgetServiceClient'],
|
136
|
+
CampaignCriterion: ['campaign_criterion_service_client',
|
137
|
+
'CampaignCriterionServiceClient'],
|
138
|
+
Campaign: ['campaign_service_client', 'CampaignServiceClient'],
|
139
|
+
Customer: ['customer_service_client', 'CustomerServiceClient'],
|
140
|
+
GoogleAdsField: ['google_ads_field_service_client',
|
141
|
+
'GoogleAdsFieldServiceClient'],
|
142
|
+
GoogleAds: ['google_ads_service_client', 'GoogleAdsServiceClient'],
|
143
|
+
KeywordView: ['keyword_view_service_client',
|
144
|
+
'KeywordViewServiceClient']
|
145
|
+
}
|
146
|
+
|
147
|
+
OPERATIONS = {
|
148
|
+
AdGroupAd: ['ad_group_ad_service_pb', 'AdGroupAdOperation'],
|
149
|
+
AdGroupCriterion: ['ad_group_criterion_service_pb',
|
150
|
+
'AdGroupCriterionOperation'],
|
151
|
+
AdGroup: ['ad_group_service_pb', 'AdGroupOperation'],
|
152
|
+
BiddingStrategy: ['bidding_strategy_service_pb',
|
153
|
+
'BiddingStrategyOperation'],
|
154
|
+
CampaignBudget: ['campaign_budget_service_pb',
|
155
|
+
'CampaignBudgetOperation'],
|
156
|
+
CampaignCriterion: ['campaign_criterion_service_pb',
|
157
|
+
'CampaignCriterionOperation'],
|
158
|
+
Campaign: ['campaign_service_pb', 'CampaignOperation'],
|
159
|
+
}
|
160
|
+
|
161
|
+
def initialize(version)
|
162
|
+
@version = version
|
163
|
+
@path_version = version.downcase
|
164
|
+
end
|
165
|
+
|
166
|
+
# Look up the class for a resource by name.
|
167
|
+
def resource(name)
|
168
|
+
name = name.to_sym
|
169
|
+
|
170
|
+
resource_info = RESOURCES[name]
|
171
|
+
if resource_info.nil?
|
172
|
+
raise ArgumentError, sprintf('No resource found with name %s', name)
|
173
|
+
end
|
174
|
+
|
175
|
+
require_path = sprintf(RESOURCE_PATH, @path_version, resource_info[0],
|
176
|
+
resource_info[1])
|
177
|
+
require require_path
|
178
|
+
|
179
|
+
class_path = resource_info.first == 'resources' ?
|
180
|
+
RESOURCE_CLASS_PATH : COMMON_CLASS_PATH
|
181
|
+
class_path = sprintf(class_path, @version, resource_info[2])
|
182
|
+
return class_for_path(class_path)
|
183
|
+
end
|
184
|
+
|
185
|
+
# Look up the class for an enum by name.
|
186
|
+
def enum(name)
|
187
|
+
name = name.to_sym
|
188
|
+
|
189
|
+
enum_info = ENUMS[name]
|
190
|
+
if enum_info.nil?
|
191
|
+
raise ArgumentError, sprintf('No enum found with name %s', name)
|
192
|
+
end
|
193
|
+
|
194
|
+
require_path = sprintf(ENUM_PATH, @path_version, enum_info.first)
|
195
|
+
require require_path
|
196
|
+
|
197
|
+
class_path = sprintf(ENUM_CLASS_PATH, @version, enum_info.last,
|
198
|
+
enum_info.last)
|
199
|
+
return class_for_path(class_path)
|
200
|
+
end
|
201
|
+
|
202
|
+
# Look up the class for a service by name.
|
203
|
+
def service(name)
|
204
|
+
name = name.to_sym
|
205
|
+
|
206
|
+
service_info = SERVICES[name]
|
207
|
+
if service_info.nil?
|
208
|
+
raise ArgumentError, sprintf('No service found with name %s', name)
|
209
|
+
end
|
210
|
+
|
211
|
+
require_path = sprintf(SERVICE_PATH, @path_version,
|
212
|
+
service_info.first)
|
213
|
+
require require_path
|
214
|
+
|
215
|
+
class_path = sprintf(SERVICE_CLASS_PATH, @version, service_info.last)
|
216
|
+
return class_for_path(class_path)
|
217
|
+
end
|
218
|
+
|
219
|
+
# Look up the class for an operation by name.
|
220
|
+
def operation(name)
|
221
|
+
name = name.to_sym
|
222
|
+
|
223
|
+
operation_info = OPERATIONS[name]
|
224
|
+
if operation_info.nil?
|
225
|
+
raise ArgumentError,
|
226
|
+
sprintf('No operation found with name %s', name)
|
227
|
+
end
|
228
|
+
|
229
|
+
require_path = sprintf(SERVICE_PATH, @path_version,
|
230
|
+
operation_info.first)
|
231
|
+
require require_path
|
232
|
+
|
233
|
+
class_path = sprintf(SERVICE_CLASS_PATH, @version,
|
234
|
+
operation_info.last)
|
235
|
+
return class_for_path(class_path)
|
236
|
+
end
|
237
|
+
|
238
|
+
private
|
239
|
+
|
240
|
+
# Converts complete class path into class object.
|
241
|
+
def class_for_path(path)
|
242
|
+
path.split('::').inject(Kernel) do |scope, const_name|
|
243
|
+
scope.const_get(const_name)
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
2
|
+
# source: google/ads/googleads/v0/common/ad.proto
|
3
|
+
|
4
|
+
require 'google/protobuf'
|
5
|
+
|
6
|
+
require 'google/ads/googleads/v0/common/custom_parameter_pb'
|
7
|
+
require 'google/ads/googleads/v0/enums/ad_type_pb'
|
8
|
+
require 'google/protobuf/wrappers_pb'
|
9
|
+
Google::Protobuf::DescriptorPool.generated_pool.build do
|
10
|
+
add_message "google.ads.googleads.v0.common.Ad" do
|
11
|
+
optional :id, :message, 1, "google.protobuf.Int64Value"
|
12
|
+
repeated :final_urls, :message, 2, "google.protobuf.StringValue"
|
13
|
+
repeated :final_mobile_urls, :message, 16, "google.protobuf.StringValue"
|
14
|
+
optional :tracking_url_template, :message, 12, "google.protobuf.StringValue"
|
15
|
+
repeated :url_custom_parameters, :message, 10, "google.ads.googleads.v0.common.CustomParameter"
|
16
|
+
optional :display_url, :message, 4, "google.protobuf.StringValue"
|
17
|
+
optional :type, :enum, 5, "google.ads.googleads.v0.enums.AdTypeEnum.AdType"
|
18
|
+
oneof :ad_data do
|
19
|
+
optional :text_ad, :message, 6, "google.ads.googleads.v0.common.TextAdInfo"
|
20
|
+
optional :expanded_text_ad, :message, 7, "google.ads.googleads.v0.common.ExpandedTextAdInfo"
|
21
|
+
optional :dynamic_search_ad, :message, 8, "google.ads.googleads.v0.common.DynamicSearchAdInfo"
|
22
|
+
optional :responsive_display_ad, :message, 9, "google.ads.googleads.v0.common.ResponsiveDisplayAdInfo"
|
23
|
+
optional :call_only_ad, :message, 13, "google.ads.googleads.v0.common.CallOnlyAdInfo"
|
24
|
+
optional :expanded_dynamic_search_ad, :message, 14, "google.ads.googleads.v0.common.ExpandedDynamicSearchAdInfo"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
add_message "google.ads.googleads.v0.common.TextAdInfo" do
|
28
|
+
optional :headline, :message, 1, "google.protobuf.StringValue"
|
29
|
+
optional :description1, :message, 2, "google.protobuf.StringValue"
|
30
|
+
optional :description2, :message, 3, "google.protobuf.StringValue"
|
31
|
+
end
|
32
|
+
add_message "google.ads.googleads.v0.common.ExpandedTextAdInfo" do
|
33
|
+
optional :headline_part1, :message, 1, "google.protobuf.StringValue"
|
34
|
+
optional :headline_part2, :message, 2, "google.protobuf.StringValue"
|
35
|
+
optional :description, :message, 3, "google.protobuf.StringValue"
|
36
|
+
optional :path1, :message, 4, "google.protobuf.StringValue"
|
37
|
+
optional :path2, :message, 5, "google.protobuf.StringValue"
|
38
|
+
end
|
39
|
+
add_message "google.ads.googleads.v0.common.DynamicSearchAdInfo" do
|
40
|
+
optional :description1, :message, 1, "google.protobuf.StringValue"
|
41
|
+
optional :description2, :message, 2, "google.protobuf.StringValue"
|
42
|
+
end
|
43
|
+
add_message "google.ads.googleads.v0.common.ResponsiveDisplayAdInfo" do
|
44
|
+
optional :short_headline, :message, 1, "google.protobuf.StringValue"
|
45
|
+
optional :long_headline, :message, 2, "google.protobuf.StringValue"
|
46
|
+
optional :description, :message, 3, "google.protobuf.StringValue"
|
47
|
+
optional :business_name, :message, 4, "google.protobuf.StringValue"
|
48
|
+
end
|
49
|
+
add_message "google.ads.googleads.v0.common.CallOnlyAdInfo" do
|
50
|
+
optional :country_code, :message, 1, "google.protobuf.StringValue"
|
51
|
+
optional :phone_number, :message, 2, "google.protobuf.StringValue"
|
52
|
+
optional :business_name, :message, 3, "google.protobuf.StringValue"
|
53
|
+
optional :description1, :message, 4, "google.protobuf.StringValue"
|
54
|
+
optional :description2, :message, 5, "google.protobuf.StringValue"
|
55
|
+
optional :call_tracked, :message, 6, "google.protobuf.BoolValue"
|
56
|
+
optional :disable_call_conversion, :message, 7, "google.protobuf.BoolValue"
|
57
|
+
optional :phone_number_verification_url, :message, 8, "google.protobuf.StringValue"
|
58
|
+
end
|
59
|
+
add_message "google.ads.googleads.v0.common.ExpandedDynamicSearchAdInfo" do
|
60
|
+
optional :description, :message, 1, "google.protobuf.StringValue"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
module Google
|
65
|
+
module Ads
|
66
|
+
module Googleads
|
67
|
+
module V0
|
68
|
+
module Common
|
69
|
+
Ad = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v0.common.Ad").msgclass
|
70
|
+
TextAdInfo = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v0.common.TextAdInfo").msgclass
|
71
|
+
ExpandedTextAdInfo = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v0.common.ExpandedTextAdInfo").msgclass
|
72
|
+
DynamicSearchAdInfo = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v0.common.DynamicSearchAdInfo").msgclass
|
73
|
+
ResponsiveDisplayAdInfo = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v0.common.ResponsiveDisplayAdInfo").msgclass
|
74
|
+
CallOnlyAdInfo = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v0.common.CallOnlyAdInfo").msgclass
|
75
|
+
ExpandedDynamicSearchAdInfo = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v0.common.ExpandedDynamicSearchAdInfo").msgclass
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|