facebookads 0.2.11.0 → 0.999

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. checksums.yaml +5 -5
  2. metadata +13 -370
  3. data/LICENSE.txt +0 -17
  4. data/README.md +0 -222
  5. data/lib/facebook_ads/ad_object.rb +0 -179
  6. data/lib/facebook_ads/ad_objects/ad.rb +0 -220
  7. data/lib/facebook_ads/ad_objects/ad_account.rb +0 -672
  8. data/lib/facebook_ads/ad_objects/ad_account_ad_rules_history.rb +0 -45
  9. data/lib/facebook_ads/ad_objects/ad_account_delivery_estimate.rb +0 -64
  10. data/lib/facebook_ads/ad_objects/ad_account_roas.rb +0 -97
  11. data/lib/facebook_ads/ad_objects/ad_account_targeting_unified.rb +0 -146
  12. data/lib/facebook_ads/ad_objects/ad_account_user.rb +0 -39
  13. data/lib/facebook_ads/ad_objects/ad_activity.rb +0 -124
  14. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec.rb +0 -90
  15. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec_asset_label.rb +0 -37
  16. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec_body.rb +0 -39
  17. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec_caption.rb +0 -39
  18. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec_description.rb +0 -39
  19. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec_group_rule.rb +0 -43
  20. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec_image.rb +0 -41
  21. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec_link_url.rb +0 -41
  22. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec_target_rule.rb +0 -45
  23. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec_title.rb +0 -39
  24. data/lib/facebook_ads/ad_objects/ad_asset_feed_spec_video.rb +0 -41
  25. data/lib/facebook_ads/ad_objects/ad_async_request.rb +0 -67
  26. data/lib/facebook_ads/ad_objects/ad_async_request_set.rb +0 -68
  27. data/lib/facebook_ads/ad_objects/ad_async_request_set_notification_result.rb +0 -38
  28. data/lib/facebook_ads/ad_objects/ad_campaign_delivery_estimate.rb +0 -64
  29. data/lib/facebook_ads/ad_objects/ad_creative.rb +0 -172
  30. data/lib/facebook_ads/ad_objects/ad_creative_collection_thumbnail_info.rb +0 -39
  31. data/lib/facebook_ads/ad_objects/ad_creative_link_data.rb +0 -75
  32. data/lib/facebook_ads/ad_objects/ad_creative_link_data_app_link_spec.rb +0 -40
  33. data/lib/facebook_ads/ad_objects/ad_creative_link_data_call_to_action.rb +0 -80
  34. data/lib/facebook_ads/ad_objects/ad_creative_link_data_call_to_action_value.rb +0 -46
  35. data/lib/facebook_ads/ad_objects/ad_creative_link_data_child_attachment.rb +0 -47
  36. data/lib/facebook_ads/ad_objects/ad_creative_link_data_image_overlay_spec.rb +0 -94
  37. data/lib/facebook_ads/ad_objects/ad_creative_object_story_spec.rb +0 -43
  38. data/lib/facebook_ads/ad_objects/ad_creative_offer_data.rb +0 -44
  39. data/lib/facebook_ads/ad_objects/ad_creative_photo_data.rb +0 -43
  40. data/lib/facebook_ads/ad_objects/ad_creative_place_data.rb +0 -42
  41. data/lib/facebook_ads/ad_objects/ad_creative_post_click_configuration.rb +0 -38
  42. data/lib/facebook_ads/ad_objects/ad_creative_text_data.rb +0 -37
  43. data/lib/facebook_ads/ad_objects/ad_creative_video_data.rb +0 -53
  44. data/lib/facebook_ads/ad_objects/ad_image.rb +0 -58
  45. data/lib/facebook_ads/ad_objects/ad_keyword_stats.rb +0 -55
  46. data/lib/facebook_ads/ad_objects/ad_label.rb +0 -57
  47. data/lib/facebook_ads/ad_objects/ad_place_page_set.rb +0 -44
  48. data/lib/facebook_ads/ad_objects/ad_preview.rb +0 -56
  49. data/lib/facebook_ads/ad_objects/ad_promoted_object.rb +0 -64
  50. data/lib/facebook_ads/ad_objects/ad_recommendation.rb +0 -55
  51. data/lib/facebook_ads/ad_objects/ad_recommendation_data.rb +0 -37
  52. data/lib/facebook_ads/ad_objects/ad_report_run.rb +0 -71
  53. data/lib/facebook_ads/ad_objects/ad_rule.rb +0 -56
  54. data/lib/facebook_ads/ad_objects/ad_rule_evaluation_spec.rb +0 -44
  55. data/lib/facebook_ads/ad_objects/ad_rule_execution_options.rb +0 -44
  56. data/lib/facebook_ads/ad_objects/ad_rule_execution_spec.rb +0 -49
  57. data/lib/facebook_ads/ad_objects/ad_rule_filters.rb +0 -55
  58. data/lib/facebook_ads/ad_objects/ad_rule_history.rb +0 -58
  59. data/lib/facebook_ads/ad_objects/ad_rule_history_result.rb +0 -45
  60. data/lib/facebook_ads/ad_objects/ad_rule_history_result_action.rb +0 -40
  61. data/lib/facebook_ads/ad_objects/ad_rule_schedule.rb +0 -39
  62. data/lib/facebook_ads/ad_objects/ad_rule_schedule_spec.rb +0 -38
  63. data/lib/facebook_ads/ad_objects/ad_rule_trigger.rb +0 -63
  64. data/lib/facebook_ads/ad_objects/ad_set.rb +0 -298
  65. data/lib/facebook_ads/ad_objects/ad_study.rb +0 -70
  66. data/lib/facebook_ads/ad_objects/ad_study_cell.rb +0 -39
  67. data/lib/facebook_ads/ad_objects/ad_study_objective.rb +0 -60
  68. data/lib/facebook_ads/ad_objects/ad_video.rb +0 -25
  69. data/lib/facebook_ads/ad_objects/adgroup_placement_specific_review_feedback.rb +0 -43
  70. data/lib/facebook_ads/ad_objects/adgroup_relevance_score.rb +0 -40
  71. data/lib/facebook_ads/ad_objects/adgroup_review_feedback.rb +0 -38
  72. data/lib/facebook_ads/ad_objects/ads_action_stats.rb +0 -55
  73. data/lib/facebook_ads/ad_objects/ads_data_partner.rb +0 -37
  74. data/lib/facebook_ads/ad_objects/ads_image_crops.rb +0 -43
  75. data/lib/facebook_ads/ad_objects/ads_insights.rb +0 -217
  76. data/lib/facebook_ads/ad_objects/ads_pixel.rb +0 -67
  77. data/lib/facebook_ads/ad_objects/ads_pixel_stats.rb +0 -40
  78. data/lib/facebook_ads/ad_objects/ads_pixel_stats_result.rb +0 -50
  79. data/lib/facebook_ads/ad_objects/agency_client_declaration.rb +0 -48
  80. data/lib/facebook_ads/ad_objects/android_app_link.rb +0 -40
  81. data/lib/facebook_ads/ad_objects/app_links.rb +0 -43
  82. data/lib/facebook_ads/ad_objects/broad_targeting_categories.rb +0 -46
  83. data/lib/facebook_ads/ad_objects/business.rb +0 -195
  84. data/lib/facebook_ads/ad_objects/business_ad_account_request.rb +0 -37
  85. data/lib/facebook_ads/ad_objects/business_page_request.rb +0 -37
  86. data/lib/facebook_ads/ad_objects/campaign.rb +0 -227
  87. data/lib/facebook_ads/ad_objects/check_batch_request_status.rb +0 -40
  88. data/lib/facebook_ads/ad_objects/conversion_action_query.rb +0 -62
  89. data/lib/facebook_ads/ad_objects/custom_audience.rb +0 -173
  90. data/lib/facebook_ads/ad_objects/custom_audience_ad_account.rb +0 -36
  91. data/lib/facebook_ads/ad_objects/custom_audience_data_source.rb +0 -104
  92. data/lib/facebook_ads/ad_objects/custom_audience_permission.rb +0 -41
  93. data/lib/facebook_ads/ad_objects/custom_audience_prefill_state.rb +0 -39
  94. data/lib/facebook_ads/ad_objects/custom_audience_session.rb +0 -44
  95. data/lib/facebook_ads/ad_objects/custom_audience_status.rb +0 -38
  96. data/lib/facebook_ads/ad_objects/custom_audiences_tos.rb +0 -38
  97. data/lib/facebook_ads/ad_objects/custom_conversion.rb +0 -88
  98. data/lib/facebook_ads/ad_objects/custom_conversion_stats_result.rb +0 -50
  99. data/lib/facebook_ads/ad_objects/day_part.rb +0 -40
  100. data/lib/facebook_ads/ad_objects/delivery_check.rb +0 -40
  101. data/lib/facebook_ads/ad_objects/delivery_check_extra_info.rb +0 -39
  102. data/lib/facebook_ads/ad_objects/delivery_estimate.rb +0 -41
  103. data/lib/facebook_ads/ad_objects/domain.rb +0 -37
  104. data/lib/facebook_ads/ad_objects/event.rb +0 -80
  105. data/lib/facebook_ads/ad_objects/event_source_group.rb +0 -43
  106. data/lib/facebook_ads/ad_objects/external_event_source.rb +0 -38
  107. data/lib/facebook_ads/ad_objects/flexible_targeting.rb +0 -64
  108. data/lib/facebook_ads/ad_objects/funding_source_details.rb +0 -39
  109. data/lib/facebook_ads/ad_objects/funding_source_details_coupon.rb +0 -40
  110. data/lib/facebook_ads/ad_objects/helpers/custom_audience_helpers.rb +0 -170
  111. data/lib/facebook_ads/ad_objects/hotel.rb +0 -61
  112. data/lib/facebook_ads/ad_objects/hotel_room.rb +0 -44
  113. data/lib/facebook_ads/ad_objects/id_name.rb +0 -37
  114. data/lib/facebook_ads/ad_objects/ios_app_link.rb +0 -39
  115. data/lib/facebook_ads/ad_objects/lead.rb +0 -47
  116. data/lib/facebook_ads/ad_objects/lead_gen_qualifier.rb +0 -40
  117. data/lib/facebook_ads/ad_objects/lead_gen_question.rb +0 -43
  118. data/lib/facebook_ads/ad_objects/lead_gen_question_option.rb +0 -38
  119. data/lib/facebook_ads/ad_objects/leadgen_form.rb +0 -73
  120. data/lib/facebook_ads/ad_objects/legacy_business_ad_account_request.rb +0 -38
  121. data/lib/facebook_ads/ad_objects/lookalike_spec.rb +0 -43
  122. data/lib/facebook_ads/ad_objects/minimum_budget.rb +0 -41
  123. data/lib/facebook_ads/ad_objects/offline_conversion_data_set.rb +0 -99
  124. data/lib/facebook_ads/ad_objects/offsite_pixel.rb +0 -57
  125. data/lib/facebook_ads/ad_objects/outcome_prediction_point.rb +0 -40
  126. data/lib/facebook_ads/ad_objects/partner_category.rb +0 -51
  127. data/lib/facebook_ads/ad_objects/product_catalog.rb +0 -287
  128. data/lib/facebook_ads/ad_objects/product_catalog_hotel_rooms_batch.rb +0 -50
  129. data/lib/facebook_ads/ad_objects/product_catalog_image_settings.rb +0 -38
  130. data/lib/facebook_ads/ad_objects/product_catalog_image_settings_operation.rb +0 -37
  131. data/lib/facebook_ads/ad_objects/product_catalog_pricing_variables_batch.rb +0 -50
  132. data/lib/facebook_ads/ad_objects/product_feed.rb +0 -91
  133. data/lib/facebook_ads/ad_objects/product_feed_schedule.rb +0 -62
  134. data/lib/facebook_ads/ad_objects/product_feed_upload.rb +0 -50
  135. data/lib/facebook_ads/ad_objects/product_feed_upload_error.rb +0 -49
  136. data/lib/facebook_ads/ad_objects/product_feed_upload_error_sample.rb +0 -37
  137. data/lib/facebook_ads/ad_objects/product_group.rb +0 -94
  138. data/lib/facebook_ads/ad_objects/product_item.rb +0 -148
  139. data/lib/facebook_ads/ad_objects/product_item_commerce_insights.rb +0 -39
  140. data/lib/facebook_ads/ad_objects/product_set.rb +0 -45
  141. data/lib/facebook_ads/ad_objects/product_variant.rb +0 -39
  142. data/lib/facebook_ads/ad_objects/profile_picture_source.rb +0 -52
  143. data/lib/facebook_ads/ad_objects/rate_card.rb +0 -39
  144. data/lib/facebook_ads/ad_objects/reach_estimate.rb +0 -62
  145. data/lib/facebook_ads/ad_objects/reach_frequency_prediction.rb +0 -89
  146. data/lib/facebook_ads/ad_objects/reach_frequency_spec.rb +0 -43
  147. data/lib/facebook_ads/ad_objects/rev_share_policy.rb +0 -38
  148. data/lib/facebook_ads/ad_objects/roas_cohorts_data.rb +0 -41
  149. data/lib/facebook_ads/ad_objects/roas_cohorts_per_cohort_interval_unit.rb +0 -38
  150. data/lib/facebook_ads/ad_objects/targeting.rb +0 -133
  151. data/lib/facebook_ads/ad_objects/targeting_dynamic_rule.rb +0 -44
  152. data/lib/facebook_ads/ad_objects/targeting_geo_location.rb +0 -47
  153. data/lib/facebook_ads/ad_objects/targeting_geo_location_city.rb +0 -43
  154. data/lib/facebook_ads/ad_objects/targeting_geo_location_custom_location.rb +0 -50
  155. data/lib/facebook_ads/ad_objects/targeting_geo_location_electoral_district.rb +0 -40
  156. data/lib/facebook_ads/ad_objects/targeting_geo_location_market.rb +0 -40
  157. data/lib/facebook_ads/ad_objects/targeting_geo_location_place.rb +0 -45
  158. data/lib/facebook_ads/ad_objects/targeting_geo_location_political_district.rb +0 -40
  159. data/lib/facebook_ads/ad_objects/targeting_geo_location_region.rb +0 -39
  160. data/lib/facebook_ads/ad_objects/targeting_geo_location_zip.rb +0 -41
  161. data/lib/facebook_ads/ad_objects/targeting_product_audience_spec.rb +0 -39
  162. data/lib/facebook_ads/ad_objects/targeting_product_audience_sub_spec.rb +0 -38
  163. data/lib/facebook_ads/ad_objects/targeting_sentence_line.rb +0 -38
  164. data/lib/facebook_ads/ad_objects/transaction.rb +0 -57
  165. data/lib/facebook_ads/ad_objects/transaction_currency_amount.rb +0 -39
  166. data/lib/facebook_ads/ad_objects/user.rb +0 -130
  167. data/lib/facebook_ads/ad_objects/user_lead_gen_disclaimer_response.rb +0 -38
  168. data/lib/facebook_ads/ad_objects/user_lead_gen_field_data.rb +0 -38
  169. data/lib/facebook_ads/ad_objects/video_thumbnail.rb +0 -42
  170. data/lib/facebook_ads/ad_objects/web_app_link.rb +0 -38
  171. data/lib/facebook_ads/ad_objects/windows_app_link.rb +0 -40
  172. data/lib/facebook_ads/ad_objects/windows_phone_app_link.rb +0 -39
  173. data/lib/facebook_ads/api_request.rb +0 -123
  174. data/lib/facebook_ads/api_response.rb +0 -47
  175. data/lib/facebook_ads/batch_api/batch.rb +0 -86
  176. data/lib/facebook_ads/batch_api/batch_proxy.rb +0 -67
  177. data/lib/facebook_ads/config.rb +0 -43
  178. data/lib/facebook_ads/edge.rb +0 -184
  179. data/lib/facebook_ads/errors.rb +0 -55
  180. data/lib/facebook_ads/field_types/ad_object.rb +0 -37
  181. data/lib/facebook_ads/field_types/base.rb +0 -33
  182. data/lib/facebook_ads/field_types/boolean.rb +0 -25
  183. data/lib/facebook_ads/field_types/datetime.rb +0 -51
  184. data/lib/facebook_ads/field_types/double.rb +0 -29
  185. data/lib/facebook_ads/field_types/enum.rb +0 -31
  186. data/lib/facebook_ads/field_types/integer.rb +0 -33
  187. data/lib/facebook_ads/field_types/list.rb +0 -57
  188. data/lib/facebook_ads/field_types/object.rb +0 -33
  189. data/lib/facebook_ads/field_types/string_type.rb +0 -34
  190. data/lib/facebook_ads/field_types/upload_file.rb +0 -121
  191. data/lib/facebook_ads/field_types.rb +0 -65
  192. data/lib/facebook_ads/fields.rb +0 -66
  193. data/lib/facebook_ads/helpers/edge_helpers.rb +0 -57
  194. data/lib/facebook_ads/helpers/node_helpers.rb +0 -80
  195. data/lib/facebook_ads/helpers/shortcuts.rb +0 -34
  196. data/lib/facebook_ads/param_set.rb +0 -74
  197. data/lib/facebook_ads/ruby2patch.rb +0 -27
  198. data/lib/facebook_ads/session.rb +0 -98
  199. data/lib/facebook_ads/utils/utils.rb +0 -29
  200. data/lib/facebook_ads/version.rb +0 -24
  201. data/lib/facebook_ads/videos/video_io.rb +0 -25
  202. data/lib/facebook_ads/videos/video_request.rb +0 -42
  203. data/lib/facebook_ads.rb +0 -72
  204. data/lib/facebookads.rb +0 -1
@@ -1,184 +0,0 @@
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
20
- module EdgeHasGet
21
- include Enumerable
22
-
23
- extend Forwardable
24
- def_delegators :@collection, :length, :count
25
-
26
- DEFAULT_PAGE_SIZE = 10
27
- attr_accessor :has_next_page, :next_page_cursor
28
-
29
- def [](idx)
30
- # TODO Handle delegate
31
- fetch_next_page until idx < collection.length || !has_next_page?
32
- collection[idx]
33
- end
34
-
35
- def all
36
- fetch_next_page until !has_next_page?
37
- collection
38
- end
39
-
40
- def each
41
- return enum_for(:each) unless block_given?
42
-
43
- idx = 0
44
-
45
- while (e = self[idx])
46
- yield e
47
- idx += 1
48
- end
49
-
50
- self
51
- end
52
-
53
- def reload!
54
- @collection = Array.new
55
- self.has_next_page = true
56
- end
57
-
58
- private
59
- def fetch_next_page
60
- fetch_options = {limit: DEFAULT_PAGE_SIZE}.merge(serialized_options)
61
- fetch_options = fetch_options.merge({after: next_page_cursor}) if next_page_cursor
62
-
63
- node.get_edge(name, fetch_options) do |response|
64
- response["data"].each do |data|
65
- field_type = self.class.return_types[:get]
66
-
67
- obj = field_type.deserialize(data, node.session)
68
- collection << obj
69
- end
70
-
71
- self.next_page_cursor = response.dig('paging', 'cursors', 'after')
72
- self.has_next_page = !(response['data'].length < fetch_options[:limit])
73
- end
74
- end
75
-
76
- def collection
77
- @collection ||= Array.new
78
- end
79
-
80
- def has_next_page?
81
- self.has_next_page.nil? ? (self.has_next_page = true) : self.has_next_page
82
- end
83
-
84
- def loaded?
85
- @loaded
86
- end
87
- end
88
-
89
- module EdgeHasPost
90
- def create(params)
91
- if self.class.param_set_for_post
92
- params = self.class.param_set_for_post.to_params(params)
93
- end
94
-
95
- node.post_edge(name, graph_params.merge(params)) do |response|
96
- # TODO params check
97
- # TODO Add new object to collection?
98
-
99
- field_type = self.class.return_types[:post]
100
-
101
- obj = field_type.deserialize(response, node.session)
102
- yield obj if block_given?
103
- obj
104
- end
105
- end
106
- end
107
-
108
- module EdgeHasDelete
109
- def destroy(params)
110
- params = @param_set_for_delete.to_params(params) if @param_set_for_delete
111
-
112
- node.delete_edge(name, params) do |response|
113
- yield response if block_given?
114
- response
115
- end
116
- end
117
- end
118
-
119
- class Edge
120
- attr_reader :name, :node, :options, :should_delegate
121
-
122
- def initialize(name, node, should_delegate, options)
123
- @name = name
124
- @node = node
125
- @options = options || {}
126
- @should_delegate = should_delegate
127
- end
128
-
129
- def serialized_options
130
- Hash[options.map { |k,v|
131
- v = (k == :fields && v.is_a?(Array)) ?
132
- v.join(',') : v
133
- [k,v]
134
- }]
135
- end
136
-
137
- # TODO refactor
138
- # sending this along with params to leverage read-after-write
139
- def graph_params
140
- {fields: options[:fields]}.compact
141
- end
142
-
143
- class << self
144
- attr_reader :param_set_for_get, :param_set_for_post, :param_set_for_delete
145
-
146
- def get(return_type = 'AdObject')
147
- include EdgeHasGet
148
-
149
- yield (@param_set_for_get = ParamSet.new) if block_given?
150
-
151
- return_types(:get, return_type)
152
- end
153
-
154
- def post(return_type = 'AdObject')
155
- include EdgeHasPost
156
-
157
- yield (@param_set_for_post = ParamSet.new) if block_given?
158
-
159
- return_types(:post, return_type)
160
- end
161
-
162
- def delete(return_type = 'AdObject')
163
- include EdgeHasDelete
164
-
165
- yield (@param_set_for_delete = ParamSet.new) if block_given?
166
-
167
- return_types(:delete, return_type)
168
- end
169
-
170
- # TODO refactor?
171
- def return_types(action = nil, return_type = nil)
172
- if action
173
- if return_type
174
- @return_types ||= {}
175
- @return_types[action] = FieldTypes.for(return_type)
176
- end
177
- @return_types[action]
178
- else
179
- @return_types
180
- end
181
- end
182
- end
183
- end
184
- end
@@ -1,55 +0,0 @@
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
- require 'irb'
20
-
21
- module FacebookAds
22
- class Error < StandardError; end;
23
- class InvalidParameterError < Error; end;
24
-
25
- class APIError < Error
26
- ERROR_ATTRS = [
27
- :fb_message, :type, :code,
28
- :error_subcode, :is_transient, :error_user_title,
29
- :error_user_msg, :fbtrace_id,
30
- ]
31
-
32
- attr_accessor *ERROR_ATTRS
33
-
34
- def initialize(api_response)
35
- error_obj = api_response.result
36
- @api_response = api_response
37
-
38
- if error_obj.is_a?(Hash)
39
- error_obj = error_obj['error'] if error_obj.has_key?('error')
40
- error_obj.each do |k,v|
41
- k = "fb_#{k}" if k == 'message'
42
- send("#{k}=", v) if ERROR_ATTRS.include?(k.to_sym)
43
- end
44
-
45
- super("#{self.fb_message}: #{self.error_user_title} (fbtrace_id: #{self.fbtrace_id})")
46
- else
47
- super(error_obj)
48
- end
49
- end
50
- end
51
-
52
- class ServerError < APIError; end
53
-
54
- class ClientError < APIError; end
55
- end
@@ -1,37 +0,0 @@
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
20
- module FieldTypes
21
- class AdObject < Base
22
- register 'ad_object'
23
-
24
- def initialize(ad_object_class)
25
- @ad_object_class = ad_object_class
26
- end
27
-
28
- def deserialize(value, session = nil)
29
- @ad_object_class.new(value, value.keys, session)
30
- end
31
-
32
- def serialize(value)
33
- value.to_json
34
- end
35
- end
36
- end
37
- end
@@ -1,33 +0,0 @@
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
20
- module FieldTypes
21
- class Base
22
- extend FieldTypes
23
-
24
- def deserialize(value, session = nil)
25
- value
26
- end
27
-
28
- def serialize(value)
29
- value
30
- end
31
- end
32
- end
33
- end
@@ -1,25 +0,0 @@
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
20
- module FieldTypes
21
- class Boolean < Base
22
- register 'bool', 'boolean'
23
- end
24
- end
25
- end
@@ -1,51 +0,0 @@
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
- require 'date'
20
-
21
- module FacebookAds
22
- module FieldTypes
23
- class DateTime < Base
24
- register 'datetime'
25
-
26
- def deserialize(value, session = nil)
27
- case value
28
- when String
29
- begin
30
- ::DateTime.strptime(value, '%FT%T%:z')
31
- rescue ArgumentError
32
- ::DateTime.strptime(value, '%FT%T')
33
- end
34
- else
35
- Time.at(value).to_datetime
36
- end
37
- end
38
-
39
- def serialize(value)
40
- case value
41
- when ::DateTime, Time
42
- value.to_time.to_i
43
- when String
44
- ::DateTime.parse(value).to_time.to_i
45
- else
46
- value
47
- end
48
- end
49
- end
50
- end
51
- end
@@ -1,29 +0,0 @@
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
20
- module FieldTypes
21
- class Double < Base
22
- register 'float', 'double'
23
-
24
- def deserialize(value, session = nil)
25
- value.is_a?(String) ? value[/[0-9.]+/].to_f : value
26
- end
27
- end
28
- end
29
- end
@@ -1,31 +0,0 @@
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
20
- module FieldTypes
21
- class Enum < Base
22
- register :enum, 'enum'
23
-
24
- def initialize(vals)
25
- @values = (vals.is_a?(Proc) ? vals.call : vals )
26
- end
27
-
28
- # TODO Valid Value checking?
29
- end
30
- end
31
- end
@@ -1,33 +0,0 @@
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
20
- module FieldTypes
21
- class Integer < Base
22
- register 'int', 'integer'
23
-
24
- def deserialize(value, session = nil)
25
- value.is_a?(::Integer) ? value : value.to_s[/[0-9]+/].to_i
26
- end
27
-
28
- def serialize(value)
29
- value.to_s
30
- end
31
- end
32
- end
33
- end
@@ -1,57 +0,0 @@
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
20
- module FieldTypes
21
- class List < Base
22
- register :list, 'list'
23
-
24
- def initialize(sub_type)
25
- @sub_type = self.class.for(sub_type)
26
- end
27
-
28
- def deserialize(value, session = nil)
29
- case value
30
- when String
31
- JSON.parse(value).map { |v|
32
- @sub_type.deserialize(v, session)
33
- }
34
- when Array
35
- value.map { |v|
36
- @sub_type.deserialize(v, session)
37
- }
38
- when Hash
39
- # Special handle for images
40
- if value.length == 1 && value.keys.first == 'images'
41
- value = value['images']
42
- end
43
-
44
- value.map { |_,v|
45
- @sub_type.deserialize(v, session)
46
- }
47
- else
48
- [value]
49
- end
50
- end
51
-
52
- def serialize(value)
53
- JSON.generate(value)
54
- end
55
- end
56
- end
57
- end
@@ -1,33 +0,0 @@
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
20
- module FieldTypes
21
- class Object < Base
22
- register 'hash', 'map', 'object'
23
-
24
- def deserialize(value, session = nil)
25
- JSON.parse(value)
26
- end
27
-
28
- def serialize(value)
29
- JSON.generate(value)
30
- end
31
- end
32
- end
33
- end
@@ -1,34 +0,0 @@
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
20
- module FieldTypes
21
- # StringType instead of String to avoid name clash with the String class
22
- class StringType < Base
23
- register 'string'
24
-
25
- def deserialize(value, session = nil)
26
- value.is_a?(Array) ? (value * ',') : value.to_s
27
- end
28
-
29
- def serialize(value)
30
- value.to_s
31
- end
32
- end
33
- end
34
- end