facebook_ads 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +23 -0
  4. data/.travis.yml +1 -1
  5. data/Gemfile +4 -5
  6. data/Gemfile.lock +34 -82
  7. data/{README.markdown → README.md} +43 -10
  8. data/Rakefile +6 -0
  9. data/bin/console +15 -1
  10. data/facebook_ads.gemspec +11 -13
  11. data/lib/facebook_ads.rb +11 -7
  12. data/lib/facebook_ads/ad.rb +6 -8
  13. data/lib/facebook_ads/ad_account.rb +65 -54
  14. data/lib/facebook_ads/ad_audience.rb +22 -0
  15. data/lib/facebook_ads/ad_campaign.rb +21 -17
  16. data/lib/facebook_ads/ad_creative.rb +7 -9
  17. data/lib/facebook_ads/ad_image.rb +3 -5
  18. data/lib/facebook_ads/ad_insight.rb +4 -5
  19. data/lib/facebook_ads/ad_product.rb +6 -0
  20. data/lib/facebook_ads/ad_product_catalog.rb +60 -0
  21. data/lib/facebook_ads/ad_product_feed.rb +6 -0
  22. data/lib/facebook_ads/ad_product_set.rb +6 -0
  23. data/lib/facebook_ads/ad_set.rb +9 -11
  24. data/lib/facebook_ads/ad_targeting.rb +19 -21
  25. data/lib/facebook_ads/base.rb +107 -62
  26. data/test/ad_account_test.rb +27 -0
  27. data/test/ad_campaign_test.rb +32 -0
  28. data/test/ad_creative_test.rb +7 -0
  29. data/test/ad_image_test.rb +27 -0
  30. data/test/ad_insight_test.rb +7 -0
  31. data/test/ad_product_catalog_test.rb +28 -0
  32. data/test/ad_product_feed_test.rb +7 -0
  33. data/test/ad_product_set_test.rb +7 -0
  34. data/test/ad_product_test.rb +22 -0
  35. data/test/ad_set_test.rb +7 -0
  36. data/test/ad_targeting_test.rb +7 -0
  37. data/test/ad_test.rb +7 -0
  38. data/test/facebook_ads_test.rb +8 -0
  39. data/test/test_helper.rb +64 -0
  40. data/test/vcr_cassettes/AdAccountTest-test_all.yml +70 -0
  41. data/test/vcr_cassettes/AdAccountTest-test_applications.yml +130 -0
  42. data/test/vcr_cassettes/AdAccountTest-test_find_by.yml +71 -0
  43. data/test/vcr_cassettes/AdCampaignTest-test_create.yml +295 -0
  44. data/test/vcr_cassettes/AdCampaignTest-test_list.yml +133 -0
  45. data/test/vcr_cassettes/AdImageTest-test_create.yml +2963 -0
  46. data/test/vcr_cassettes/AdImageTest-test_list.yml +137 -0
  47. data/test/vcr_cassettes/AdProductCatalogTest-test_all.yml +60 -0
  48. data/test/vcr_cassettes/AdProductCatalogTest-test_create.yml +256 -0
  49. data/test/vcr_cassettes/AdProductTest-test_list.yml +130 -0
  50. metadata +44 -49
  51. data/spec/ad_account_spec.rb +0 -78
  52. data/spec/ad_campaign_spec.rb +0 -13
  53. data/spec/ad_creative_spec.rb +0 -14
  54. data/spec/ad_image_spec.rb +0 -11
  55. data/spec/ad_insight_spec.rb +0 -11
  56. data/spec/ad_set_spec.rb +0 -13
  57. data/spec/ad_spec.rb +0 -13
  58. data/spec/ad_targeting_spec.rb +0 -4
  59. data/spec/spec_helper.rb +0 -15
  60. data/spec/support/fixtures.sh +0 -17
  61. data/spec/support/fixtures/6057330925170.json +0 -1
  62. data/spec/support/fixtures/6057810634370.json +0 -1
  63. data/spec/support/fixtures/6057810946970.json +0 -1
  64. data/spec/support/fixtures/6057824295570.json +0 -1
  65. data/spec/support/fixtures/act_861827983860489.json +0 -1
  66. data/spec/support/fixtures/act_861827983860489/adcreatives.json +0 -1
  67. data/spec/support/fixtures/act_861827983860489/adimages.json +0 -1
  68. data/spec/support/fixtures/act_861827983860489/ads.json +0 -1
  69. data/spec/support/fixtures/act_861827983860489/adsets.json +0 -1
  70. data/spec/support/fixtures/act_861827983860489/campaigns.json +0 -1
  71. data/spec/support/fixtures/me/adaccounts.json +0 -1
  72. data/spec/support/rack_facebook.rb +0 -22
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/ad_account_test.rb
4
+ class AdAccountTest < BaseTest
5
+ def test_all
6
+ vcr do
7
+ accounts = FacebookAds::AdAccount.all
8
+ assert_equal 10, accounts.length
9
+ end
10
+ end
11
+
12
+ def test_find_by
13
+ vcr do
14
+ account = FacebookAds::AdAccount.find_by(name: 'ReFuel4')
15
+ assert_equal 'ReFuel4', account.name
16
+ end
17
+ end
18
+
19
+ def test_applications
20
+ vcr do
21
+ account = FacebookAds::AdAccount.find_by(name: 'ReFuel4')
22
+ apps = account.applications
23
+ assert !apps['data'].find { |app| app['name'] == 'Tophatter' }.nil?
24
+ assert !apps['data'].find { |app| app['name'] == 'Ruby - Jewelry Shopping Deals' }.nil?
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/ad_campaign_test.rb
4
+ class AdCampaignTest < BaseTest
5
+ def test_list
6
+ vcr do
7
+ account = FacebookAds::AdAccount.find_by(name: 'Ruby')
8
+ ad_campaigns = account.ad_campaigns
9
+ ad_campaign = ad_campaigns.first
10
+ assert_equal '23842540417890562', ad_campaign.id
11
+ assert_equal '1115226431853975', ad_campaign.account_id
12
+ assert_equal 'AUCTION', ad_campaign.buying_type
13
+ assert_equal true, ad_campaign.can_use_spend_cap
14
+ assert_equal 'ACTIVE', ad_campaign.configured_status
15
+ assert_equal 'ACTIVE', ad_campaign.effective_status
16
+ assert_equal 'iOS App installs', ad_campaign.name
17
+ assert_equal 'MOBILE_APP_INSTALLS', ad_campaign.objective
18
+ end
19
+ end
20
+
21
+ def test_create
22
+ vcr do
23
+ account = FacebookAds::AdAccount.find_by(name: 'ReFuel4')
24
+ ad_campaign = account.create_ad_campaign(name: 'Test', objective: 'MOBILE_APP_INSTALLS')
25
+ assert_equal 'Test', ad_campaign.name
26
+ assert_equal 'MOBILE_APP_INSTALLS', ad_campaign.objective
27
+ assert_equal true, ad_campaign.destroy
28
+ ad_campaign = FacebookAds::AdCampaign.find(ad_campaign.id)
29
+ assert_equal 'DELETED', ad_campaign.effective_status
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/ad_creative_test.rb
4
+ class AdCreativeTest < BaseTest
5
+ def test_foo
6
+ end
7
+ end
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/ad_image_test.rb
4
+ class AdImageTest < BaseTest
5
+ def test_list
6
+ vcr do
7
+ account = FacebookAds::AdAccount.find_by(name: 'ReFuel4')
8
+ ad_images = account.ad_images(hashes: %w(a9e27630331b8ca2ebac1bb8619c98eb 037b8f4f2383f45f35b110cf72c46f0b))
9
+ assert_equal 2, ad_images.length
10
+ end
11
+ end
12
+
13
+ def test_create
14
+ vcr do
15
+ account = FacebookAds::AdAccount.find_by(name: 'ReFuel4')
16
+ ad_images = account.create_ad_images(['https://img0.etsystatic.com/108/1/13006112/il_570xN.1047856494_l2gp.jpg'])
17
+ ad_image = ad_images.first
18
+ assert_equal '1132789356764349:287ecd37223004c301f5df4e4d02bbe2', ad_image.id
19
+ assert_equal '287ecd37223004c301f5df4e4d02bbe2', ad_image.hash
20
+ assert_equal '1132789356764349', ad_image.account_id
21
+ assert_equal '13006112.jpg', ad_image.name
22
+ assert ad_image.permalink_url.include?('https://www.facebook.com/ads/image/?d=')
23
+ assert_equal 570, ad_image.original_width
24
+ assert_equal 707, ad_image.original_height
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/ad_account_test.rb
4
+ class AdInsightTest < BaseTest
5
+ def test_foo
6
+ end
7
+ end
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/ad_product_catalog_test.rb
4
+ class AdProductCatalogTest < BaseTest
5
+ def test_all
6
+ vcr do
7
+ catalog = FacebookAds::AdProductCatalog.all.first
8
+ assert_equal '197871307315718', catalog.id
9
+ assert_equal 'Test', catalog.name
10
+ assert_equal 'commerce', catalog.vertical
11
+ assert_equal 1, catalog.product_count
12
+ assert_equal 1, catalog.feed_count
13
+ end
14
+ end
15
+
16
+ def test_create
17
+ vcr do
18
+ catalog = FacebookAds::AdProductCatalog.create(name: 'Foo Bar')
19
+ assert_equal 'Foo Bar', catalog.name
20
+ assert_equal 'commerce', catalog.vertical
21
+ assert_equal 0, catalog.product_count
22
+ assert_equal 0, catalog.feed_count
23
+ catalog = FacebookAds::AdProductCatalog.find(catalog.id)
24
+ assert_equal true, catalog.destroy
25
+ assert_nil FacebookAds::AdProductCatalog.find_by(name: 'Foo Bar')
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/ad_product_feed_test.rb
4
+ class AdProductFeedTest < BaseTest
5
+ def test_foo
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/ad_product_set_test.rb
4
+ class AdProductSetTest < BaseTest
5
+ def test_foo
6
+ end
7
+ end
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/ad_product_test.rb
4
+ class AdProductTest < BaseTest
5
+ def test_list
6
+ vcr do
7
+ catalog = FacebookAds::AdProductCatalog.find_by(name: 'Test')
8
+ products = catalog.ad_products
9
+ product = products.first
10
+ assert_equal '1489112071104048', product.id
11
+ assert_equal 'retro-ruby-earrings', product.retailer_id
12
+ assert_equal 'Precious Retro .925 Sterling Silver Artificial Ruby Earrings', product.name
13
+ assert_equal '$5 shipping - at your doorstep within 25-27 business days.', product.description
14
+ assert_equal 'Adoration-Precious', product.brand
15
+ assert_equal 'Jewelry | Earrings', product.category
16
+ assert_equal 'USD', product.currency
17
+ assert_equal '$156.00', product.price
18
+ assert_equal 'https://external.xx.fbcdn.net/safe_image.php?d=AQALnOfu1mhkpb4T&url=https%3A%2F%2Fd38eepresuu519.cloudfront.net%2F12c85243d743ac3cb21b71c34192b252%2Flarge.jpg&cfs=1&_nc_hash=AQBlxlDCq59tO6sE', product.image_url
19
+ assert_equal 'https://tophatter.com/lots/23275728', product.url
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/ad_set_test.rb
4
+ class AdSetTest < BaseTest
5
+ def test_foo
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/ad_targeting_test.rb
4
+ class AdTargetingTest < BaseTest
5
+ def test_foo
6
+ end
7
+ end
data/test/ad_test.rb ADDED
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/ad_test.rb
4
+ class AdTest < BaseTest
5
+ def test_foo
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ # rake test TEST=test/base_test.rb
4
+ class FacebookAdsTest < BaseTest
5
+ def test_version
6
+ assert FacebookAds.base_uri.include?('2.8')
7
+ end
8
+ end
@@ -0,0 +1,64 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+
3
+ require 'coveralls'
4
+ Coveralls.wear!('rails')
5
+
6
+ # https://github.com/colszowka/simplecov
7
+ require 'simplecov'
8
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
9
+ SimpleCov.start do
10
+ add_filter 'bin/console'
11
+ end
12
+
13
+ require 'facebook_ads'
14
+ require 'minitest/autorun'
15
+ require 'vcr'
16
+ require 'awesome_print'
17
+
18
+ VCR.configure do |config|
19
+ config.cassette_library_dir = 'test/vcr_cassettes'
20
+ config.hook_into :webmock
21
+ config.filter_sensitive_data('TEST_ACCESS_TOKEN') do
22
+ begin
23
+ File.read('test_access_token').chop
24
+ rescue Errno::ENOENT
25
+ 'TEST_ACCESS_TOKEN'
26
+ end
27
+ end
28
+ config.filter_sensitive_data('TEST_BUSINESS_ID') do
29
+ begin
30
+ File.read('test_business_id').chop
31
+ rescue Errno::ENOENT
32
+ 'TEST_BUSINESS_ID'
33
+ end
34
+ end
35
+ end
36
+
37
+ class BaseTest < Minitest::Test
38
+ protected
39
+
40
+ def setup
41
+ FacebookAds.access_token = begin
42
+ File.read('test_access_token').chop
43
+ rescue Errno::ENOENT
44
+ 'TEST_ACCESS_TOKEN'
45
+ end
46
+
47
+ FacebookAds.business_id = begin
48
+ File.read('test_business_id').chop
49
+ rescue Errno::ENOENT
50
+ 'TEST_BUSINESS_ID'
51
+ end
52
+
53
+ # FacebookAds.logger = Logger.new(STDOUT)
54
+ # FacebookAds.logger.level = Logger::Severity::DEBUG
55
+ end
56
+
57
+ def vcr
58
+ calling_method = caller[0][/`.*'/][1..-2]
59
+
60
+ VCR.use_cassette("#{self.class.name}-#{calling_method}", match_requests_on: [:host, :path]) do
61
+ yield
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,70 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://graph.facebook.com/v2.8/me/adaccounts?access_token=TEST_ACCESS_TOKEN&fields=id,account_id,account_status,age,created_time,currency,name
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Access-Control-Allow-Origin:
22
+ - "*"
23
+ Etag:
24
+ - '"8727ddc19027cf41ac64d844a2955c4c30bbfdcb"'
25
+ Pragma:
26
+ - no-cache
27
+ Cache-Control:
28
+ - private, no-cache, no-store, must-revalidate
29
+ Facebook-Api-Version:
30
+ - v2.8
31
+ Expires:
32
+ - Sat, 01 Jan 2000 00:00:00 GMT
33
+ Content-Type:
34
+ - application/json; charset=UTF-8
35
+ X-Fb-Trace-Id:
36
+ - CtmthPguZnS
37
+ X-Fb-Rev:
38
+ - '2761076'
39
+ Vary:
40
+ - Accept-Encoding
41
+ Content-Encoding:
42
+ - gzip
43
+ X-Fb-Debug:
44
+ - M17xwZAHmQJsxtPYHQ6V++j2xNTzdmADQ1enDSidz6U/Bx330r4820WEjDSwdAxS8Vw5qMKNxrQhTP/L036adA==
45
+ Date:
46
+ - Sun, 01 Jan 2017 02:33:35 GMT
47
+ Connection:
48
+ - keep-alive
49
+ Content-Length:
50
+ - '630'
51
+ body:
52
+ encoding: ASCII-8BIT
53
+ string: !binary |-
54
+ H4sIAAAAAAAAA4WUT2+bQBDFv0rE2aCZ2Z39d4vqVvLBjppQVUpVRQQTB7e1
55
+ K4yVWpG/ewfUQwPesOKAdoblx+PNe03WRVsk4dtrUq+TkBRl+4BEismzQiBl
56
+ jE5msl3uj7v2oe95p35oi/Z4SALK1qZKApmMiNkDWVlulpRNVbTV+qGtf0k5
57
+ IUCTIqVAOUJguWwKDkCOLI9NU+3Kk3R9uZvLxq7oH5m/1Jvn9mqxSM6z/6HR
58
+ OwVMDgjJshlBx+tDaK0z0pY99ZeKQGOKkKPqofUU9G3VFs2mauvdZojtlOiJ
59
+ Gq3IaWGMHa0PsY3OvHfeeA9Wg41gQ0q215oD+1ROnNZ6SKzIOq/YWKOV9mPi
60
+ aH1IjGgz77RW5CyoCDG4VGGOHFAHUlPEt9WnY/VTD5GRiYQGHStveYwcrY+Q
61
+ NWZIBv+tKHLnDRvIBj0p8u3x8fSWV0ZLhgZESRGHaYgbL4+crDBzGhVrNMZc
62
+ FJh7S5gcvKgbOvj3afPqcMHFwOiVE7OikwmzI4Hj9VFiaJN5Yzx4S7IiAuuU
63
+ XCewogB2Cvlr9TjElf+tFFt5jzgP1Jg33jAEVoyZRJvXposMcwlY9xrrXBys
64
+ XFA4BfzhuakPVx8PbVPV5fNbdmdEQitZ5gxoN5q+eHkUF+QycMrKl8aimTuh
65
+ wedoJOICuynu69262QvGG2AZKOfYjkgv7I+84Nhl4l62sXwAmS7JBO7yAXSf
66
+ aO8HcX1zl5y/z5LfxaZzcXjtOg/75tDdPlZP+6brWm6XejVf4HL7489q/oVW
67
+ +fVpmZf33UHFU1s10rPaXr8stwu4mS9Pq3zDq8/3c2k4n89/AXYRrTZUBwAA
68
+ http_version:
69
+ recorded_at: Sun, 01 Jan 2017 02:33:35 GMT
70
+ recorded_with: VCR 3.0.3
@@ -0,0 +1,130 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://graph.facebook.com/v2.8/me/adaccounts?access_token=TEST_ACCESS_TOKEN&fields=id,account_id,account_status,age,created_time,currency,name
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Access-Control-Allow-Origin:
22
+ - "*"
23
+ Etag:
24
+ - '"8727ddc19027cf41ac64d844a2955c4c30bbfdcb"'
25
+ Pragma:
26
+ - no-cache
27
+ Cache-Control:
28
+ - private, no-cache, no-store, must-revalidate
29
+ Facebook-Api-Version:
30
+ - v2.8
31
+ Expires:
32
+ - Sat, 01 Jan 2000 00:00:00 GMT
33
+ Content-Type:
34
+ - application/json; charset=UTF-8
35
+ X-Fb-Trace-Id:
36
+ - DS1qjlOMSaj
37
+ X-Fb-Rev:
38
+ - '2761076'
39
+ Vary:
40
+ - Accept-Encoding
41
+ Content-Encoding:
42
+ - gzip
43
+ X-Fb-Debug:
44
+ - 6+4AZVGdeDWLOC6AgJ93KwzhtilTnUjW1Y/UuERgFQGbzhN4eDm0F2sBIIl6uoViKGCirMP2vbZfYK7fg5y0oA==
45
+ Date:
46
+ - Sun, 01 Jan 2017 02:33:35 GMT
47
+ Connection:
48
+ - keep-alive
49
+ Content-Length:
50
+ - '630'
51
+ body:
52
+ encoding: ASCII-8BIT
53
+ string: !binary |-
54
+ H4sIAAAAAAAAA4WUT2+bQBDFv0rE2aCZ2Z39d4vqVvLBjppQVUpVRQQTB7e1
55
+ K4yVWpG/ewfUQwPesOKAdoblx+PNe03WRVsk4dtrUq+TkBRl+4BEismzQiBl
56
+ jE5msl3uj7v2oe95p35oi/Z4SALK1qZKApmMiNkDWVlulpRNVbTV+qGtf0k5
57
+ IUCTIqVAOUJguWwKDkCOLI9NU+3Kk3R9uZvLxq7oH5m/1Jvn9mqxSM6z/6HR
58
+ OwVMDgjJshlBx+tDaK0z0pY99ZeKQGOKkKPqofUU9G3VFs2mauvdZojtlOiJ
59
+ Gq3IaWGMHa0PsY3OvHfeeA9Wg41gQ0q215oD+1ROnNZ6SKzIOq/YWKOV9mPi
60
+ aH1IjGgz77RW5CyoCDG4VGGOHFAHUlPEt9WnY/VTD5GRiYQGHStveYwcrY+Q
61
+ NWZIBv+tKHLnDRvIBj0p8u3x8fSWV0ZLhgZESRGHaYgbL4+crDBzGhVrNMZc
62
+ FJh7S5gcvKgbOvj3afPqcMHFwOiVE7OikwmzI4Hj9VFiaJN5Yzx4S7IiAuuU
63
+ XCewogB2Cvlr9TjElf+tFFt5jzgP1Jg33jAEVoyZRJvXposMcwlY9xrrXBys
64
+ XFA4BfzhuakPVx8PbVPV5fNbdmdEQitZ5gxoN5q+eHkUF+QycMrKl8aimTuh
65
+ wedoJOICuynu69262QvGG2AZKOfYjkgv7I+84Nhl4l62sXwAmS7JBO7yAXSf
66
+ aO8HcX1zl5y/z5LfxaZzcXjtOg/75tDdPlZP+6brWm6XejVf4HL7489q/oVW
67
+ +fVpmZf33UHFU1s10rPaXr8stwu4mS9Pq3zDq8/3c2k4n89/AXYRrTZUBwAA
68
+ http_version:
69
+ recorded_at: Sun, 01 Jan 2017 02:33:35 GMT
70
+ - request:
71
+ method: get
72
+ uri: https://graph.facebook.com/v2.8/act_1132789356764349/advertisable_applications?access_token=TEST_ACCESS_TOKEN
73
+ body:
74
+ encoding: US-ASCII
75
+ string: ''
76
+ headers:
77
+ Accept:
78
+ - "*/*; q=0.5, application/xml"
79
+ Accept-Encoding:
80
+ - gzip, deflate
81
+ User-Agent:
82
+ - Ruby
83
+ response:
84
+ status:
85
+ code: 200
86
+ message: OK
87
+ headers:
88
+ Access-Control-Allow-Origin:
89
+ - "*"
90
+ Etag:
91
+ - '"ed5a3a3762d401f540d4f52b8a1a581c369b29c4"'
92
+ Pragma:
93
+ - no-cache
94
+ Cache-Control:
95
+ - private, no-cache, no-store, must-revalidate
96
+ Facebook-Api-Version:
97
+ - v2.8
98
+ Expires:
99
+ - Sat, 01 Jan 2000 00:00:00 GMT
100
+ Content-Type:
101
+ - application/json; charset=UTF-8
102
+ X-Fb-Trace-Id:
103
+ - FLOZqWyoOYj
104
+ X-Fb-Rev:
105
+ - '2761076'
106
+ Vary:
107
+ - Accept-Encoding
108
+ Content-Encoding:
109
+ - gzip
110
+ X-Fb-Debug:
111
+ - osSdSrQ/aBSnR2FqPJQgAMmD/lnFd5XwjzuDSuxRMjcrM56dPBHP41osYJLrHiBNRH5aBUq/Ru9qq5U+blWJHA==
112
+ Date:
113
+ - Sun, 01 Jan 2017 02:33:35 GMT
114
+ Connection:
115
+ - keep-alive
116
+ Content-Length:
117
+ - '302'
118
+ body:
119
+ encoding: ASCII-8BIT
120
+ string: !binary |-
121
+ H4sIAAAAAAAAA5WRXU+DMBSG/wrp9QYtSD+WGBOzK+OV807M0kEHzTra0G6E
122
+ LPvvlujALWj0tuf0PM95zwkU3HGweDuBnDtR6qYDC/Ast8K6TgkwA0rWO/9U
123
+ OWfsIouyqDlsutBpU3HnRBPmep9Fvq/me+H7Xnw1mAdPohWq6YJVpY2RdRks
124
+ BVf2q80anve9w5B5P9MXZeFfUcooIhBBgnCMcQLOsyu5x4OVtbB2yq1t23Dr
125
+ h2+03n2alT0vix64MWtZ3CNMMWZJmnoKogkbxVdCqUDXwetFavC5/XLj82tY
126
+ NzlZWdbrgxmp32mT0VwsYpZSGBMfSkzxHfyjxNTBCnGcONhSHMeFE9KzCPOL
127
+ Qxz/h/UjZlj0mkUoQZ4FCWOQ0hSc388fjb/W/JMCAAA=
128
+ http_version:
129
+ recorded_at: Sun, 01 Jan 2017 02:33:35 GMT
130
+ recorded_with: VCR 3.0.3