facebookbusiness 0.7.0.3 → 0.9.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|