facebook_ads 0.1.9 → 0.1.10

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