adparlor-facebook 0.5.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.gitlab-ci.yml +5 -0
- data/.rspec +2 -0
- data/.rubocop.yml +28 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +136 -0
- data/Guardfile +13 -0
- data/LICENSE.txt +21 -0
- data/README.md +164 -0
- data/Rakefile +3 -0
- data/adparlor-facebook.gemspec +38 -0
- data/bin/console +18 -0
- data/bin/gitlab_runner_specs.sh +22 -0
- data/bin/setup +7 -0
- data/lib/adparlor/facebook/api.rb +106 -0
- data/lib/adparlor/facebook/config.rb +24 -0
- data/lib/adparlor/facebook/error.rb +13 -0
- data/lib/adparlor/facebook/graph_api/activity.rb +11 -0
- data/lib/adparlor/facebook/graph_api/ad.rb +43 -0
- data/lib/adparlor/facebook/graph_api/ad_account.rb +168 -0
- data/lib/adparlor/facebook/graph_api/ad_creative.rb +22 -0
- data/lib/adparlor/facebook/graph_api/ad_image.rb +87 -0
- data/lib/adparlor/facebook/graph_api/ad_label.rb +12 -0
- data/lib/adparlor/facebook/graph_api/ad_preview.rb +15 -0
- data/lib/adparlor/facebook/graph_api/ad_set.rb +39 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_search.rb +64 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_education_major.rb +11 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_education_school.rb +11 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_geolocation.rb +19 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_geolocation_meta.rb +16 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_geolocations/ad_city.rb +13 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_geolocations/ad_country.rb +13 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_geolocations/ad_geo_market.rb +13 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_geolocations/ad_region.rb +13 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_geolocations/ad_zip_code.rb +13 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_interest.rb +11 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_interest_suggestion.rb +12 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_interest_validation.rb +18 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_locale.rb +11 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_radius_suggestion.rb +11 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_targeting_category.rb +18 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_work_employer.rb +11 -0
- data/lib/adparlor/facebook/graph_api/ad_targeting_types/ad_work_position.rb +11 -0
- data/lib/adparlor/facebook/graph_api/ad_video.rb +124 -0
- data/lib/adparlor/facebook/graph_api/ads_pixel.rb +22 -0
- data/lib/adparlor/facebook/graph_api/ads_pixel_stat.rb +25 -0
- data/lib/adparlor/facebook/graph_api/advertisable_application.rb +11 -0
- data/lib/adparlor/facebook/graph_api/app_event_type.rb +11 -0
- data/lib/adparlor/facebook/graph_api/application.rb +15 -0
- data/lib/adparlor/facebook/graph_api/batch_object.rb +147 -0
- data/lib/adparlor/facebook/graph_api/broad_targeting_category.rb +11 -0
- data/lib/adparlor/facebook/graph_api/business.rb +18 -0
- data/lib/adparlor/facebook/graph_api/campaign.rb +43 -0
- data/lib/adparlor/facebook/graph_api/collection_proxy.rb +36 -0
- data/lib/adparlor/facebook/graph_api/connection_object.rb +11 -0
- data/lib/adparlor/facebook/graph_api/custom_audience.rb +31 -0
- data/lib/adparlor/facebook/graph_api/custom_audience_tos.rb +11 -0
- data/lib/adparlor/facebook/graph_api/custom_audience_user.rb +85 -0
- data/lib/adparlor/facebook/graph_api/custom_conversion.rb +22 -0
- data/lib/adparlor/facebook/graph_api/delivery_estimate.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/activity.rb +12 -0
- data/lib/adparlor/facebook/graph_api/fields/ad.rb +60 -0
- data/lib/adparlor/facebook/graph_api/fields/ad_account.rb +21 -0
- data/lib/adparlor/facebook/graph_api/fields/ad_creative.rb +23 -0
- data/lib/adparlor/facebook/graph_api/fields/ad_image.rb +14 -0
- data/lib/adparlor/facebook/graph_api/fields/ad_label.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/ad_preview.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/ad_set.rb +100 -0
- data/lib/adparlor/facebook/graph_api/fields/ad_video.rb +22 -0
- data/lib/adparlor/facebook/graph_api/fields/ads_pixel.rb +12 -0
- data/lib/adparlor/facebook/graph_api/fields/ads_pixel_stat.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/advertisable_application.rb +17 -0
- data/lib/adparlor/facebook/graph_api/fields/app_event_type.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/application.rb +31 -0
- data/lib/adparlor/facebook/graph_api/fields/broad_targeting_category.rb +12 -0
- data/lib/adparlor/facebook/graph_api/fields/business.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/campaign.rb +17 -0
- data/lib/adparlor/facebook/graph_api/fields/connection_object.rb +16 -0
- data/lib/adparlor/facebook/graph_api/fields/custom_audience.rb +22 -0
- data/lib/adparlor/facebook/graph_api/fields/custom_audience_tos.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/custom_audience_user.rb +14 -0
- data/lib/adparlor/facebook/graph_api/fields/custom_conversion.rb +14 -0
- data/lib/adparlor/facebook/graph_api/fields/delivery_estimate.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/field_decorator.rb +51 -0
- data/lib/adparlor/facebook/graph_api/fields/insight.rb +16 -0
- data/lib/adparlor/facebook/graph_api/fields/instagram_account.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/leadgen_form.rb +23 -0
- data/lib/adparlor/facebook/graph_api/fields/page.rb +121 -0
- data/lib/adparlor/facebook/graph_api/fields/page_and_place.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/partner_category.rb +12 -0
- data/lib/adparlor/facebook/graph_api/fields/picture.rb +17 -0
- data/lib/adparlor/facebook/graph_api/fields/post.rb +17 -0
- data/lib/adparlor/facebook/graph_api/fields/product_audience.rb +12 -0
- data/lib/adparlor/facebook/graph_api/fields/product_catalog.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/product_feed.rb +12 -0
- data/lib/adparlor/facebook/graph_api/fields/product_group.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/product_item.rb +18 -0
- data/lib/adparlor/facebook/graph_api/fields/product_set.rb +13 -0
- data/lib/adparlor/facebook/graph_api/fields/reach_estimate.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/reach_frequency_prediction.rb +24 -0
- data/lib/adparlor/facebook/graph_api/fields/targeting_sentence_line.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/targeting_suggestion.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/targeting_validation.rb +11 -0
- data/lib/adparlor/facebook/graph_api/fields/user_lead_gen_info.rb +18 -0
- data/lib/adparlor/facebook/graph_api/fields/video_thumbnail.rb +11 -0
- data/lib/adparlor/facebook/graph_api/graph_object.rb +140 -0
- data/lib/adparlor/facebook/graph_api/insight.rb +18 -0
- data/lib/adparlor/facebook/graph_api/instagram_account.rb +12 -0
- data/lib/adparlor/facebook/graph_api/leadgen_form.rb +10 -0
- data/lib/adparlor/facebook/graph_api/page.rb +27 -0
- data/lib/adparlor/facebook/graph_api/page_and_place.rb +11 -0
- data/lib/adparlor/facebook/graph_api/partner_category.rb +11 -0
- data/lib/adparlor/facebook/graph_api/picture.rb +15 -0
- data/lib/adparlor/facebook/graph_api/post.rb +17 -0
- data/lib/adparlor/facebook/graph_api/product_audience.rb +17 -0
- data/lib/adparlor/facebook/graph_api/product_catalog.rb +27 -0
- data/lib/adparlor/facebook/graph_api/product_feed.rb +11 -0
- data/lib/adparlor/facebook/graph_api/product_group.rb +11 -0
- data/lib/adparlor/facebook/graph_api/product_item.rb +11 -0
- data/lib/adparlor/facebook/graph_api/product_set.rb +26 -0
- data/lib/adparlor/facebook/graph_api/reach_estimate.rb +17 -0
- data/lib/adparlor/facebook/graph_api/reach_frequency_prediction.rb +18 -0
- data/lib/adparlor/facebook/graph_api/targeting_sentence_line.rb +11 -0
- data/lib/adparlor/facebook/graph_api/targeting_suggestion.rb +16 -0
- data/lib/adparlor/facebook/graph_api/targeting_validation.rb +16 -0
- data/lib/adparlor/facebook/graph_api/traits/methods.rb +64 -0
- data/lib/adparlor/facebook/graph_api/user_lead_gen_info.rb +11 -0
- data/lib/adparlor/facebook/graph_api/video_thumbnail.rb +11 -0
- data/lib/adparlor/facebook/graph_api.rb +9 -0
- data/lib/adparlor/facebook/version.rb +5 -0
- data/lib/adparlor/facebook.rb +9 -0
- data/solano.yml +15 -0
- metadata +391 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
module Adparlor
|
2
|
+
module Facebook
|
3
|
+
module GraphApi
|
4
|
+
class ProductCatalog < GraphObject
|
5
|
+
include Fields::ProductCatalog
|
6
|
+
include Traits::Methods
|
7
|
+
field_attrs FIELDS
|
8
|
+
|
9
|
+
def product_items
|
10
|
+
@product_items ||= CollectionProxy.new ProductItem, "/#{id}/products", access_token
|
11
|
+
end
|
12
|
+
|
13
|
+
def product_feeds
|
14
|
+
@product_feeds ||= CollectionProxy.new ProductFeed, "/#{id}/product_feeds", access_token
|
15
|
+
end
|
16
|
+
|
17
|
+
def product_groups
|
18
|
+
@product_groups ||= CollectionProxy.new ProductGroup, "/#{id}/product_groups", access_token
|
19
|
+
end
|
20
|
+
|
21
|
+
def product_sets
|
22
|
+
@product_sets ||= CollectionProxy.new ProductSet, "/#{id}/product_sets", access_token
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Adparlor
|
2
|
+
module Facebook
|
3
|
+
module GraphApi
|
4
|
+
class ProductSet < GraphObject
|
5
|
+
include Fields::ProductSet
|
6
|
+
include Traits::Methods
|
7
|
+
field_attrs FIELDS
|
8
|
+
allow_local_method :create, :destroy, :update
|
9
|
+
|
10
|
+
def path
|
11
|
+
raise FbError.new('required parameter product_catalog_id missing', 500) unless @product_catalog_id
|
12
|
+
"/#{@product_catalog_id}/product_sets"
|
13
|
+
end
|
14
|
+
|
15
|
+
def update_path
|
16
|
+
raise FbError.new('required parameter id missing', 500) unless @id
|
17
|
+
"/#{@id}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def products
|
21
|
+
@product_items ||= CollectionProxy.new ProductItem, "/#{id}/products", access_token
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Adparlor
|
2
|
+
module Facebook
|
3
|
+
module GraphApi
|
4
|
+
class ReachEstimate < GraphObject
|
5
|
+
include Fields::ReachEstimate
|
6
|
+
include Traits::Methods
|
7
|
+
field_attrs FIELDS
|
8
|
+
|
9
|
+
class << self
|
10
|
+
def data_pass_through
|
11
|
+
true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Adparlor
|
2
|
+
module Facebook
|
3
|
+
module GraphApi
|
4
|
+
class ReachFrequencyPrediction < GraphObject
|
5
|
+
include Fields::ReachFrequencyPrediction
|
6
|
+
include Traits::Methods
|
7
|
+
field_attrs FIELDS
|
8
|
+
allow_method :create
|
9
|
+
allow_local_method :create
|
10
|
+
|
11
|
+
def path
|
12
|
+
raise FbError.new('required parameter account_id missing', 500) unless account_id
|
13
|
+
"/act_#{account_id}/reachfrequencypredictions"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Adparlor
|
2
|
+
module Facebook
|
3
|
+
module GraphApi
|
4
|
+
class TargetingSuggestion < GraphObject
|
5
|
+
include Fields::TargetingSuggestion
|
6
|
+
include Traits::Methods
|
7
|
+
field_attrs FIELDS
|
8
|
+
|
9
|
+
def get(path, options = {})
|
10
|
+
options[:targeting_list] = options[:targeting_list].to_json if options[:targeting_list]
|
11
|
+
super(path, options)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Adparlor
|
2
|
+
module Facebook
|
3
|
+
module GraphApi
|
4
|
+
class TargetingValidation < GraphObject
|
5
|
+
include Fields::TargetingValidation
|
6
|
+
include Traits::Methods
|
7
|
+
field_attrs FIELDS
|
8
|
+
|
9
|
+
def get(path, options = {})
|
10
|
+
options[:targeting_list] = options[:targeting_list].to_json if options[:targeting_list]
|
11
|
+
super(path, options)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Adparlor
|
2
|
+
module Facebook
|
3
|
+
module GraphApi
|
4
|
+
module Traits
|
5
|
+
module Methods
|
6
|
+
def self.included(base)
|
7
|
+
base.extend(ClassMethods)
|
8
|
+
end
|
9
|
+
|
10
|
+
def create(attributes = {}, options = {})
|
11
|
+
allowed_methods = self.class.allowed_methods
|
12
|
+
raise FbError.new('create not available', 500) unless allowed_methods && allowed_methods.include?(:create)
|
13
|
+
super(attributes, options)
|
14
|
+
end
|
15
|
+
|
16
|
+
def destroy(path, options = {})
|
17
|
+
allowed_methods = self.class.allowed_methods
|
18
|
+
raise FbError.new('destroy not available', 500) unless allowed_methods && allowed_methods.include?(:destroy)
|
19
|
+
super(path, options)
|
20
|
+
end
|
21
|
+
|
22
|
+
def update(attributes = {}, options = {})
|
23
|
+
allowed_methods = self.class.allowed_methods
|
24
|
+
raise FbError.new('update not available', 500) unless allowed_methods && allowed_methods.include?(:update)
|
25
|
+
super(attributes, options)
|
26
|
+
end
|
27
|
+
|
28
|
+
module ClassMethods
|
29
|
+
def allow_local_method(*args)
|
30
|
+
@allowed_local_methods = args
|
31
|
+
end
|
32
|
+
|
33
|
+
def allow_method(*args)
|
34
|
+
@allowed_methods = args
|
35
|
+
end
|
36
|
+
|
37
|
+
def allowed_local_methods
|
38
|
+
@allowed_local_methods
|
39
|
+
end
|
40
|
+
|
41
|
+
def allowed_methods
|
42
|
+
@allowed_methods
|
43
|
+
end
|
44
|
+
|
45
|
+
def create(path, options = {})
|
46
|
+
raise FbError.new('create not available', 500) unless @allowed_local_methods && @allowed_local_methods.include?(:create)
|
47
|
+
super(path, options)
|
48
|
+
end
|
49
|
+
|
50
|
+
def destroy(path, options = {})
|
51
|
+
raise FbError.new('destroy not available, use soft delete update', 500) unless @allowed_local_methods && @allowed_local_methods.include?(:destroy)
|
52
|
+
super(path, options)
|
53
|
+
end
|
54
|
+
|
55
|
+
def update(path, options = {})
|
56
|
+
raise FbError.new('update not available', 500) unless @allowed_local_methods && @allowed_local_methods.include?(:update)
|
57
|
+
super(path, options)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'adparlor/facebook/graph_api/fields/field_decorator'
|
2
|
+
require 'adparlor/facebook/graph_api/traits/methods'
|
3
|
+
require 'adparlor/facebook/graph_api/graph_object'
|
4
|
+
require 'adparlor/facebook/graph_api/batch_object'
|
5
|
+
|
6
|
+
Dir[File.dirname(__FILE__) + '/graph_api/ad_targeting_types/*.rb'].each { |file| require file }
|
7
|
+
Dir[File.dirname(__FILE__) + '/graph_api/ad_targeting_types/ad_geolocations/*.rb'].each { |file| require file }
|
8
|
+
Dir[File.dirname(__FILE__) + '/graph_api/fields/*.rb'].each { |file| require file }
|
9
|
+
Dir[File.dirname(__FILE__) + '/graph_api/*.rb'].each { |file| require file }
|
data/solano.yml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
ruby_version: ruby-2.3.2
|
2
|
+
bundler_version: '1.16.2'
|
3
|
+
mysql:
|
4
|
+
version: false
|
5
|
+
worker_limit: 3
|
6
|
+
test_pattern:
|
7
|
+
- spec/**_spec.rb
|
8
|
+
profiles:
|
9
|
+
solano_nightly_master:
|
10
|
+
environment:
|
11
|
+
VCR_RECORD: 'all'
|
12
|
+
coverage:
|
13
|
+
version: 2
|
14
|
+
enabled: true
|
15
|
+
ratchet: 95
|