facebook_ads 0.1.9 → 0.1.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e6da1d5a4ec51406066404c86c95a51e413617c8
4
- data.tar.gz: 8520c0ea1111ea0dd115e819643ac1e10cf6922f
3
+ metadata.gz: 70fa12a0d54cd517252ce2bbcd562b951f698279
4
+ data.tar.gz: f296ab2e5a3d8ee496f8f51afb94cd1b0307fae0
5
5
  SHA512:
6
- metadata.gz: ce833767545b4d0e32008e02aab0e3c5e94091a5adc3c08fea5e96b74e2e73528699f503208c31fc267194672ad1d6ef24856445bd5c337c7b261cdbbc897fe0
7
- data.tar.gz: d773c3fd49a912fde691380c36af876e704a2a445cd924d76d933ad2ccaafbf8a2cda2cc36959329a2fcc1b171cd9e8b65273639d06686129104f76032b6d8e5
6
+ metadata.gz: 8afed8760dc4ef008eba4d5ae8ce4ae31754bd980edcc4f35312e739d165a73bc84ae57ce93947d0642a3c3a3ac94d42893fd236536b6d01788852fa39ddc61e
7
+ data.tar.gz: 2dedaafa25aabbbcb7e9e080949198a80db26df3ae41d5ff3a0b6dbfd8a6b0a8e5414d4605713b984170f18bfba836a6aef5a6fe4b1e8bc187005d86c2898c14
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- facebook_ads (0.1.9)
4
+ facebook_ads (0.1.10)
5
5
  hashie (~> 3.4)
6
6
  rest-client (>= 1.6)
7
7
 
data/facebook_ads.gemspec CHANGED
@@ -3,7 +3,7 @@
3
3
  # gem push facebook_ads-0.1.9.gem
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'facebook_ads'
6
- s.version = '0.1.9'
6
+ s.version = '0.1.10'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.licenses = ['MIT']
9
9
  s.authors = ['Chris Estreich']
@@ -32,6 +32,13 @@ module FacebookAds
32
32
  AdCampaign.find(result['id'])
33
33
  end
34
34
 
35
+ def create_dynamic_ad_campaign(name:, product_catalog_id:, status: 'ACTIVE')
36
+ raise Exception, "Status must be one of: #{AdCampaign::STATUSES.to_sentence}" unless AdCampaign::STATUSES.include?(status)
37
+ query = { name: name, objective: 'PRODUCT_CATALOG_SALES', status: status, promoted_object: { product_catalog_id: product_catalog_id } }
38
+ result = AdCampaign.post("/#{id}/campaigns", query: query)
39
+ AdCampaign.find(result['id'])
40
+ end
41
+
35
42
  # has_many ad_images
36
43
 
37
44
  def ad_images(hashes: nil, limit: 100)
@@ -99,13 +106,16 @@ module FacebookAds
99
106
 
100
107
  def create_carousel_ad_creative(creative)
101
108
  required = %i(name page_id link message assets call_to_action_type multi_share_optimized multi_share_end_card)
102
-
103
109
  unless (keys = required - creative.keys).length.zero?
104
110
  raise Exception, "Creative is missing the following: #{keys.to_sentence}"
105
111
  end
106
112
 
107
113
  raise Exception, "Creative call_to_action_type must be one of: #{AdCreative::CALL_TO_ACTION_TYPES.to_sentence}" unless AdCreative::CALL_TO_ACTION_TYPES.include?(creative[:call_to_action_type])
108
- query = AdCreative.carousel(creative)
114
+ query = if creative[:product_set_id].present?
115
+ AdCreative.product_set(name: creative[:name], page_id: creative[:page_id], link: creative[:link], message: creative[:message], headline: creative[:headline], description: creative[:description], product_set_id: creative[:product_set_id])
116
+ else
117
+ AdCreative.carousel(creative)
118
+ end
109
119
  result = AdCreative.post("/#{id}/adcreatives", query: query)
110
120
  AdCreative.find(result['id'])
111
121
  end
@@ -54,11 +54,28 @@ module FacebookAds
54
54
  }
55
55
  }
56
56
 
57
+
57
58
  {
58
59
  name: name,
59
60
  object_story_spec: object_story_spec.to_json
60
61
  }
61
62
  end
63
+
64
+ def product_set(name:, page_id:, link:, message:, headline:, description:, product_set_id:)
65
+ { name: name,
66
+ object_story_spec: {
67
+ page_id: page_id,
68
+ template_data: {
69
+ description: description,
70
+ link: link,
71
+ message: message,
72
+ name: headline
73
+ }
74
+ },
75
+ template_url: link,
76
+ product_set_id: product_set_id
77
+ }
78
+ end
62
79
  end
63
80
  end
64
81
  end
@@ -36,17 +36,24 @@ module FacebookAds
36
36
  AdProductFeed.find(result['id'])
37
37
  end
38
38
 
39
+ # catalog.create_ad_product_set(name: 'Ring Set', filter: {"category":{"i_contains":"Apparel & Accessories > Jewelry > Earrings"}})
40
+ def create_ad_product_set(name:, filter:)
41
+ query = { name: name, filter: filter.to_json }
42
+ result = AdProductSet.post("/#{id}/product_sets", query: query)
43
+ AdProductSet.find(result['id'])
44
+ end
45
+
39
46
  # has_many product_groups
40
47
 
41
- # def ad_product_groups
42
- # AdProductGroup.paginate("/#{id}/product_groups")
43
- # end
48
+ def ad_product_groups
49
+ AdProductGroup.paginate("/#{id}/product_groups")
50
+ end
44
51
 
45
52
  # has_many product_sets
46
53
 
47
- # def ad_product_sets
48
- # AdProductSet.paginate("/#{id}/product_sets")
49
- # end
54
+ def ad_product_sets
55
+ AdProductSet.paginate("/#{id}/product_sets")
56
+ end
50
57
 
51
58
  # has_many ad_products
52
59
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facebook_ads
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Estreich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-10 00:00:00.000000000 Z
11
+ date: 2017-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  version: '0'
120
120
  requirements: []
121
121
  rubyforge_project:
122
- rubygems_version: 2.6.8
122
+ rubygems_version: 2.4.8
123
123
  signing_key:
124
124
  specification_version: 4
125
125
  summary: Facebook Marketing API SDK for Ruby.