Module: FacebookAds
- Defined in:
- lib/facebook_ads.rb,
lib/facebook_ads/ad.rb,
lib/facebook_ads/base.rb,
lib/facebook_ads/ad_set.rb,
lib/facebook_ads/account.rb,
lib/facebook_ads/ad_user.rb,
lib/facebook_ads/ad_image.rb,
lib/facebook_ads/ad_account.rb,
lib/facebook_ads/ad_insight.rb,
lib/facebook_ads/ad_product.rb,
lib/facebook_ads/ad_audience.rb,
lib/facebook_ads/ad_campaign.rb,
lib/facebook_ads/ad_creative.rb,
lib/facebook_ads/ad_exception.rb,
lib/facebook_ads/ad_targeting.rb,
lib/facebook_ads/ad_product_set.rb,
lib/facebook_ads/ad_product_feed.rb,
lib/facebook_ads/ad_set_activity.rb,
lib/facebook_ads/ad_product_catalog.rb,
lib/facebook_ads/advertisable_application.rb
Overview
The primary namespace for this gem.
Defined Under Namespace
Classes: Account, Ad, AdAccount, AdAudience, AdCampaign, AdCreative, AdException, AdImage, AdInsight, AdProduct, AdProductCatalog, AdProductFeed, AdProductSet, AdSet, AdSetActivity, AdTargeting, AdUser, AdvertisableApplication, Base
Constant Summary
collapse
{ accept: :json, accept_encoding: :identity }.freeze
- RETRYABLE_ERRORS =
[RestClient::ExceptionWithResponse, Errno::ECONNRESET, Errno::ECONNREFUSED].freeze
- RETRY_LIMIT =
10
- RECOVERABLE_CODES =
[1, 2, 2601].freeze
Class Method Summary
collapse
Class Method Details
.access_token ⇒ Object
71
72
73
|
# File 'lib/facebook_ads.rb', line 71
def self.access_token
@access_token
end
|
.access_token=(access_token) ⇒ Object
67
68
69
|
# File 'lib/facebook_ads.rb', line 67
def self.access_token=(access_token)
@access_token = access_token
end
|
.api_version ⇒ Object
63
64
65
|
# File 'lib/facebook_ads.rb', line 63
def self.api_version
@api_version ||= '7.0'
end
|
.api_version=(api_version) ⇒ Object
58
59
60
61
|
# File 'lib/facebook_ads.rb', line 58
def self.api_version=(api_version)
@api_version = api_version
@base_uri = nil
end
|
.app_secret ⇒ Object
79
80
81
|
# File 'lib/facebook_ads.rb', line 79
def self.app_secret
@app_secret
end
|
.app_secret=(app_secret) ⇒ Object
75
76
77
|
# File 'lib/facebook_ads.rb', line 75
def self.app_secret=(app_secret)
@app_secret = app_secret
end
|
.appsecret_proof ⇒ Object
83
84
85
|
# File 'lib/facebook_ads.rb', line 83
def self.appsecret_proof
OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @app_secret, @access_token)
end
|
.base_uri ⇒ Object
54
55
56
|
# File 'lib/facebook_ads.rb', line 54
def self.base_uri
@base_uri ||= "https://graph.facebook.com/v#{api_version}"
end
|
.base_uri=(base_uri) ⇒ Object
50
51
52
|
# File 'lib/facebook_ads.rb', line 50
def self.base_uri=(base_uri)
@base_uri = base_uri
end
|
.business_id ⇒ Object
91
92
93
|
# File 'lib/facebook_ads.rb', line 91
def self.business_id
@business_id
end
|
.business_id=(business_id) ⇒ Object
87
88
89
|
# File 'lib/facebook_ads.rb', line 87
def self.business_id=(business_id)
@business_id = business_id
end
|
.logger ⇒ Object
41
42
43
44
45
46
47
48
|
# File 'lib/facebook_ads.rb', line 41
def self.logger
unless defined?(@logger)
@logger = Logger.new('/dev/null')
@logger.level = Logger::Severity::UNKNOWN
end
@logger
end
|
.logger=(logger) ⇒ Object
37
38
39
|
# File 'lib/facebook_ads.rb', line 37
def self.logger=(logger)
@logger = logger
end
|
.stubbornly(retry_limit: RETRY_LIMIT, recoverable_codes: RECOVERABLE_CODES, debug: false) ⇒ Object
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
# File 'lib/facebook_ads.rb', line 97
def self.stubbornly(retry_limit: RETRY_LIMIT, recoverable_codes: RECOVERABLE_CODES, debug: false)
raise ArgumentError unless block_given?
response = nil
retry_count = 0
loop do
response = yield
break
rescue *RETRYABLE_ERRORS => e
if e.is_a?(RestClient::ExceptionWithResponse)
error = begin
JSON.parse(e.response)
rescue JSON::ParserError
nil
end
code = error&.[]('code')
raise e if code && !recoverable_codes.include?(code)
end
raise e if retry_count >= retry_limit
retry_count += 1
wait = (retry_count**2) + 15 + (rand(15) * (retry_count + 1))
puts "retry ##{retry_count} will start in #{wait}s" if debug
sleep wait
end
response
end
|
.stubbornly_get(url, retry_limit: RETRY_LIMIT, recoverable_codes: RECOVERABLE_CODES, debug: false) ⇒ Object
129
130
131
132
133
|
# File 'lib/facebook_ads.rb', line 129
def self.stubbornly_get(url, retry_limit: RETRY_LIMIT, recoverable_codes: RECOVERABLE_CODES, debug: false)
stubbornly(retry_limit: retry_limit, recoverable_codes: recoverable_codes, debug: debug) do
RestClient.get(url, REQUEST_HEADERS)
end
end
|
.stubbornly_post(url, payload, retry_limit: RETRY_LIMIT, recoverable_codes: RECOVERABLE_CODES, debug: false) ⇒ Object
135
136
137
138
139
|
# File 'lib/facebook_ads.rb', line 135
def self.stubbornly_post(url, payload, retry_limit: RETRY_LIMIT, recoverable_codes: RECOVERABLE_CODES, debug: false)
stubbornly(retry_limit: retry_limit, recoverable_codes: recoverable_codes, debug: debug) do
RestClient.post(url, payload, REQUEST_HEADERS)
end
end
|