facebook_ads 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -0
  3. data/.travis.yml +8 -0
  4. data/Gemfile +16 -0
  5. data/Gemfile.lock +129 -0
  6. data/README.markdown +380 -0
  7. data/bin/console +13 -0
  8. data/facebook_ads.gemspec +26 -0
  9. data/lib/facebook_ads.rb +46 -0
  10. data/lib/facebook_ads/ad.rb +34 -0
  11. data/lib/facebook_ads/ad_account.rb +126 -0
  12. data/lib/facebook_ads/ad_campaign.rb +54 -0
  13. data/lib/facebook_ads/ad_creative.rb +66 -0
  14. data/lib/facebook_ads/ad_image.rb +28 -0
  15. data/lib/facebook_ads/ad_insight.rb +24 -0
  16. data/lib/facebook_ads/ad_set.rb +35 -0
  17. data/lib/facebook_ads/ad_targeting.rb +61 -0
  18. data/lib/facebook_ads/base.rb +151 -0
  19. data/spec/ad_account_spec.rb +78 -0
  20. data/spec/ad_campaign_spec.rb +13 -0
  21. data/spec/ad_creative_spec.rb +14 -0
  22. data/spec/ad_image_spec.rb +11 -0
  23. data/spec/ad_insight_spec.rb +11 -0
  24. data/spec/ad_set_spec.rb +13 -0
  25. data/spec/ad_spec.rb +13 -0
  26. data/spec/ad_targeting_spec.rb +4 -0
  27. data/spec/spec_helper.rb +15 -0
  28. data/spec/support/fixtures.sh +17 -0
  29. data/spec/support/fixtures/6057330925170.json +1 -0
  30. data/spec/support/fixtures/6057810634370.json +1 -0
  31. data/spec/support/fixtures/6057810946970.json +1 -0
  32. data/spec/support/fixtures/6057824295570.json +1 -0
  33. data/spec/support/fixtures/act_861827983860489.json +1 -0
  34. data/spec/support/fixtures/act_861827983860489/adcreatives.json +1 -0
  35. data/spec/support/fixtures/act_861827983860489/adimages.json +1 -0
  36. data/spec/support/fixtures/act_861827983860489/ads.json +1 -0
  37. data/spec/support/fixtures/act_861827983860489/adsets.json +1 -0
  38. data/spec/support/fixtures/act_861827983860489/campaigns.json +1 -0
  39. data/spec/support/fixtures/me/adaccounts.json +1 -0
  40. data/spec/support/rack_facebook.rb +22 -0
  41. metadata +127 -0
@@ -0,0 +1,61 @@
1
+ # https://developers.facebook.com/docs/marketing-api/targeting-specs
2
+ module FacebookAds
3
+ class AdTargeting
4
+
5
+ MEN = 1
6
+ WOMEN = 2
7
+ GENDERS = [MEN, WOMEN]
8
+ ANDROID_OS = 'Android'
9
+ APPLE_OS = 'iOS'
10
+ OSES = [ANDROID_OS, APPLE_OS]
11
+ ANDROID_DEVICES = %w(Android_Smartphone Android_Tablet)
12
+ APPLE_DEVICES = %w(iPhone iPad iPod)
13
+ DEVICES = ANDROID_DEVICES + APPLE_DEVICES
14
+ INSTALLED = 'installed'
15
+ NOT_INSTALLED = 'not_installed'
16
+ APP_INSTALL_STATES = [INSTALLED, NOT_INSTALLED]
17
+
18
+ attr_accessor :genders, :age_min, :age_max, :countries, :user_os, :user_device, :app_install_state
19
+
20
+ def initialize
21
+ # self.genders = [WOMEN] # If nil, defaults to all genders.
22
+ # self.age_min = 18 # If nil, defaults to 18.
23
+ # self.age_max = 65 # If nil, defaults to 65+.
24
+ self.countries = ['US']
25
+ # self.user_os = [ANDROID_OS]
26
+ # self.user_device = ANDROID_DEVICES
27
+ # self.app_install_state = NOT_INSTALLED
28
+ end
29
+
30
+ def validate!
31
+ { gender: genders, countries: countries, user_os: user_os, user_device: user_device }.each_pair do |key, array|
32
+ if array.present? && !array.is_a?(Array)
33
+ raise Exception, "#{self.class.name}: #{key} must be an array"
34
+ end
35
+ end
36
+
37
+ { genders: [genders, GENDERS], user_os: [user_os, OSES], user_device: [user_device, DEVICES] }.each_pair do |key, provided_and_acceptable|
38
+ provided, acceptable = provided_and_acceptable
39
+
40
+ if provided.present? && (invalid = provided.detect { |value| !acceptable.include?(value) }).present?
41
+ raise Exception, "#{self.class.name}: #{bad} is an invalid #{key}"
42
+ end
43
+ end
44
+
45
+ true
46
+ end
47
+
48
+ def to_hash
49
+ {
50
+ genders: genders,
51
+ age_min: age_min,
52
+ age_max: age_max,
53
+ geo_locations: { countries: countries },
54
+ user_os: user_os,
55
+ user_device: user_device,
56
+ app_install_state: app_install_state
57
+ }.compact
58
+ end
59
+
60
+ end
61
+ end
@@ -0,0 +1,151 @@
1
+ module FacebookAds
2
+ class Base < Hashie::Mash
3
+
4
+ class << self
5
+
6
+ def find(id)
7
+ get("/#{id}", objectify: true)
8
+ end
9
+
10
+ def get(path, query: {}, objectify:)
11
+ query = pack(query, objectify) # Adds access token, fields, etc.
12
+ FacebookAds.logger.debug "GET #{FacebookAds.base_uri}#{path}?#{query.to_query}"
13
+ response = HTTParty.get("#{FacebookAds.base_uri}#{path}", query: query).parsed_response
14
+ response = unpack(response, objectify: objectify)
15
+ end
16
+
17
+ def post(path, query: {}, objectify:)
18
+ query = pack(query, objectify)
19
+ FacebookAds.logger.debug "POST #{FacebookAds.base_uri}#{path}?#{query.to_query}"
20
+ response = HTTMultiParty.post("#{FacebookAds.base_uri}#{path}", query: query).parsed_response
21
+ response = unpack(response, objectify: objectify)
22
+ end
23
+
24
+ def delete(path, query: {})
25
+ query = pack(query, false)
26
+ FacebookAds.logger.debug "DELETE #{FacebookAds.base_uri}#{path}?#{query.to_query}"
27
+ response = HTTParty.delete("#{FacebookAds.base_uri}#{path}", query: query).parsed_response
28
+ response = unpack(response, objectify: false)
29
+ end
30
+
31
+ def paginate(path, query: {})
32
+ response = get(path, query: query.merge(fields: self::FIELDS.join(',')), objectify: false)
33
+ data = response['data'].present? ? response['data'] : []
34
+
35
+ while (paging = response['paging']).present? && (url = paging['next']).present?
36
+ FacebookAds.logger.debug "GET #{url}"
37
+ response = HTTParty.get(url).parsed_response # This should be raw since the URL has the host already.
38
+ data += response['data'] if response['data'].present?
39
+ end
40
+
41
+ if data.present?
42
+ data.map { |hash| instantiate(hash) }
43
+ else
44
+ []
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ def instantiate(hash)
51
+ object = new
52
+
53
+ hash.each_pair do |key, value|
54
+ # https://github.com/intridea/hashie/blob/master/lib/hashie/mash.rb#L111
55
+ object.custom_writer(key, value, false)
56
+ end
57
+
58
+ object
59
+ end
60
+
61
+ def pack(hash, objectify)
62
+ hash = hash.merge(access_token: FacebookAds.access_token)
63
+ hash = hash.merge(fields: self::FIELDS.join(',')) if objectify
64
+ hash.compact
65
+ end
66
+
67
+ def unpack(response, objectify:)
68
+ if response.nil? || !response.is_a?(Hash)
69
+ raise Exception, "Invalid response: #{response.inspect}"
70
+ end
71
+
72
+ if response['error'].present?
73
+ # Let's have different Exception subclasses for different error codes.
74
+ raise Exception, "#{response['error']['code']}: #{response['error']['message']} | #{response.inspect}"
75
+ end
76
+
77
+ if objectify
78
+ if response.key?('data') && (data = response['data']).is_a?(Array)
79
+ data.map { |hash| instantiate(hash) }
80
+ else
81
+ instantiate(response)
82
+ end
83
+ else
84
+ response
85
+ end
86
+ end
87
+
88
+ end
89
+
90
+ def update(data)
91
+ if data.present?
92
+ response = self.class.post("/#{id}", query: data, objectify: false)
93
+
94
+ if response.is_a?(Hash) && response.key?('success')
95
+ response['success']
96
+ else
97
+ raise Exception, "Invalid response from update: #{response.inspect}"
98
+ end
99
+ else
100
+ false
101
+ end
102
+ end
103
+
104
+ def save
105
+ if changes.present?
106
+ data = {}
107
+ changes.keys.each { |key| data[key] = self[key] }
108
+
109
+ if update(data)
110
+ self.class.find(id)
111
+ else
112
+ nil
113
+ end
114
+ else
115
+ nil
116
+ end
117
+ end
118
+
119
+ def destroy(path: nil, query: {})
120
+ response = self.class.delete(path || "/#{id}", query: query)
121
+
122
+ if response.key?('success')
123
+ response['success']
124
+ else
125
+ raise Exception, "Invalid response from destroy: #{response.inspect}"
126
+ end
127
+ end
128
+
129
+ protected
130
+
131
+ attr_accessor :changes
132
+
133
+ private
134
+
135
+ def []=(key, value)
136
+ old_value = self[key]
137
+ new_value = super(key, value)
138
+
139
+ self.changes ||= {}
140
+
141
+ if old_value != new_value
142
+ self.changes[key] = [old_value, new_value]
143
+ else
144
+ self.changes.delete(key)
145
+ end
146
+
147
+ new_values
148
+ end
149
+
150
+ end
151
+ end
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+
3
+ describe FacebookAds::AdAccount do
4
+
5
+ describe '.all' do
6
+ it 'Lists all AdAccount instances' do
7
+ accounts = FacebookAds::AdAccount.all
8
+ expect(accounts.length).to eql(7)
9
+ end
10
+ end
11
+
12
+ describe '.find' do
13
+ it 'Finds an AdAccount by id' do
14
+ id = 'act_861827983860489'
15
+ account = FacebookAds::AdAccount.find(id)
16
+ expect(account.id).to eql(id)
17
+ end
18
+ end
19
+
20
+ describe '.find_by' do
21
+ it 'Finds an AdAccount by name' do
22
+ name = 'Android'
23
+ account = FacebookAds::AdAccount.find_by(name: name)
24
+ expect(account.name).to eql(name)
25
+ end
26
+ end
27
+
28
+ describe '.ad_campaigns' do
29
+ it 'Lists AdCampaign instances' do
30
+ ad_campaigns = account.ad_campaigns
31
+ ad_campaign = ad_campaigns.first
32
+ expect(ad_campaign.account_id).to eql(account_id)
33
+ end
34
+ end
35
+
36
+ describe '.ad_images' do
37
+ it 'Lists AdImage instances' do
38
+ ad_images = account.ad_images
39
+ ad_image = ad_images.first
40
+ expect(ad_image.account_id).to eql(account_id)
41
+ end
42
+ end
43
+
44
+ describe '.ad_creatives' do
45
+ it 'Lists AdCreative instances' do
46
+ ad_creatives = account.ad_creatives
47
+ ad_creative = ad_creatives.first
48
+ expect(ad_creative.id).to eql('6057824295570')
49
+ end
50
+ end
51
+
52
+ describe '.ad_sets' do
53
+ it 'Lists AdSet instances' do
54
+ ad_sets = account.ad_sets
55
+ ad_set = ad_sets.first
56
+ expect(ad_set.account_id).to eql(account_id)
57
+ end
58
+ end
59
+
60
+ describe '.ads' do
61
+ it 'Lists Ad instances' do
62
+ ads = account.ads
63
+ ad = ads.first
64
+ expect(ad.account_id).to eql(account_id)
65
+ end
66
+ end
67
+
68
+ private
69
+
70
+ def account
71
+ FacebookAds::AdAccount.find_by(account_id: account_id)
72
+ end
73
+
74
+ def account_id
75
+ '861827983860489'
76
+ end
77
+
78
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe FacebookAds::AdCampaign do
4
+
5
+ describe '.find' do
6
+ it 'Finds an AdCampaign instance' do
7
+ id = '6057330925170'
8
+ campaign = FacebookAds::AdCampaign.find(id)
9
+ expect(campaign.id).to eql(id)
10
+ end
11
+ end
12
+
13
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe FacebookAds::AdCreative do
4
+
5
+ describe '.find' do
6
+ it 'Finds an AdCreative instance' do
7
+ id = '6057824295570'
8
+ creative = FacebookAds::AdCreative.find(id)
9
+ expect(creative.id).to eql(id)
10
+ expect(creative.object_story_spec.class).to eql(Hash)
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe FacebookAds::AdImage do
4
+
5
+ describe '.find' do
6
+ it 'Raises an exception' do
7
+ expect { FacebookAds::AdImage.find('test') }.to raise_error(Exception)
8
+ end
9
+ end
10
+
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe FacebookAds::AdInsight do
4
+
5
+ describe '.find' do
6
+ it 'Raises an exception' do
7
+ expect { FacebookAds::AdInsight.find('test') }.to raise_error(Exception)
8
+ end
9
+ end
10
+
11
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe FacebookAds::AdSet do
4
+
5
+ describe '.find' do
6
+ it 'Finds an AdSet instance' do
7
+ id = '6057810946970'
8
+ ad_set = FacebookAds::AdSet.find(id)
9
+ expect(ad_set.id).to eql(id)
10
+ end
11
+ end
12
+
13
+ end
data/spec/ad_spec.rb ADDED
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe FacebookAds::Ad do
4
+
5
+ describe '.find' do
6
+ it 'Finds an Ad instance' do
7
+ id = '6057810634370'
8
+ ad = FacebookAds::Ad.find(id)
9
+ expect(ad.id).to eql(id)
10
+ end
11
+ end
12
+
13
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe FacebookAds::AdTargeting do
4
+ end
@@ -0,0 +1,15 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ require 'webmock/rspec'
5
+ WebMock.disable_net_connect!(allow_localhost: true)
6
+
7
+ require 'support/rack_facebook'
8
+ RSpec.configure do |config|
9
+ config.before(:each) do
10
+ stub_request(:any, /graph.facebook.com/).to_rack(RackFacebook)
11
+ end
12
+ end
13
+
14
+ require 'facebook_ads'
15
+ FacebookAds.access_token = 'FAKE_ACCESS_TOKEN'
@@ -0,0 +1,17 @@
1
+ #!/bin/bash
2
+
3
+ # Run with TOKEN=`cat test_access_token` bash spec/support/fixtures.sh
4
+
5
+ curl "https://graph.facebook.com/v2.6/me/adaccounts?access_token=$TOKEN&fields=id%2Caccount_id%2Caccount_status%2Cage%2Ccreated_time%2Ccurrency%2Cname%2Clast_used_time" > spec/support/fixtures/me/adaccounts.json
6
+
7
+ curl "https://graph.facebook.com/v2.6/act_861827983860489?access_token=$TOKEN&fields=id%2Caccount_id%2Caccount_status%2Cage%2Ccreated_time%2Ccurrency%2Cname%2Clast_used_time" > spec/support/fixtures/act_861827983860489.json
8
+ curl "https://graph.facebook.com/v2.6/6057330925170?access_token=$TOKEN&fields=id%2Caccount_id%2Cbuying_type%2Ccan_use_spend_cap%2Cconfigured_status%2Ccreated_time%2Ceffective_status%2Cname%2Cobjective%2Cstart_time%2Cstop_time%2Cupdated_time%2Cspend_cap" > spec/support/fixtures/6057330925170.json
9
+ curl "https://graph.facebook.com/v2.6/6057824295570?access_token=$TOKEN&fields=id%2Cname%2Cobject_story_id%2Cobject_story_spec%2Cobject_type%2Cthumbnail_url%2Crun_status" > spec/support/fixtures/6057824295570.json
10
+ curl "https://graph.facebook.com/v2.6/6057810946970?access_token=$TOKEN&fields=id%2Caccount_id%2Ccampaign_id%2Cadlabels%2Cadset_schedule%2Cbid_amount%2Cbid_info%2Cbilling_event%2Cconfigured_status%2Ccreated_time%2Ccreative_sequence%2Ceffective_status%2Cend_time%2Cfrequency_cap%2Cfrequency_cap_reset_period%2Cfrequency_control_specs%2Cis_autobid%2Clifetime_frequency_cap%2Clifetime_imps%2Cname%2Coptimization_goal%2Cpromoted_object%2Crf_prediction_id%2Crtb_flag%2Cstart_time%2Ctargeting%2Cupdated_time%2Cuse_new_app_click%2Cpacing_type%2Cbudget_remaining%2Cdaily_budget%2Clifetime_budget" > spec/support/fixtures/6057810946970.json
11
+ curl "https://graph.facebook.com/v2.6/6057810634370?access_token=$TOKEN&fields=id%2Caccount_id%2Ccampaign_id%2Cadset_id%2Cadlabels%2Cbid_amount%2Cbid_info%2Cbid_type%2Cconfigured_status%2Cconversion_specs%2Ccreated_time%2Ccreative%2Ceffective_status%2Clast_updated_by_app_id%2Cname%2Ctracking_specs%2Cupdated_time%2Cad_review_feedback" > spec/support/fixtures/6057810634370.json
12
+
13
+ curl "https://graph.facebook.com/v2.6/act_861827983860489/campaigns?access_token=$TOKEN&effective_status%5B%5D=ACTIVE&fields=id%2Caccount_id%2Cbuying_type%2Ccan_use_spend_cap%2Cconfigured_status%2Ccreated_time%2Ceffective_status%2Cname%2Cobjective%2Cstart_time%2Cstop_time%2Cupdated_time%2Cspend_cap&limit=10" > spec/support/fixtures/act_861827983860489/campaigns.json
14
+ curl "https://graph.facebook.com/v2.6/act_861827983860489/adimages?access_token=$TOKEN&fields=id%2Chash%2Caccount_id%2Cname%2Cpermalink_url%2Coriginal_width%2Coriginal_height&limit=10" > spec/support/fixtures/act_861827983860489/adimages.json
15
+ curl "https://graph.facebook.com/v2.6/act_861827983860489/adcreatives?access_token=$TOKEN&fields=id%2Cname%2Cobject_story_id%2Cobject_story_spec%2Cobject_type%2Cthumbnail_url%2Crun_status&limit=10" > spec/support/fixtures/act_861827983860489/adcreatives.json
16
+ curl "https://graph.facebook.com/v2.6/act_861827983860489/adsets?access_token=$TOKEN&effective_status%5B%5D=ACTIVE&fields=id%2Caccount_id%2Ccampaign_id%2Cadlabels%2Cadset_schedule%2Cbid_amount%2Cbid_info%2Cbilling_event%2Cconfigured_status%2Ccreated_time%2Ccreative_sequence%2Ceffective_status%2Cend_time%2Cfrequency_cap%2Cfrequency_cap_reset_period%2Cfrequency_control_specs%2Cis_autobid%2Clifetime_frequency_cap%2Clifetime_imps%2Cname%2Coptimization_goal%2Cpromoted_object%2Crf_prediction_id%2Crtb_flag%2Cstart_time%2Ctargeting%2Cupdated_time%2Cuse_new_app_click%2Cpacing_type%2Cbudget_remaining%2Cdaily_budget%2Clifetime_budget&limit=10" > spec/support/fixtures/act_861827983860489/adsets.json
17
+ curl "https://graph.facebook.com/v2.6/act_861827983860489/ads?access_token=$TOKEN&effective_status%5B%5D=ACTIVE&fields=id%2Caccount_id%2Ccampaign_id%2Cadset_id%2Cadlabels%2Cbid_amount%2Cbid_info%2Cbid_type%2Cconfigured_status%2Cconversion_specs%2Ccreated_time%2Ccreative%2Ceffective_status%2Clast_updated_by_app_id%2Cname%2Ctracking_specs%2Cupdated_time%2Cad_review_feedback&limit=10" > spec/support/fixtures/act_861827983860489/ads.json
@@ -0,0 +1 @@
1
+ {"id":"6057330925170","account_id":"861827983860489","buying_type":"AUCTION","can_use_spend_cap":true,"configured_status":"ACTIVE","created_time":"2016-08-30T11:06:36-0700","effective_status":"ACTIVE","name":"2016-08-30|android|ACHIEVEMENT_UNLOCKED|CATEGORY|Beauty","objective":"MOBILE_APP_INSTALLS","start_time":"2016-08-30T11:14:57-0700","updated_time":"2016-08-30T11:06:36-0700"}
@@ -0,0 +1 @@
1
+ {"id":"6057810634370","account_id":"861827983860489","campaign_id":"6056189814370","adset_id":"6057810632770","bid_type":"ABSOLUTE_OCPM","configured_status":"ACTIVE","conversion_specs":[{"action.type":["mobile_app_install_conversion"],"application":["295802707128640"]}],"created_time":"2016-09-06T10:09:04-0700","creative":{"id":"6057824295570"},"effective_status":"ACTIVE","last_updated_by_app_id":"624541620938530","name":"7ee84b9fcb644c8c5695f2ecabfe7534","tracking_specs":[{"action.type":["mobile_app_install"],"application":["295802707128640"]},{"action.type":["app_custom_event"],"application":["295802707128640"]},{"action.type":["app_custom_event"],"application":["295802707128640"]},{"action.type":["post_engagement"],"page":["300664329976860"],"post":["1138229826220302"]}],"updated_time":"2016-09-06T13:22:53-0700"}
@@ -0,0 +1 @@
1
+ {"id":"6057810946970","account_id":"861827983860489","campaign_id":"6056535031970","billing_event":"IMPRESSIONS","configured_status":"ACTIVE","created_time":"2016-09-06T10:13:27-0700","effective_status":"ACTIVE","frequency_cap_reset_period":0,"is_autobid":true,"lifetime_imps":0,"name":"64903d00c5006db8bc4c8ea9ea199baf","optimization_goal":"OFFSITE_CONVERSIONS","promoted_object":{"application_id":"295802707128640","custom_event_type":"PURCHASE","object_store_url":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter"},"rtb_flag":false,"start_time":"2016-09-06T10:13:27-0700","targeting":{"age_max":65,"age_min":18,"app_install_state":"not_installed","excluded_custom_audiences":[{"id":"6068994792257","name":"All-Users-2016-08-30"}],"flexible_spec":[{"interests":[{"id":"6003348604581","name":"Fashion accessories"}]}],"genders":[2],"geo_locations":{"countries":["US"],"location_types":["home","recent"]},"user_device":["Android_Smartphone","Android_Tablet"],"user_os":["Android_ver_4.0_and_above"],"page_types":["mobileexternal","mobilefeed"]},"updated_time":"2016-09-06T10:13:27-0700","use_new_app_click":false,"pacing_type":["standard"],"budget_remaining":"3485","daily_budget":"30000","lifetime_budget":"0"}
@@ -0,0 +1 @@
1
+ {"id":"6057824295570","name":"Ad from a Page post #6,057,824,295,570","object_story_id":"300664329976860_1138229826220302","object_story_spec":{"page_id":"300664329976860","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"f15361294f1a62e56d0586811e2a2b55","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"b1135df6da4fe449ffc1685350ca0f23","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"a1269f4f4b770b283bd4b62d4a1e6fd8","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"88d01a6680881d23c701e9985ff3bb02","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"5ca662bcb95d458f7d5a642467b4f7e1","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBhvAStAnFeL864&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQLLGw-wAWYI2hHK-8UKqhvl98NNt7nPjpRBfe5Aw4dfXPJ5upilSOUptG_i-WToAFxGPWHIkVOslMBxPCDUWevBOeRK8clwcjWLz_yxvy4pTWj9zIB6MQ5fNnKU55wO3ZDSokxUD2ReZdQnkQW4rUWb&cfs=1","run_status":"ACTIVE"}
@@ -0,0 +1 @@
1
+ {"id":"act_861827983860489","account_id":"861827983860489","account_status":1,"age":512.10546296296,"created_time":"2015-04-09T16:54:58-0700","currency":"USD","name":"Android"}
@@ -0,0 +1 @@
1
+ {"data":[{"id":"6057824295570","name":"Ad from a Page post #6,057,824,295,570","object_story_id":"300664329976860_1138229826220302","object_story_spec":{"page_id":"300664329976860","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"f15361294f1a62e56d0586811e2a2b55","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"b1135df6da4fe449ffc1685350ca0f23","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"a1269f4f4b770b283bd4b62d4a1e6fd8","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"88d01a6680881d23c701e9985ff3bb02","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"5ca662bcb95d458f7d5a642467b4f7e1","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBhvAStAnFeL864&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQLLGw-wAWYI2hHK-8UKqhvl98NNt7nPjpRBfe5Aw4dfXPJ5upilSOUptG_i-WToAFxGPWHIkVOslMBxPCDUWevBOeRK8clwcjWLz_yxvy4pTWj9zIB6MQ5fNnKU55wO3ZDSokxUD2ReZdQnkQW4rUWb&cfs=1","run_status":"ACTIVE"},{"id":"6057824290170","name":"Ad from a Page post #6,057,824,290,170","object_story_id":"300664329976860_1138229846220300","object_story_spec":{"page_id":"300664329976860","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"d58ac2d40af2d0f02a5012ebc1bb513c","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"c4cf364832b70e2d02da13d02f7f9fc4","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"892fb13cdb2ddbcbca05ec2ab8af2472","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8853675ff56a5848f22ef8138644eff9","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"117484208ec6e92ffa5c0a0c74c3dc2d","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBaF0MuolbDSAQm&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQLLLrSOxBbTmlgAYy0CetJQo_72Kldma9RcC4x850ZAMBCqtNztB_jc_IVeAY66nf7-3GPg1fHH43ukI4SaEp9SfVQ7HKpQBudRJXprQ4-W5kQDrlWgEc66SROz2beL67mKxSyooqF2cHnJbX6rc0HH&cfs=1","run_status":"ACTIVE"},{"id":"6057824289970","name":"Ad from a Page post #6,057,824,289,970","object_story_id":"300664329976860_1138229842886967","object_story_spec":{"page_id":"300664329976860","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"c97cbd17e4d7590eeda77a4df97ac9ef","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8a2b076819d09cef1ab94b008be791eb","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8213245b78e0f43f09f3799cf301f79d","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"6329cec31f7a9052111a268b1ce6b139","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"05617fdce276de1890519274b61d8c71","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQC2ADsSNB7B2WBT&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQJm-A-hBkOD8vRT5MVqvcc34o6sMLJJx4QC5kMDgB9OHZHlLIoqa-Un21fDubPfBVe3FzK5k1yCU4Ji-YAIAgTuCbBpl-HTZetbSkPmyivpWPyV6gHR38yKprLyztvvQGnln5-iU4W6rPd5RLXYxIfF&cfs=1","run_status":"ACTIVE"},{"id":"6057810944970","name":"bdcd18485ab593ef6d907208a2f85456","object_story_id":"300664329976860_1138090379567580","object_story_spec":{"page_id":"300664329976860","instagram_actor_id":"503391023081924","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"a8cc20b1c81b7b85f504e3f4bd432cac","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"490eaf0874c13e0d5a4057195f0ad7be","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"3f42fd4f3dff0e03785f3c5727e27787","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"9e8763f02bb6864f0f3ea8073053e3fd","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"586d7aff4f62018ec1d1386094c36527","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQA-zbOrVqSeSrqB&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQKcY53JIlVNPWhwFavWNdNi90dnWMxThIkaL9_8m76iSNm4tQ9Ql3favLR6TS2hPYtkNqxAiMTYhiBchZ31OR3h-udMaIwF4nRWUug68o3YykzHYdh1I5MoA-U7W-IyeVtscKhLHpnVLmXMtb6WDkuM&cfs=1","run_status":"ACTIVE"},{"id":"6057810933570","name":"2787515d6c36791163039e1d2c73d6ab","object_story_id":"300664329976860_1138089849567633","object_story_spec":{"page_id":"300664329976860","instagram_actor_id":"503391023081924","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8213245b78e0f43f09f3799cf301f79d","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"6329cec31f7a9052111a268b1ce6b139","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8853675ff56a5848f22ef8138644eff9","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"e9832a29b435bad468809fec4e3fc189","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"53db26ffff1b0002120b64fe7d973448","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQDLwlMZuwUwuOeX&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQKW55sZfDCgmedwhQuvQCz6muUrhgcXixqzPfXe0IrRQaksKF-7xOg-fFVFJOFyjEFoyNjnBovfmC1olj27kQ2FUECAMFHTZyEAobyyydQbBghxKtOUgLJM-7zktnS-5i-Who0IHcFQMJfm7qTSNk6M&cfs=1","run_status":"ACTIVE"},{"id":"6057810924370","name":"64903d00c5006db8bc4c8ea9ea199baf","object_story_id":"300664329976860_1138089649567653","object_story_spec":{"page_id":"300664329976860","instagram_actor_id":"503391023081924","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"f15361294f1a62e56d0586811e2a2b55","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"a1269f4f4b770b283bd4b62d4a1e6fd8","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"88d01a6680881d23c701e9985ff3bb02","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"c97cbd17e4d7590eeda77a4df97ac9ef","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8a2b076819d09cef1ab94b008be791eb","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCs7BsYHQvCfRcg&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQKo84s7JKU0cu3b0TVTJ3curnYcw9T67hPXaOT0zyDbnATgGd7j07RAJyGhTvP-2lNi--mtRg8LivtMpZv7DuLhUXWRf6c-kAhUlCQSfIXB_ivETXW1tufe0ZQvj_23sjWqTUX9ow-6qMcdLX3S8pcE&cfs=1","run_status":"ACTIVE"},{"id":"6057810631970","name":"47f3ad8f25cf4b19e1bc74e73458e2cb","object_story_id":"300664329976860_1138084799568138","object_story_spec":{"page_id":"300664329976860","instagram_actor_id":"503391023081924","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"d58ac2d40af2d0f02a5012ebc1bb513c","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"c4cf364832b70e2d02da13d02f7f9fc4","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"892fb13cdb2ddbcbca05ec2ab8af2472","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8853675ff56a5848f22ef8138644eff9","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"117484208ec6e92ffa5c0a0c74c3dc2d","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQDb1mALYRmOcNcq&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQIB9NvcntfsReQEJdmJAEhJOdFQM1lJ1G3t4DmjVuUfCQhgiM9IEQpZnhkoDvFtwWbXBV-a6Cut3nqbkwPT5uPfCxdwDdBEUh4asgr8pId03wTkE4toTu85Bbnbtn6uUqoHpsq-XnpNczJz5Pgbu4we&cfs=1","run_status":"ACTIVE"},{"id":"6057810608970","name":"df3e41dd4ae57a597aaafeba02797dab","object_story_id":"300664329976860_1138084679568150","object_story_spec":{"page_id":"300664329976860","instagram_actor_id":"503391023081924","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"c97cbd17e4d7590eeda77a4df97ac9ef","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8a2b076819d09cef1ab94b008be791eb","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"8213245b78e0f43f09f3799cf301f79d","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"6329cec31f7a9052111a268b1ce6b139","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"05617fdce276de1890519274b61d8c71","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBWzAyNrPOiSOrX&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQIF1kz0NvpFLCIHv7ahAY3djJ2X7d_E1ItaddzjaM_2fL5RFKKGzicCgLnDovgo37VolquV9gH-BDniTNm9eaC-ZZMxcs6S1_EiYD6m82wQyUmfZCuHCgLR5Cw-yyDM_91-moLMiNBuovwHRNiFBWg3&cfs=1","run_status":"ACTIVE"},{"id":"6057810601970","name":"7ee84b9fcb644c8c5695f2ecabfe7534","object_story_id":"300664329976860_1138084586234826","object_story_spec":{"page_id":"300664329976860","instagram_actor_id":"503391023081924","link_data":{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","message":"Find the perfect ring for any occasion! Use promo code: Bling","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"f15361294f1a62e56d0586811e2a2b55","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"b1135df6da4fe449ffc1685350ca0f23","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"a1269f4f4b770b283bd4b62d4a1e6fd8","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"88d01a6680881d23c701e9985ff3bb02","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"http:\/\/play.google.com\/store\/apps\/details?id=com.tophatter","image_hash":"5ca662bcb95d458f7d5a642467b4f7e1","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQDquUMhGQku4OgA&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQKcKm70kMaO_36VjQRYrPBrajisc-eImvKzmzBfV1BGS9cpVisjUVa9oat1GiqU0i2lkHsR-H5zUTLSB2IQGlHUEc2Q4J5-WYE6Mc2bv0IqT83hpZtnAH6NTZ0MxFZkMr20RfK4pdWud5EIoCeKQlSO&cfs=1","run_status":"ACTIVE"},{"id":"6057412226970","name":"Ad from a Page post #6,057,412,226,970","object_story_id":"300664329976860_1132794240097194","object_story_spec":{"page_id":"300664329976860","link_data":{"link":"https:\/\/itunes.apple.com\/app\/id619460348&ad_hash=3221615c45fbce2b8d32dc3892358ea1","message":"Find hot deals up to 80\u0025 off with Tophatter! Use promo code FB2.","call_to_action":{"type":"INSTALL_MOBILE_APP"},"child_attachments":[{"link":"https:\/\/itunes.apple.com\/app\/id619460348&ad_hash=3221615c45fbce2b8d32dc3892358ea1","image_hash":"e3b8cd2e4c2440551b01943c250b3289","name":"81\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"https:\/\/itunes.apple.com\/app\/id619460348&ad_hash=3221615c45fbce2b8d32dc3892358ea1","image_hash":"a283498fd97cc818f491b56c5b5e43ef","name":"83\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"https:\/\/itunes.apple.com\/app\/id619460348&ad_hash=3221615c45fbce2b8d32dc3892358ea1","image_hash":"20644fa81119550fb466cdd808b6ba26","name":"78\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"https:\/\/itunes.apple.com\/app\/id619460348&ad_hash=3221615c45fbce2b8d32dc3892358ea1","image_hash":"4722fa5b7e43689a21daef1126990094","name":"80\u0025 Off","call_to_action":{"type":"INSTALL_MOBILE_APP"}},{"link":"https:\/\/itunes.apple.com\/app\/id619460348&ad_hash=3221615c45fbce2b8d32dc3892358ea1","image_hash":"46673d7835a58e7f094f869af9b90ee8","name":"Free Shipping!","call_to_action":{"type":"INSTALL_MOBILE_APP"}}],"multi_share_end_card":false,"multi_share_optimized":true}},"object_type":"SHARE","thumbnail_url":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBltCh-Ln7fui9I&w=64&h=64&url=https\u00253A\u00252F\u00252Fwww.facebook.com\u00252Fads\u00252Fimage\u00252F\u00253Fd\u00253DAQIIADWqgVtPt1cQzHoJDMa5a7AtTbfqxiYm1JAcu35jjoKAmy0S0t7izGu4JeLKCsBVzShWM-acC61x1XIU3D_NkkKQXe3XImDOc1j39QPy2NihSxiTPRLSI_nmLrYq6Lj1TwOkMmf4YoDWu6SXNPjj&cfs=1","run_status":"ACTIVE"}]}
@@ -0,0 +1 @@
1
+ {"data":[{"id":"861827983860489:9e8763f02bb6864f0f3ea8073053e3fd","hash":"9e8763f02bb6864f0f3ea8073053e3fd","account_id":"861827983860489","name":"ec745d2671f2c69292c2f1590d7409c6.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQKP_s3oX9-RfkS03CqQIh-C1H9UAPXjLkGhL5dBdpoaTapXfc3UJdVlMF4DihorVkEDToVpkKDXebof3TJVswimw-5TglITWnxVydIz5VPr4ZSaHOBF2rkMCazlVQqVBBDUzUv21U9MsGlhmN9tMtjD","original_width":1128,"original_height":1206},{"id":"861827983860489:586d7aff4f62018ec1d1386094c36527","hash":"586d7aff4f62018ec1d1386094c36527","account_id":"861827983860489","name":"62334cd7ec4b472a87b2cfde90f1b016.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQLShQw4Du_k3wOQ4KXm-5irbUGVELsALMzonxuNaUwsbryxiXG30t1k_wgBZeoRbXvn48LlILt9vHrPeiL-zav4npF9LG7pQzMqPXx024HA1EhylQZ60_0o48L4a062OdKqniNMfm2kG-GG6UFb0mXQ","original_width":600,"original_height":600},{"id":"861827983860489:5473d72075a6fa2f6d1182dba7934478","hash":"5473d72075a6fa2f6d1182dba7934478","account_id":"861827983860489","name":"1246671fdf1defe8ab39107503109266.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQIMvsWvFFQ_1Qph6WmsoT5YdyTPyPgCi4TgAXL1COkX7eUg5Mn9-A7T6LsP3sJRdaA_Lrgw-xObFg7yJ3H-GTmhQbeq6Ppekx8fVMQunaPcyzxML4XJ5hnZ0QlmDcGeDKRcUEYnbGJExfdTtUCZpOsu","original_width":800,"original_height":800},{"id":"861827983860489:490eaf0874c13e0d5a4057195f0ad7be","hash":"490eaf0874c13e0d5a4057195f0ad7be","account_id":"861827983860489","name":"92add20abe85453f545fece1cdf5fe96.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQLLMj8lv4tUbr8GXsTtvGg4xJCFXAh7MMDhekfVdyh47w9UqgouuMPK4sIuZPmz0F1htK-VJpjlKx0io-S7wzv1gXuquqeWllt0YfFT2i2Rr7F93b5vQanmZDIISv0RxF5aviHMLt6A4rimEaTzAPwP","original_width":1000,"original_height":813},{"id":"861827983860489:3f42fd4f3dff0e03785f3c5727e27787","hash":"3f42fd4f3dff0e03785f3c5727e27787","account_id":"861827983860489","name":"cc7909a6ab41acda03b9bfed45874361.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQJNsinCXN0y2kaqQbN9HNgfJF80L44QwQprdcRIl5n_emUr4e90RL6H7gEsoIXJPfvLvZSUWLFgY6faAf4CC7dCp3WQIcMo02z6Y0erOI6nwjHac4gw6EbbCKar0_PuGpLhe12-uw9WeyQODeH9PYFb","original_width":750,"original_height":747},{"id":"861827983860489:e9832a29b435bad468809fec4e3fc189","hash":"e9832a29b435bad468809fec4e3fc189","account_id":"861827983860489","name":"13239ab9735581554bf1b6ab5612ca77.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQKApR8S0G8fNKIrZ1To_NvUyZYTb_F7gtGSCRC94l6ttjmHX4psSTgoNRryx-4xR0gEZABPdOkDvR-tPyeP7ttfpZrVTuazNNzzuEpPUbfNMFFHbG6KLWFDbFumEtOvxKjOtUEFsh8h-k0-XI4Fe80v","original_width":1000,"original_height":889},{"id":"861827983860489:a8cc20b1c81b7b85f504e3f4bd432cac","hash":"a8cc20b1c81b7b85f504e3f4bd432cac","account_id":"861827983860489","name":"2efa2efbe75a4a79415050b8fe35e516.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQKODK8XQhmLY4ALaUx1FPs-79ty439fS0rqsnGXFM15JukDQfPMEu2wP9_RfKNaBjV9wvGEa_Y2NIBFJs9gY1UfBAdsiWborfqFIfzOzYKLQIxk9zic4ECGoSuvgdNKgsYQPh0AFaeE12Pjk0k_v5PG","original_width":1000,"original_height":1000},{"id":"861827983860489:53db26ffff1b0002120b64fe7d973448","hash":"53db26ffff1b0002120b64fe7d973448","account_id":"861827983860489","name":"8fa0097aaf51edcf3e002c75ba4b7353.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQI3tMnjwXRN9CBlNYJbJPfGDqUZiQsGqgK1kLKTK519a_j4bbS7q2PFy2_5zgG2b28rEc8zzJAyWBujcdbgdEuexKN1r-bClzE5e8v1x7Tuna8hkce2JWsKYuBHavTBPoPhVeFg2tPsg1YWqzv-fIhh","original_width":600,"original_height":600},{"id":"861827983860489:9cef5e8a6f66c3e609f256cd9ff0cfc1","hash":"9cef5e8a6f66c3e609f256cd9ff0cfc1","account_id":"861827983860489","name":"6b625771951d142ff78e83f49430c751.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQLOaBuPxlYwsWZpErXhUVkcmjzjojZHzpdgeiQzFgZEUAF5SgB9jzZhrIwAymlHBeLStYdLkfhBzByBXwQIPLfbeAUZym_NyKQ0mAxpAjgwa_iuLxcai2y_NI7zkT3b0qzEV-C-Ut3gyNtj5mAZoDjo","original_width":1200,"original_height":1200},{"id":"861827983860489:d58ac2d40af2d0f02a5012ebc1bb513c","hash":"d58ac2d40af2d0f02a5012ebc1bb513c","account_id":"861827983860489","name":"9198b7efafb5b65bbcebe4f8b7bce3f9.jpg","permalink_url":"https:\/\/www.facebook.com\/ads\/image\/?d=AQI4T2RVzrYsWq21hedBR8dTamz8LDVY4T31frGVpnVN5uTjDqwDbrYmsmimnsRI99OIVaNqo4V_BkMAphLt36Juv1diXR8LrmdAYlur9SfIFCwCvvE7qhXQrTAZpOrFqFp3w6Rwdv73U-cUHCQ8_9Qu","original_width":800,"original_height":800}]}