facebookbusiness 0.7.0.3 → 0.9.0.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.
- checksums.yaml +4 -4
- data/lib/facebook_ads/ad_objects/ad_account.rb +24 -16
- data/lib/facebook_ads/ad_objects/ad_account_ad_volume.rb +24 -0
- data/lib/facebook_ads/ad_objects/ad_account_targeting_unified.rb +22 -5
- data/lib/facebook_ads/ad_objects/ad_activity.rb +0 -1
- data/lib/facebook_ads/ad_objects/ad_asset_feed_spec.rb +5 -0
- data/lib/facebook_ads/ad_objects/ad_async_request.rb +2 -0
- data/lib/facebook_ads/ad_objects/ad_campaign_activity.rb +4 -0
- data/lib/facebook_ads/ad_objects/ad_creative.rb +6 -0
- data/lib/facebook_ads/ad_objects/ad_creative_interactive_components_spec.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_creative_link_data_call_to_action.rb +4 -0
- data/lib/facebook_ads/ad_objects/ad_network_analytics_sync_query_result.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_place_page_set.rb +6 -0
- data/lib/facebook_ads/ad_objects/ad_preview.rb +1 -0
- data/lib/facebook_ads/ad_objects/ad_report_spec.rb +0 -1
- data/lib/facebook_ads/ad_objects/ad_rule_execution_spec.rb +4 -0
- data/lib/facebook_ads/ad_objects/ad_study.rb +1 -1
- data/lib/facebook_ads/ad_objects/ad_study_objective.rb +0 -4
- data/lib/facebook_ads/ad_objects/ad_video.rb +11 -0
- data/lib/facebook_ads/ad_objects/adgroup_activity.rb +2 -0
- data/lib/facebook_ads/ad_objects/adoptable_pet.rb +8 -0
- data/lib/facebook_ads/ad_objects/ads_insights.rb +1 -0
- data/lib/facebook_ads/ad_objects/ads_pixel.rb +4 -0
- data/lib/facebook_ads/ad_objects/application.rb +23 -0
- data/lib/facebook_ads/ad_objects/atlas_campaign.rb +1 -1
- data/lib/facebook_ads/ad_objects/automotive_model.rb +1 -0
- data/lib/facebook_ads/ad_objects/business.rb +62 -11
- data/lib/facebook_ads/ad_objects/business_asset_group.rb +1 -0
- data/lib/facebook_ads/ad_objects/business_role_request.rb +4 -0
- data/lib/facebook_ads/ad_objects/business_unit.rb +1 -2
- data/lib/facebook_ads/ad_objects/business_user.rb +4 -0
- data/lib/facebook_ads/ad_objects/campaign.rb +8 -0
- data/lib/facebook_ads/ad_objects/catalog_sub_vertical_list.rb +88 -0
- data/lib/facebook_ads/ad_objects/commerce_merchant_settings.rb +16 -19
- data/lib/facebook_ads/ad_objects/commerce_merchant_settings_setup_status.rb +1 -0
- data/lib/facebook_ads/ad_objects/commerce_order.rb +6 -0
- data/lib/facebook_ads/ad_objects/commerce_order_transaction_detail.rb +4 -0
- data/lib/facebook_ads/ad_objects/{work_meeting_link.rb → connections_targeting.rb} +3 -2
- data/lib/facebook_ads/ad_objects/{iterative_split_test_config.rb → cpas_advertiser_partnership_recommendation.rb} +9 -9
- data/lib/facebook_ads/ad_objects/{split_test_config.rb → cpas_collaboration_request.rb} +16 -7
- data/lib/facebook_ads/ad_objects/custom_audience_data_source.rb +1 -0
- data/lib/facebook_ads/ad_objects/da_check.rb +7 -0
- data/lib/facebook_ads/ad_objects/destination.rb +1 -0
- data/lib/facebook_ads/ad_objects/event.rb +1 -1
- data/lib/facebook_ads/ad_objects/extended_credit.rb +7 -1
- data/lib/facebook_ads/ad_objects/flight.rb +1 -0
- data/lib/facebook_ads/ad_objects/group.rb +8 -1
- data/lib/facebook_ads/ad_objects/home_listing.rb +1 -0
- data/lib/facebook_ads/ad_objects/hotel.rb +1 -0
- data/lib/facebook_ads/ad_objects/hotel_room.rb +1 -0
- data/lib/facebook_ads/ad_objects/life_event.rb +0 -4
- data/lib/facebook_ads/ad_objects/link.rb +6 -6
- data/lib/facebook_ads/ad_objects/live_video.rb +12 -16
- data/lib/facebook_ads/ad_objects/native_offer_view.rb +0 -1
- data/lib/facebook_ads/ad_objects/oracle_transaction.rb +0 -7
- data/lib/facebook_ads/ad_objects/page.rb +48 -70
- data/lib/facebook_ads/ad_objects/page_post.rb +2 -0
- data/lib/facebook_ads/ad_objects/photo.rb +6 -0
- data/lib/facebook_ads/ad_objects/playable_content.rb +1 -0
- data/lib/facebook_ads/ad_objects/post.rb +49 -2
- data/lib/facebook_ads/ad_objects/product_catalog.rb +43 -7
- data/lib/facebook_ads/ad_objects/product_feed.rb +31 -0
- data/lib/facebook_ads/ad_objects/product_group.rb +1 -0
- data/lib/facebook_ads/ad_objects/product_item.rb +4 -0
- data/lib/facebook_ads/ad_objects/product_set.rb +1 -0
- data/lib/facebook_ads/ad_objects/product_set_metadata.rb +1 -0
- data/lib/facebook_ads/ad_objects/publisher_block_list.rb +6 -0
- data/lib/facebook_ads/ad_objects/referral.rb +2 -0
- data/lib/facebook_ads/ad_objects/security_settings.rb +0 -1
- data/lib/facebook_ads/ad_objects/server_side/batch_processor.rb +73 -0
- data/lib/facebook_ads/ad_objects/server_side/content.rb +23 -4
- data/lib/facebook_ads/ad_objects/server_side/custom_data.rb +21 -0
- data/lib/facebook_ads/ad_objects/{page_about_story.rb → server_side/delivery_category.rb} +10 -16
- data/lib/facebook_ads/ad_objects/server_side/event_request.rb +61 -14
- data/lib/facebook_ads/ad_objects/server_side/event_request_async.rb +43 -0
- data/lib/facebook_ads/ad_objects/{atlas_url.rb → server_side/http_method.rb} +7 -16
- data/lib/facebook_ads/ad_objects/server_side/http_service_interface.rb +33 -0
- data/lib/facebook_ads/ad_objects/server_side/http_util.rb +31 -0
- data/lib/facebook_ads/ad_objects/server_side/user_data.rb +20 -1
- data/lib/facebook_ads/ad_objects/server_side/util.rb +13 -0
- data/lib/facebook_ads/ad_objects/system_user.rb +0 -20
- data/lib/facebook_ads/ad_objects/targeting.rb +3 -3
- data/lib/facebook_ads/ad_objects/third_party_measurement_report_dataset.rb +0 -1
- data/lib/facebook_ads/ad_objects/unified_thread.rb +1 -0
- data/lib/facebook_ads/ad_objects/user.rb +28 -30
- data/lib/facebook_ads/ad_objects/vehicle.rb +2 -0
- data/lib/facebook_ads/ad_objects/vehicle_offer.rb +1 -0
- data/lib/facebook_ads/ad_objects/whats_app_business_account.rb +25 -0
- data/lib/facebook_ads/errors.rb +1 -1
- data/lib/facebook_ads/session.rb +1 -1
- data/lib/facebook_ads/version.rb +2 -2
- metadata +30 -12
- data/lib/facebook_ads/ad_objects/user_taggable_friend.rb +0 -50
@@ -35,6 +35,7 @@ module FacebookAds
|
|
35
35
|
"home_listings",
|
36
36
|
"hotels",
|
37
37
|
"jobs",
|
38
|
+
"local_delivery_shipping_profiles",
|
38
39
|
"local_service_businesses",
|
39
40
|
"offer_items",
|
40
41
|
"offline_commerce",
|
@@ -51,17 +52,48 @@ module FacebookAds
|
|
51
52
|
PERMITTED_TASKS = [
|
52
53
|
"ADVERTISE",
|
53
54
|
"MANAGE",
|
55
|
+
"MANAGE_AR",
|
54
56
|
]
|
55
57
|
|
56
58
|
TASKS = [
|
57
59
|
"ADVERTISE",
|
58
60
|
"MANAGE",
|
61
|
+
"MANAGE_AR",
|
59
62
|
]
|
60
63
|
|
61
64
|
STANDARD = [
|
62
65
|
"google",
|
63
66
|
]
|
64
67
|
|
68
|
+
ITEM_SUB_TYPE = [
|
69
|
+
"APPLIANCES",
|
70
|
+
"BABY_FEEDING",
|
71
|
+
"BABY_TRANSPORT",
|
72
|
+
"BEAUTY",
|
73
|
+
"BEDDING",
|
74
|
+
"CAMERAS",
|
75
|
+
"CELL_PHONES_AND_SMART_WATCHES",
|
76
|
+
"CLEANING_SUPPLIES",
|
77
|
+
"CLOTHING",
|
78
|
+
"CLOTHING_ACCESSORIES",
|
79
|
+
"COMPUTERS_AND_TABLETS",
|
80
|
+
"DIAPERING_AND_POTTY_TRAINING",
|
81
|
+
"ELECTRONICS_ACCESSORIES",
|
82
|
+
"FURNITURE",
|
83
|
+
"HEALTH",
|
84
|
+
"HOME_GOODS",
|
85
|
+
"JEWELRY",
|
86
|
+
"NURSERY",
|
87
|
+
"PRINTERS_AND_SCANNERS",
|
88
|
+
"PROJECTORS",
|
89
|
+
"SHOES_AND_FOOTWEAR",
|
90
|
+
"SOFTWARE",
|
91
|
+
"TOYS",
|
92
|
+
"TVS_AND_MONITORS",
|
93
|
+
"VIDEO_GAME_CONSOLES_AND_VIDEO_GAMES",
|
94
|
+
"WATCHES",
|
95
|
+
]
|
96
|
+
|
65
97
|
|
66
98
|
field :business, 'Business'
|
67
99
|
field :commerce_merchant_settings, 'CommerceMerchantSettings'
|
@@ -75,9 +107,11 @@ module FacebookAds
|
|
75
107
|
field :product_count, 'int'
|
76
108
|
field :store_catalog_settings, 'StoreCatalogSettings'
|
77
109
|
field :vertical, 'string'
|
110
|
+
field :catalog_segment_filter, 'object'
|
111
|
+
field :catalog_segment_product_set_id, 'string'
|
78
112
|
field :destination_catalog_settings, 'hash'
|
79
113
|
field :flight_catalog_settings, 'hash'
|
80
|
-
field :
|
114
|
+
field :parent_catalog_id, 'string'
|
81
115
|
|
82
116
|
has_edge :agencies do |edge|
|
83
117
|
edge.delete do |api|
|
@@ -88,6 +122,7 @@ module FacebookAds
|
|
88
122
|
api.has_param :business, 'string'
|
89
123
|
api.has_param :permitted_roles, { list: { enum: -> { ProductCatalog::PERMITTED_ROLES }} }
|
90
124
|
api.has_param :permitted_tasks, { list: { enum: -> { ProductCatalog::PERMITTED_TASKS }} }
|
125
|
+
api.has_param :utm_settings, 'hash'
|
91
126
|
end
|
92
127
|
end
|
93
128
|
|
@@ -233,17 +268,12 @@ module FacebookAds
|
|
233
268
|
has_edge :items_batch do |edge|
|
234
269
|
edge.post 'ProductCatalog' do |api|
|
235
270
|
api.has_param :allow_upsert, 'bool'
|
271
|
+
api.has_param :item_sub_type, { enum: -> { ProductCatalog::ITEM_SUB_TYPE }}
|
236
272
|
api.has_param :item_type, 'string'
|
237
273
|
api.has_param :requests, 'hash'
|
238
274
|
end
|
239
275
|
end
|
240
276
|
|
241
|
-
has_edge :onsite_commerce_merchant do |edge|
|
242
|
-
edge.post 'ProductCatalog' do |api|
|
243
|
-
api.has_param :onsite_commerce_merchant, 'object'
|
244
|
-
end
|
245
|
-
end
|
246
|
-
|
247
277
|
has_edge :pricing_variables_batch do |edge|
|
248
278
|
edge.get 'ProductCatalogPricingVariablesBatch' do |api|
|
249
279
|
api.has_param :handle, 'string'
|
@@ -268,6 +298,8 @@ module FacebookAds
|
|
268
298
|
api.has_param :encoding, { enum: -> { ProductFeed::ENCODING }}
|
269
299
|
api.has_param :feed_type, { enum: -> { ProductFeed::FEED_TYPE }}
|
270
300
|
api.has_param :file_name, 'string'
|
301
|
+
api.has_param :item_sub_type, { enum: -> { ProductFeed::ITEM_SUB_TYPE }}
|
302
|
+
api.has_param :migrated_from_feed_id, 'string'
|
271
303
|
api.has_param :name, 'string'
|
272
304
|
api.has_param :override_type, { enum: -> { ProductFeed::OVERRIDE_TYPE }}
|
273
305
|
api.has_param :override_value, 'string'
|
@@ -298,6 +330,7 @@ module FacebookAds
|
|
298
330
|
api.has_param :filter, 'object'
|
299
331
|
api.has_param :metadata, 'hash'
|
300
332
|
api.has_param :name, 'string'
|
333
|
+
api.has_param :retailer_id, 'string'
|
301
334
|
end
|
302
335
|
end
|
303
336
|
|
@@ -316,6 +349,7 @@ module FacebookAds
|
|
316
349
|
edge.post 'ProductItem' do |api|
|
317
350
|
api.has_param :additional_image_files, { list: 'file' }
|
318
351
|
api.has_param :additional_image_urls, { list: 'string' }
|
352
|
+
api.has_param :additional_uploaded_image_ids, { list: 'string' }
|
319
353
|
api.has_param :additional_variant_attributes, 'hash'
|
320
354
|
api.has_param :android_app_name, 'string'
|
321
355
|
api.has_param :android_class, 'string'
|
@@ -324,6 +358,7 @@ module FacebookAds
|
|
324
358
|
api.has_param :availability, { enum: -> { ProductItem::AVAILABILITY }}
|
325
359
|
api.has_param :brand, 'string'
|
326
360
|
api.has_param :category, 'string'
|
361
|
+
api.has_param :category_specific_fields, 'hash'
|
327
362
|
api.has_param :checkout_url, 'string'
|
328
363
|
api.has_param :color, 'string'
|
329
364
|
api.has_param :commerce_tax_category, { enum: -> { ProductItem::COMMERCE_TAX_CATEGORY }}
|
@@ -337,6 +372,7 @@ module FacebookAds
|
|
337
372
|
api.has_param :custom_label_4, 'string'
|
338
373
|
api.has_param :description, 'string'
|
339
374
|
api.has_param :expiration_date, 'string'
|
375
|
+
api.has_param :fb_product_category, 'string'
|
340
376
|
api.has_param :gender, { enum: -> { ProductItem::GENDER }}
|
341
377
|
api.has_param :gtin, 'string'
|
342
378
|
api.has_param :image_url, 'string'
|
@@ -68,6 +68,35 @@ module FacebookAds
|
|
68
68
|
"VEHICLE_OFFER",
|
69
69
|
]
|
70
70
|
|
71
|
+
ITEM_SUB_TYPE = [
|
72
|
+
"APPLIANCES",
|
73
|
+
"BABY_FEEDING",
|
74
|
+
"BABY_TRANSPORT",
|
75
|
+
"BEAUTY",
|
76
|
+
"BEDDING",
|
77
|
+
"CAMERAS",
|
78
|
+
"CELL_PHONES_AND_SMART_WATCHES",
|
79
|
+
"CLEANING_SUPPLIES",
|
80
|
+
"CLOTHING",
|
81
|
+
"CLOTHING_ACCESSORIES",
|
82
|
+
"COMPUTERS_AND_TABLETS",
|
83
|
+
"DIAPERING_AND_POTTY_TRAINING",
|
84
|
+
"ELECTRONICS_ACCESSORIES",
|
85
|
+
"FURNITURE",
|
86
|
+
"HEALTH",
|
87
|
+
"HOME_GOODS",
|
88
|
+
"JEWELRY",
|
89
|
+
"NURSERY",
|
90
|
+
"PRINTERS_AND_SCANNERS",
|
91
|
+
"PROJECTORS",
|
92
|
+
"SHOES_AND_FOOTWEAR",
|
93
|
+
"SOFTWARE",
|
94
|
+
"TOYS",
|
95
|
+
"TVS_AND_MONITORS",
|
96
|
+
"VIDEO_GAME_CONSOLES_AND_VIDEO_GAMES",
|
97
|
+
"WATCHES",
|
98
|
+
]
|
99
|
+
|
71
100
|
OVERRIDE_TYPE = [
|
72
101
|
"CATALOG_SEGMENT_CUSTOMIZE_DEFAULT",
|
73
102
|
"COUNTRY",
|
@@ -85,7 +114,9 @@ module FacebookAds
|
|
85
114
|
field :encoding, 'string'
|
86
115
|
field :file_name, 'string'
|
87
116
|
field :id, 'string'
|
117
|
+
field :item_sub_type, 'string'
|
88
118
|
field :latest_upload, 'ProductFeedUpload'
|
119
|
+
field :migrated_from_feed_id, 'string'
|
89
120
|
field :name, 'string'
|
90
121
|
field :override_type, 'string'
|
91
122
|
field :product_count, 'int'
|
@@ -57,6 +57,7 @@ module FacebookAds
|
|
57
57
|
api.has_param :custom_label_4, 'string'
|
58
58
|
api.has_param :description, 'string'
|
59
59
|
api.has_param :expiration_date, 'string'
|
60
|
+
api.has_param :fb_product_category, 'string'
|
60
61
|
api.has_param :gender, { enum: -> { ProductItem::GENDER }}
|
61
62
|
api.has_param :gtin, 'string'
|
62
63
|
api.has_param :image_url, 'string'
|
@@ -297,6 +297,7 @@ module FacebookAds
|
|
297
297
|
field :brand, 'string'
|
298
298
|
field :capability_to_review_status, 'hash'
|
299
299
|
field :category, 'string'
|
300
|
+
field :category_specific_fields, 'CatalogSubVerticalList'
|
300
301
|
field :color, 'string'
|
301
302
|
field :commerce_insights, 'ProductItemCommerceInsights'
|
302
303
|
field :condition, { enum: -> { CONDITION }}
|
@@ -309,11 +310,13 @@ module FacebookAds
|
|
309
310
|
field :custom_label_4, 'string'
|
310
311
|
field :description, 'string'
|
311
312
|
field :expiration_date, 'string'
|
313
|
+
field :fb_product_category, 'string'
|
312
314
|
field :gender, { enum: -> { GENDER }}
|
313
315
|
field :gtin, 'string'
|
314
316
|
field :id, 'string'
|
315
317
|
field :image_cdn_urls, 'hash'
|
316
318
|
field :image_url, 'string'
|
319
|
+
field :images, { list: 'string' }
|
317
320
|
field :inventory, 'int'
|
318
321
|
field :manufacturer_part_number, 'string'
|
319
322
|
field :material, 'string'
|
@@ -341,6 +344,7 @@ module FacebookAds
|
|
341
344
|
field :url, 'string'
|
342
345
|
field :visibility, { enum: -> { VISIBILITY }}
|
343
346
|
field :additional_image_files, { list: 'file' }
|
347
|
+
field :additional_uploaded_image_ids, { list: 'string' }
|
344
348
|
field :android_app_name, 'string'
|
345
349
|
field :android_class, 'string'
|
346
350
|
field :android_package, 'string'
|
@@ -38,6 +38,12 @@ module FacebookAds
|
|
38
38
|
field :owner_ad_account_id, 'string'
|
39
39
|
field :web_publishers, { list: 'object' }
|
40
40
|
|
41
|
+
has_edge :append_publisher_urls do |edge|
|
42
|
+
edge.post do |api|
|
43
|
+
api.has_param :publisher_urls, { list: 'string' }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
41
47
|
has_edge :paged_web_publishers do |edge|
|
42
48
|
edge.get do |api|
|
43
49
|
api.has_param :draft_id, 'string'
|
@@ -34,10 +34,12 @@ module FacebookAds
|
|
34
34
|
field :namespace, 'string'
|
35
35
|
field :need_promo_code, 'bool'
|
36
36
|
field :offer_origin, 'string'
|
37
|
+
field :privacy_policy_link, 'string'
|
37
38
|
field :promotion_text, 'string'
|
38
39
|
field :receiver_benefits_text, 'string'
|
39
40
|
field :referral_link_uri, 'string'
|
40
41
|
field :sender_benefits_text, 'string'
|
42
|
+
field :terms_and_condition_link, 'string'
|
41
43
|
|
42
44
|
end
|
43
45
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Copyright (c) 2017-present, Facebook, Inc. All rights reserved.
|
2
|
+
#
|
3
|
+
# You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
|
4
|
+
# copy, modify, and distribute this software in source code or binary form for use
|
5
|
+
# in connection with the web services and APIs provided by Facebook.
|
6
|
+
#
|
7
|
+
# As with any software that integrates with the Facebook platform, your use of
|
8
|
+
# this software is subject to the Facebook Platform Policy
|
9
|
+
# [http://developers.facebook.com/policy/]. This copyright notice shall be
|
10
|
+
# included in all copies or substantial portions of the software.
|
11
|
+
#
|
12
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
13
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
14
|
+
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
15
|
+
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
16
|
+
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
17
|
+
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
18
|
+
|
19
|
+
module FacebookAds::ServerSide
|
20
|
+
class BatchProcessor
|
21
|
+
attr_accessor :batch_size
|
22
|
+
attr_accessor :concurrent_requests
|
23
|
+
|
24
|
+
# Initializes the object
|
25
|
+
# @param [Integer] batch_size The number of events to send in each request
|
26
|
+
# @param [Integer] concurrent_requests The number of threads to use when making requests concurrently
|
27
|
+
def initialize(batch_size=50, concurrent_requests=4)
|
28
|
+
self.batch_size = batch_size
|
29
|
+
self.concurrent_requests = concurrent_requests
|
30
|
+
end
|
31
|
+
|
32
|
+
def process_event_requests(event_requests_async)
|
33
|
+
generator = self.process_event_requests_generator(event_requests_async)
|
34
|
+
generator.each do |batch|
|
35
|
+
Concurrent::Promise.zip(*batch).execute.value!
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def process_events(event_request_async_to_clone, events)
|
40
|
+
generator = self.process_events_generator(event_request_async_to_clone, events)
|
41
|
+
generator.each do |batch|
|
42
|
+
Concurrent::Promise.zip(*batch).execute.value!
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def process_event_requests_generator(event_requests_async)
|
47
|
+
index = 0
|
48
|
+
Enumerator.new do |generator|
|
49
|
+
while index < event_requests_async.size do
|
50
|
+
batch = event_requests_async[index, concurrent_requests].map(&:execute)
|
51
|
+
generator.yield *[batch]
|
52
|
+
index += concurrent_requests
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def process_events_generator(event_request_async_to_clone, events)
|
58
|
+
index = 0
|
59
|
+
Enumerator.new do |generator|
|
60
|
+
while index < events.size do
|
61
|
+
batch = []
|
62
|
+
while index < events.size && batch.size < concurrent_requests do
|
63
|
+
event_request_async = event_request_async_to_clone.clone_without_events
|
64
|
+
event_request_async.events = events[index, batch_size]
|
65
|
+
batch << event_request_async
|
66
|
+
index += batch_size
|
67
|
+
end
|
68
|
+
generator.yield *[batch.map(&:execute)]
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -28,7 +28,8 @@ module FacebookAds
|
|
28
28
|
:title,
|
29
29
|
:description,
|
30
30
|
:brand,
|
31
|
-
:category
|
31
|
+
:category,
|
32
|
+
:delivery_category
|
32
33
|
|
33
34
|
# Initializes the object
|
34
35
|
# @param [String] product_id
|
@@ -38,7 +39,8 @@ module FacebookAds
|
|
38
39
|
# @param [String] description
|
39
40
|
# @param [String] brand
|
40
41
|
# @param [String] category
|
41
|
-
|
42
|
+
# @param [String] delivery_category
|
43
|
+
def initialize(product_id: nil, quantity: nil, item_price: nil, title: nil, description: nil, brand: nil, category: nil, delivery_category: nil)
|
42
44
|
unless product_id.nil?
|
43
45
|
self.product_id = String(product_id)
|
44
46
|
end
|
@@ -60,6 +62,9 @@ module FacebookAds
|
|
60
62
|
unless category.nil?
|
61
63
|
self.category = String(category)
|
62
64
|
end
|
65
|
+
unless delivery_category.nil?
|
66
|
+
self.delivery_category = String(delivery_category)
|
67
|
+
end
|
63
68
|
end
|
64
69
|
|
65
70
|
# build the object using the input hash
|
@@ -97,6 +102,10 @@ module FacebookAds
|
|
97
102
|
if attributes.has_key?(:'category')
|
98
103
|
self.category = attributes[:'category']
|
99
104
|
end
|
105
|
+
|
106
|
+
if attributes.has_key?(:'delivery_category')
|
107
|
+
self.delivery_category = attributes[:'delivery_category']
|
108
|
+
end
|
100
109
|
end
|
101
110
|
|
102
111
|
# Checks equality by comparing each attribute.
|
@@ -108,7 +117,8 @@ module FacebookAds
|
|
108
117
|
title == o.title &&
|
109
118
|
description == o.description &&
|
110
119
|
brand == o.brand &&
|
111
|
-
category == o.category
|
120
|
+
category == o.category &&
|
121
|
+
delivery_category == o.delivery_category
|
112
122
|
end
|
113
123
|
|
114
124
|
# @see the `==` method
|
@@ -126,7 +136,8 @@ module FacebookAds
|
|
126
136
|
title,
|
127
137
|
description,
|
128
138
|
brand,
|
129
|
-
category
|
139
|
+
category,
|
140
|
+
delivery_category
|
130
141
|
].hash
|
131
142
|
end
|
132
143
|
|
@@ -156,6 +167,9 @@ module FacebookAds
|
|
156
167
|
unless category.nil?
|
157
168
|
hash['category'] = category
|
158
169
|
end
|
170
|
+
unless delivery_category.nil?
|
171
|
+
hash['delivery_category'] = delivery_category
|
172
|
+
end
|
159
173
|
hash.to_s
|
160
174
|
end
|
161
175
|
|
@@ -183,6 +197,11 @@ module FacebookAds
|
|
183
197
|
unless category.nil?
|
184
198
|
hash['category'] = category
|
185
199
|
end
|
200
|
+
unless delivery_category.nil?
|
201
|
+
hash['delivery_category'] = FacebookAds::ServerSide::Util.normalize_delivery_category(
|
202
|
+
delivery_category
|
203
|
+
)
|
204
|
+
end
|
186
205
|
hash
|
187
206
|
end
|
188
207
|
end
|
@@ -70,6 +70,10 @@ module FacebookAds
|
|
70
70
|
# Example: 'lettuce'.
|
71
71
|
attr_accessor :search_string
|
72
72
|
|
73
|
+
# Type of delivery for a purchase event
|
74
|
+
# Example: 'home_delivery'.
|
75
|
+
attr_accessor :delivery_category
|
76
|
+
|
73
77
|
# The item number.
|
74
78
|
# Example: 'item1234'.
|
75
79
|
attr_accessor :item_number
|
@@ -90,6 +94,7 @@ module FacebookAds
|
|
90
94
|
# @param [Integer] num_items
|
91
95
|
# @param [String] status
|
92
96
|
# @param [String] search_string
|
97
|
+
# @param [String] delivery_category
|
93
98
|
# @param [String] item_number
|
94
99
|
# @param [String] custom_properties
|
95
100
|
def initialize(value: nil,
|
@@ -104,6 +109,7 @@ module FacebookAds
|
|
104
109
|
num_items: nil,
|
105
110
|
status: nil,
|
106
111
|
search_string: nil,
|
112
|
+
delivery_category: nil,
|
107
113
|
item_number: nil,
|
108
114
|
custom_properties: {})
|
109
115
|
|
@@ -143,6 +149,9 @@ module FacebookAds
|
|
143
149
|
unless search_string.nil?
|
144
150
|
self.search_string = search_string
|
145
151
|
end
|
152
|
+
unless delivery_category.nil?
|
153
|
+
self.delivery_category = delivery_category
|
154
|
+
end
|
146
155
|
unless item_number.nil?
|
147
156
|
self.item_number = item_number
|
148
157
|
end
|
@@ -212,6 +221,10 @@ module FacebookAds
|
|
212
221
|
self.search_string = attributes[:'search_string']
|
213
222
|
end
|
214
223
|
|
224
|
+
if attributes.has_key?(:'delivery_category')
|
225
|
+
self.delivery_category = attributes[:'delivery_category']
|
226
|
+
end
|
227
|
+
|
215
228
|
if attributes.has_key?(:'item_number')
|
216
229
|
self.item_number = attributes[:'item_number']
|
217
230
|
end
|
@@ -237,6 +250,7 @@ module FacebookAds
|
|
237
250
|
num_items == o.num_items &&
|
238
251
|
status == o.status &&
|
239
252
|
search_string == o.search_string &&
|
253
|
+
delivery_category == o.delivery_category &&
|
240
254
|
item_number == o.item_number &&
|
241
255
|
custom_properties == o.custom_properties
|
242
256
|
end
|
@@ -262,6 +276,7 @@ module FacebookAds
|
|
262
276
|
num_items,
|
263
277
|
status,
|
264
278
|
search_string,
|
279
|
+
delivery_category,
|
265
280
|
item_number,
|
266
281
|
custom_properties
|
267
282
|
].hash
|
@@ -307,6 +322,9 @@ module FacebookAds
|
|
307
322
|
unless search_string.nil?
|
308
323
|
hash['search_string'] = search_string
|
309
324
|
end
|
325
|
+
unless delivery_category.nil?
|
326
|
+
hash['delivery_category'] = delivery_category
|
327
|
+
end
|
310
328
|
unless custom_properties.nil?
|
311
329
|
hash['custom_properties'] = custom_properties
|
312
330
|
end
|
@@ -354,6 +372,9 @@ module FacebookAds
|
|
354
372
|
unless search_string.nil?
|
355
373
|
hash['search_string'] = search_string
|
356
374
|
end
|
375
|
+
unless delivery_category.nil?
|
376
|
+
hash['delivery_category'] = FacebookAds::ServerSide::Util.normalize(delivery_category, 'delivery_category')
|
377
|
+
end
|
357
378
|
unless item_number.nil?
|
358
379
|
hash['item_number'] = item_number
|
359
380
|
end
|