facegroups 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 04725e907049b78e390aa9ee5ad677ff7e8dcdf7
4
- data.tar.gz: a37df0f984268609830f574f54da1a9f5553e13d
3
+ metadata.gz: 152e77831c3b594ae33626c56057d8fb18f932a5
4
+ data.tar.gz: a8b9d264b3d9c4b286bc2bd9439683ff8bd53ff7
5
5
  SHA512:
6
- metadata.gz: 7c2ae8344d0d913f4af02f68570ae1a607cd0ebe20fedebeac32226843f31872f0d65dd3eb68d512868d7aff9787871605c221a2fa091b03fb5ade39328342db
7
- data.tar.gz: 002d87d63de1e903d6dada806420119791e05527c70ac9d87a5f29f65237e7657caf38d09ce3fe58f5aebf591b51651e0e9237a395e84f0ba4f3bd74c4dc6de1
6
+ metadata.gz: 073edf44bb3f9c94215bff47e8f79384965791d3a3896e5845ef8dcd6f37117074daca460dabb098cad6ee4c01414ad48a8989adcd53dfcf78143f250da0016b
7
+ data.tar.gz: 568826166250023151216166adb15a7a9dfe6bae079d857a161224a6637520b1c4366cc39cbfd371c9236828b3118ec3eeeae47c5f1198e4fdeecac3c10fdf11
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- facegroups (0.1.0)
4
+ facegroups (0.2.2)
5
5
  http (~> 2.0)
6
6
 
7
7
  GEM
@@ -9,10 +9,12 @@ GEM
9
9
  specs:
10
10
  addressable (2.4.0)
11
11
  ast (2.3.0)
12
+ codeclimate-test-reporter (0.6.0)
13
+ simplecov (>= 0.7.1, < 1.0.0)
12
14
  crack (0.4.3)
13
15
  safe_yaml (~> 1.0.0)
14
16
  docile (1.1.5)
15
- domain_name (0.5.20160826)
17
+ domain_name (0.5.20161021)
16
18
  unf (>= 0.0.5, < 1.0.0)
17
19
  erubis (2.7.0)
18
20
  flay (2.8.1)
@@ -25,7 +27,7 @@ GEM
25
27
  ruby_parser (~> 3.1, > 3.1.0)
26
28
  sexp_processor (~> 4.4)
27
29
  hashdiff (0.3.0)
28
- http (2.0.3)
30
+ http (2.1.0)
29
31
  addressable (~> 2.3)
30
32
  http-cookie (~> 1.0)
31
33
  http-form_data (~> 1.0.1)
@@ -74,6 +76,7 @@ PLATFORMS
74
76
  ruby
75
77
 
76
78
  DEPENDENCIES
79
+ codeclimate-test-reporter (~> 0.6)
77
80
  facegroups!
78
81
  flay (~> 2.8)
79
82
  flog (~> 4.4)
@@ -15,7 +15,7 @@ module FaceGroups
15
15
 
16
16
  def self.find(id:)
17
17
  group_data = FbApi.group_data(id)
18
- new(group_data: group_data)
18
+ group_data.include?('error') ? nil : new(group_data: group_data)
19
19
  end
20
20
  end
21
21
  end
@@ -13,7 +13,7 @@ module FaceGroups
13
13
 
14
14
  def self.find(id:)
15
15
  posting_data = FaceGroups::FbApi.posting_data(id)
16
- new(data: posting_data)
16
+ posting_data.keys.include?('error') ? nil : new(data: posting_data)
17
17
  end
18
18
 
19
19
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FaceGroups
4
- VERSION = '0.2.1'
4
+ VERSION = '0.2.2'
5
5
  end
@@ -27,11 +27,11 @@ describe 'FaceGroups specifications' do
27
27
  end
28
28
 
29
29
  describe 'FbApi Credentials' do
30
- it 'should be able to get a new access token with ENV credentials' do
30
+ it '(HAPPY) should get new access token with ENV credentials' do
31
31
  FaceGroups::FbApi.access_token.length.must_be :>, 0
32
32
  end
33
33
 
34
- it 'should be able to get a new access token with file credentials' do
34
+ it '(HAPPY) should get new access token with file credentials' do
35
35
  FaceGroups::FbApi.config = {
36
36
  client_id: ENV['FB_CLIENT_ID'],
37
37
  client_secret: ENV['FB_CLIENT_SECRET']
@@ -39,36 +39,43 @@ describe 'FaceGroups specifications' do
39
39
  FaceGroups::FbApi.access_token.length.must_be :>, 0
40
40
  end
41
41
  end
42
+ end
43
+
44
+ describe 'Finding Group Information' do
45
+ describe 'Find a Group' do
46
+ it '(HAPPY) should be able to find a Facebook Group with proper ID' do
47
+ group = FaceGroups::Group.find(id: ENV['FB_GROUP_ID'])
42
48
 
43
- it 'should be able to open a Facebook Group' do
44
- group = FaceGroups::Group.find(
45
- id: ENV['FB_GROUP_ID']
46
- )
49
+ group.name.length.must_be :>, 0
50
+ end
47
51
 
48
- group.name.length.must_be :>, 0
52
+ it '(SAD) should return nil if Group ID is invalid' do
53
+ group = FaceGroups::Group.find(id: INVALID_RESOURCE_ID)
54
+ group.must_be_nil
55
+ end
49
56
  end
50
57
 
51
- it 'should get the latest feed from a group' do
52
- group = FaceGroups::Group.find(
53
- id: ENV['FB_GROUP_ID']
54
- )
58
+ describe 'Retrieving Group Feed' do
59
+ it '(HAPPY) should get the latest feed from a group with proper ID' do
60
+ group = FaceGroups::Group.find(id: ENV['FB_GROUP_ID'])
55
61
 
56
- feed = group.feed
57
- feed.count.must_be :>, 1
58
- end
62
+ feed = group.feed
63
+ feed.count.must_be :>, 1
64
+ end
59
65
 
60
- it 'should get basic information about postings on the feed' do
61
- group = FaceGroups::Group.find(
62
- id: ENV['FB_GROUP_ID']
63
- )
66
+ it '(HAPPY) should get the postings on the feed with proper ID' do
67
+ group = FaceGroups::Group.find(id: ENV['FB_GROUP_ID'])
64
68
 
65
- group.feed.postings.each do |posting|
66
- posting.id.wont_be_nil
67
- posting.updated_time.wont_be_nil
69
+ group.feed.postings.each do |posting|
70
+ posting.id.wont_be_nil
71
+ posting.updated_time.wont_be_nil
72
+ end
68
73
  end
69
74
  end
75
+ end
70
76
 
71
- it 'should find all parts of a full posting' do
77
+ describe 'Finding Posting Information' do
78
+ it ' (HAPPY) should find all parts of a full posting' do
72
79
  posting = FB_RESULT['posting']
73
80
  attachment = posting['attachment'].first
74
81
  retrieved = FaceGroups::Posting.find(id: posting['id'])
@@ -81,6 +88,13 @@ describe 'FaceGroups specifications' do
81
88
  retrieved.attachment.url.must_match 'tutorialzine'
82
89
  end
83
90
 
91
+ it '(SAD) should return nil if Posting ID is invalid' do
92
+ posting = FaceGroups::Posting.find(id: INVALID_RESOURCE_ID)
93
+ posting.must_be_nil
94
+ end
95
+ end
96
+
97
+ describe 'Command Line Executable Actions' do
84
98
  it 'should run the executable file' do
85
99
  output = FaceGroups::Runner.run!([ENV['FB_GROUP_ID']])
86
100
  output.split("\n").length.must_be :>, 5
@@ -12,7 +12,7 @@ http_interactions:
12
12
  Host:
13
13
  - graph.facebook.com
14
14
  User-Agent:
15
- - http.rb/2.0.3
15
+ - http.rb/2.1.0
16
16
  response:
17
17
  status:
18
18
  code: 200
@@ -31,13 +31,13 @@ http_interactions:
31
31
  Content-Type:
32
32
  - application/json; charset=UTF-8
33
33
  X-Fb-Trace-Id:
34
- - GggmQNd9Ryq
34
+ - EIz8PlH74FI
35
35
  X-Fb-Rev:
36
- - '2657702'
36
+ - '2702404'
37
37
  X-Fb-Debug:
38
- - NRyFUekFi6xy5Y2/aYwZpfmOj1o/FneWpB3f8vFtSyGSaHrIVgvgULIsXLEYm99m2y9PhrKhDhTjLvTJ29mVLw==
38
+ - DZjMLSd0p4z+nNyu+XezdBvSa21+zvek2OxwgFMOf2nRmm4SbQMuAo77Vxgs1mfIr+JTyb6nn6crEVUBEdxQag==
39
39
  Date:
40
- - Wed, 02 Nov 2016 05:07:22 GMT
40
+ - Fri, 25 Nov 2016 06:09:53 GMT
41
41
  Connection:
42
42
  - close
43
43
  Content-Length:
@@ -46,165 +46,5 @@ http_interactions:
46
46
  encoding: UTF-8
47
47
  string: '{"access_token":"<ACCESS_TOKEN>","token_type":"bearer"}'
48
48
  http_version:
49
- recorded_at: Wed, 02 Nov 2016 05:07:21 GMT
50
- - request:
51
- method: get
52
- uri: https://graph.facebook.com/150352985174571?access_token=<CLIENT_ID>%7C0WiNEz4rbcf5Ki0Ge4vR7m4Wlts&fields=id,name,feed%7Bname,message,updated_time,created_time,attachments%7Btitle,description,url,media%7D%7D
53
- body:
54
- encoding: US-ASCII
55
- string: ''
56
- headers:
57
- Connection:
58
- - close
59
- Host:
60
- - graph.facebook.com
61
- User-Agent:
62
- - http.rb/2.0.3
63
- response:
64
- status:
65
- code: 200
66
- message: OK
67
- headers:
68
- Access-Control-Allow-Origin:
69
- - "*"
70
- Etag:
71
- - '"5e198c115d2b08deb673e2609d0ba04745578f94"'
72
- Pragma:
73
- - no-cache
74
- Cache-Control:
75
- - private, no-cache, no-store, must-revalidate
76
- Facebook-Api-Version:
77
- - v2.7
78
- Expires:
79
- - Sat, 01 Jan 2000 00:00:00 GMT
80
- Content-Type:
81
- - text/javascript; charset=UTF-8
82
- X-Fb-Trace-Id:
83
- - GBItdk/tABx
84
- X-Fb-Rev:
85
- - '2657702'
86
- Vary:
87
- - Accept-Encoding
88
- X-Fb-Debug:
89
- - 62bwQNbMua8/VsTScByUN5uw8DWJmxKvYy4UYf4XuLcK+XhiWV91WNqFzn57Ts0BwZRvkVNvYPqE/Ab/DyB99A==
90
- Date:
91
- - Wed, 02 Nov 2016 05:07:23 GMT
92
- Connection:
93
- - close
94
- body:
95
- encoding: UTF-8
96
- string: '{"id":"150352985174571","name":"Web Service Development \u0040 NTHU","feed":{"data":[{"name":"seriot.ch
97
- - Parsing JSON is a Minefield \ud83d\udca3","message":"From the article: \"JSON
98
- is not a data format you can rely on blindly [...] edge cases and maliciously
99
- crafted payloads can cause bugs, crashes and denial of services, mainly because
100
- JSON libraries rely on specifications that have evolved over time and that
101
- left many details loosely specified or not specified at all.\" Long story
102
- short: it seems XML will never die :D (actually, parsing XML is even worse...)","updated_time":"2016-10-28T02:09:39+0000","created_time":"2016-10-27T14:46:58+0000","id":"150352985174571_527664860776713","attachments":{"data":[{"title":"seriot.ch
103
- - Parsing JSON is a Minefield \ud83d\udca3","description":"JSON is the de
104
- facto standard when it comes to (un)serialising and exchanging data in web
105
- and mobile programming. But how well do you really know JSON? We''ll read
106
- the specifications and write test cases together. We''ll test common JSON
107
- libraries against our test cases. I''ll show that JSON is not the...","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fseriot.ch\u00252Fparsing_json.html&h=UAQGQRX4b&s=1&enc=AZPKGnoDkgEWd-V4gnZ12jSPx6qn9GwBc7fNMWXaO6MJkDRidifqdykfNzRcn1Iu_VSndfKRP0YJrzlaxVh3JZPz","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBafep0D8nqgNS7&w=720&h=720&url=http\u00253A\u00252F\u00252Fseriot.ch\u00252Fjson\u00252Fpruned_results.png&cfs=1","width":720}}}]}},{"name":"GitHub
108
- Dumps REST Calls for Facebook''s GraphQL - The New Stack","message":"Github''s
109
- adoption of GraphQL for APIs, over RESTful services, might be the tipping
110
- point that makes GraphQL ubiquitous. From what little exposure I have to it
111
- (thanks to YenTing and Yen-Nan at Cardinal Blue), it seems we are taking the
112
- complexity and burden of APIs away from API consumers, and putting it squarely
113
- at the feet of API providers. That means using APIs is about to become significantly
114
- easier (albeit more deeply nested) for everyone! But it also means that creating
115
- APIs is about to become significantly harder. Read more about the big shift
116
- at Github.","updated_time":"2016-10-20T08:29:06+0000","created_time":"2016-10-20T05:45:32+0000","id":"150352985174571_524070464469486","attachments":{"data":[{"title":"GitHub
117
- Dumps REST Calls for Facebook''s GraphQL - The New Stack","description":"Hoping
118
- to streamline the remote querying services of its site, GitHub is moving its
119
- API (application programming interface) from REST calls to Facebook\u2019s
120
- GraphQL API. In the company\u2019s recent user conference GitHub Universe,
121
- Kyle Daigle, GitHub platform engineering manager, explained that the company...","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fthenewstack.io\u00252Fgithub-dumps-rest-graphql-api\u00252F&h=_AQEI0kXl&s=1&enc=AZMG7qsP4WAE7z5rrdgoWuVPkGChRFMJZGQxyXDNXtFUArlUFhWgOwa5KblbIyuR7zmr5z2CGw8N0y8o5POnsSWE","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQC5HLw3s46cLqn7&w=720&h=720&url=http\u00253A\u00252F\u00252Fthenewstack.io\u00252Fwp-content\u00252Fuploads\u00252F2016\u00252F09\u00252FGHU-GraphQL-Woah.jpg&cfs=1&sx=0&sy=0&sw=2448&sh=2448","width":720}}}]}},{"name":"Taking
122
- PHP Seriously","message":"https:\/\/m.facebook.com\/story.php?story_fbid=1098448240203391&id=100001146751327","updated_time":"2016-10-13T18:17:23+0000","created_time":"2016-10-13T17:15:20+0000","id":"150352985174571_521137638096102","attachments":{"data":[{"title":"Taking
123
- PHP Seriously","description":"by Keith Adams, Slack Engineering","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fslack.engineering\u00252Ftaking-php-seriously-cf7a60065329\u002523.g3w9ecf66&h=RAQFtsAiO&s=1&enc=AZN-5j4shGMS2JkJXLC5q7kCPj4qe6ycAuj8c_U_mRA4UamZICD_KTXPRsMa8EOmnihv20rFUrtxK8ge_8HZYKuF","media":{"image":{"height":669,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCmbxAdG46sLBUD&w=720&h=720&url=https\u00253A\u00252F\u00252Fd262ilb51hltx0.cloudfront.net\u00252Fmax\u00252F1200\u00252F1\u00252Ax5N8tfTVEmQro2ySxoZtvw.jpeg&cfs=1","width":669}}}]}},{"name":"How
124
- To Save The Princess In 8 Programming Languages","updated_time":"2016-10-06T08:39:47+0000","created_time":"2016-10-06T08:28:40+0000","id":"150352985174571_518029841740215","attachments":{"data":[{"title":"How
125
- To Save The Princess In 8 Programming Languages","description":"Programming
126
- sucks. This fairytale comic shows the different ways in which programming
127
- languages could fail you in the fantasy kingdom.","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Ftoggl.com\u00252Fprogramming-princess&h=5AQGtDKXT&s=1&enc=AZOexDE35TO7ekXw1tL_NDKqddykXMcXshHtRNrMo6PAQEQyZXxmAj2CNTm93qHpXUX-yIbhUygt3Lhqqf97vpPE","media":{"image":{"height":630,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQDEZQJwFjW82Fzm&w=720&h=720&url=https\u00253A\u00252F\u00252Ftoggl.com\u00252Fimages\u00252Fshare-img\u00252Ffb-share-git-princess.jpg&cfs=1","width":630}}}]}},{"name":"Guess
128
- the Programming Language | Tutorialzine","message":"A little quiz to keep
129
- you sharp on programming trends.","updated_time":"2016-10-06T06:51:44+0000","created_time":"2016-10-04T02:21:25+0000","id":"150352985174571_517105121832687","attachments":{"data":[{"title":"Guess
130
- the Programming Language | Tutorialzine","description":"Can you tell Java
131
- from JavaScript? Awesome! So you are ready to take our ultimate programming
132
- challenge.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftutorialzine.com\u00252F2014\u00252F06\u00252Fguess-the-programming-language\u00252F&h=2AQG8RLQa&s=1&enc=AZNHAkruam89tHrbNhUDwn2CZnRGRn-dnlGpnCdBKu9G5q9UiMeLc0BMViE7HNzufAf2DwX3bVynC2XId_h4H1ga","media":{"image":{"height":490,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQB9saA-D40lNQqm&w=720&h=720&url=http\u00253A\u00252F\u00252Fcdn.tutorialzine.com\u00252Fwp-content\u00252Fuploads\u00252F2014\u00252F06\u00252Fguess-the-programming-language.jpg&cfs=1","width":490}}}]}},{"name":"How
133
- it feels to learn JavaScript in 2016","updated_time":"2016-10-06T01:18:12+0000","created_time":"2016-10-05T13:47:43+0000","id":"150352985174571_517701838439682","attachments":{"data":[{"title":"How
134
- it feels to learn JavaScript in 2016","description":"Edit: Thanks for pointing
135
- typos and mistakes, I\u2019ll update the article as noted. Discussion in HackerNews
136
- and Reddit.","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fhackernoon.com\u00252Fhow-it-feels-to-learn-javascript-in-2016-d3a717dd577f\u002523.m0lkkfan1&h=NAQE1vnlE&s=1&enc=AZNB-AqGB3BNuEP-4XzWR7_3cYMuvNodRCgzAJAZx1lnYI2gi0er48ma1ilNuZ8pcZi51jpx5W72YkS9cGVnw588","media":{"image":{"height":720,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBw5xIxnMhHtpnj&w=720&h=720&url=https\u00253A\u00252F\u00252Fcdn-images-2.medium.com\u00252Fmax\u00252F1200\u00252F1\u00252AraWO3dhM4jMjf9VY-kZzNg.png&cfs=1","width":720}}}]}},{"name":"5
137
- emerging programming languages with a bright future","message":"Up and coming
138
- languages worth keeping our eyes on. I''m already a huge fan of Crystal and
139
- Rust, but the author has convinced me to pay more attention to Kotlin and
140
- Elm.","updated_time":"2016-09-22T08:12:35+0000","created_time":"2016-09-21T10:13:58+0000","id":"150352985174571_511894255687107","attachments":{"data":[{"title":"5
141
- emerging programming languages with a bright future","description":"Get the
142
- elevator pitch for five of the most promising languages (some of them you
143
- probably haven''t heard of before) that have the potential to grow...","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftechbeacon.com\u00252F5-emerging-programming-languages-bright-future\u00253Futm_content\u00253Dbuffer300a1\u002526utm_medium\u00253Dsocial\u002526utm_source\u00253Dtwitter.com\u002526utm_campaign\u00253Dbuffer&h=HAQHG9V0a&s=1&enc=AZPxF0KnzWXKWSxJhIsR-cEnbSv3pCjDdkR9j0h9m7ek_gmZz6wI1BDiraWKwzZpflf6v21rQhUqXGhmfipDT87E","media":{"image":{"height":480,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQAxbtCPHht3vWb6&w=720&h=720&url=http\u00253A\u00252F\u00252Ftechbeacon.com\u00252Fsites\u00252Fdefault\u00252Ffiles\u00252Fstyles\u00252Fsocial\u00252Fpublic\u00252Ffield\u00252Fimage\u00252F5_emerging_programming_languages_with_a_bright_future.jpg\u00253Fitok\u00253Dm0nlEinF&cfs=1","width":480}}}]}},{"name":"A
144
- whole new Universe","message":"I can''t even wrap my head around all the new
145
- features Github just released: code reviews, kanban boards, and much more.","updated_time":"2016-09-19T09:14:51+0000","created_time":"2016-09-15T03:42:48+0000","id":"150352985174571_509461352597064","attachments":{"data":[{"title":"A
146
- whole new Universe","description":"Learn about the exciting features and announcements
147
- revealed at this year\u2019s annual GitHub Universe conference at historic
148
- Pier 70 in San Francisco.","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fgithub.com\u00252Funiverse-2016&h=BAQGEWDdf&s=1&enc=AZOTH7qOaJiI2qGBBxtzbqzxx6mvbiZ-FU8x7pe8CJ4KGHdFMRFBP31626IfXIwjr__SY9RBJvdyt9jupfXcCHvu","media":{"image":{"height":630,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQBsb70KV75vMJ8B&w=720&h=720&url=https\u00253A\u00252F\u00252Fassets-cdn.github.com\u00252Fimages\u00252Fmodules\u00252Funiverse-2016\u00252Funiverse-open-graph.png&cfs=1","width":630}}}]}},{"name":"Vert.x","message":"http:\/\/vertx.io\/","updated_time":"2016-09-13T20:34:39+0000","created_time":"2016-09-13T20:34:39+0000","id":"150352985174571_508953969314469","attachments":{"data":[{"title":"Vert.x","description":"Vert.x
149
- is a tool-kit for building reactive applications on the JVM.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fvertx.io\u00252F&h=BAQGEWDdf&s=1&enc=AZNMZ1fniUfBXdq2EmR_iYFDl3XQ3riZPkfiK6yDlnY31I-HXbCo4Xn6xI3M2MqNAxbcVjWBFqatJS95zz8GQ3r0","media":{"image":{"height":360,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQC13D8UqDGMX5IF&w=720&h=720&url=http\u00253A\u00252F\u00252Fvertx.io\u00252Fassets\u00252Fuser_logos\u00252Fswisscom.png&cfs=1","width":360}}}]}},{"name":"Codecademy","updated_time":"2016-09-13T02:04:20+0000","created_time":"2016-09-13T02:04:20+0000","id":"150352985174571_508631766013356","attachments":{"data":[{"title":"Timeline
150
- Photos","description":"Are you a Javascript guru? Then you should check out
151
- our course in React.js!\n\nReact enables websites to display complex animations,
152
- large volumes of data, or other memory-heavy tasks without slowing down. At
153
- the end of the course, you\u2019ll know how to build sophisticated React applications.
154
- Check it out!\n\nhttp:\/\/codecademy.io\/YRFS3047CDf","url":"https:\/\/www.facebook.com\/codecademy\/photos\/a.553205214692855.138303.272256069454439\/1387442691269099\/?type=3","media":{"image":{"height":377,"src":"https:\/\/scontent.xx.fbcdn.net\/v\/t1.0-9\/s720x720\/14264951_1387442691269099_7557697962736020966_n.png?oh=1c67604ccd5679d98c72100f943f3863&oe=5891713F","width":720}}}]}}],"paging":{"previous":"https:\/\/graph.facebook.com\/v2.7\/150352985174571\/feed?fields=name,message,updated_time,created_time,attachments\u00257Btitle,description,url,media\u00257D&since=1477620579&access_token=<ACCESS_TOKEN>&limit=25&__paging_token=enc_AdAchevYgL0m5xCIn76hqJ3aBASZBLnnBkHzYtokZBey5PDaQuxdVxZBDfJm2ifeekq5qoALQ6ZA4IMrAhmfWQ5dqvhVBMLvnbwrEWU90LoviZCxtZBgZDZD&__previous=1","next":"https:\/\/graph.facebook.com\/v2.7\/150352985174571\/feed?fields=name,message,updated_time,created_time,attachments\u00257Btitle,description,url,media\u00257D&access_token=<ACCESS_TOKEN>&limit=25&until=1473732260&__paging_token=enc_AdA5yvCYKggN5gwcOMpKsofaKTcjoBDhX09ctf67EExuFDAc0wxCiNzAyIGndHrMAZCrp9QmVKgQaJrU3U5ORbHEtw7NHfA9kZAKWKz6jUvEBtYAZDZD"}}}'
155
- http_version:
156
- recorded_at: Wed, 02 Nov 2016 05:07:21 GMT
157
- - request:
158
- method: get
159
- uri: https://graph.facebook.com/150352985174571_517105121832687?access_token=<CLIENT_ID>%7C0WiNEz4rbcf5Ki0Ge4vR7m4Wlts&fields=name,message,updated_time,created_time,attachments%7Btitle,description,url,media%7D
160
- body:
161
- encoding: US-ASCII
162
- string: ''
163
- headers:
164
- Connection:
165
- - close
166
- Host:
167
- - graph.facebook.com
168
- User-Agent:
169
- - http.rb/2.0.3
170
- response:
171
- status:
172
- code: 200
173
- message: OK
174
- headers:
175
- Access-Control-Allow-Origin:
176
- - "*"
177
- Etag:
178
- - '"27327e2f51ece7cfe83c99526423bcabead41d2f"'
179
- Pragma:
180
- - no-cache
181
- Cache-Control:
182
- - private, no-cache, no-store, must-revalidate
183
- Facebook-Api-Version:
184
- - v2.7
185
- Expires:
186
- - Sat, 01 Jan 2000 00:00:00 GMT
187
- Content-Type:
188
- - text/javascript; charset=UTF-8
189
- X-Fb-Trace-Id:
190
- - DkYopdItcdU
191
- X-Fb-Rev:
192
- - '2657702'
193
- Vary:
194
- - Accept-Encoding
195
- X-Fb-Debug:
196
- - jXpN1eHL+3JeRAKJGdX2y71uGqZnqPusLzTnxojeTsCFpiC/nOjxpKLQLhP7vk3UOBhhBP9DWYmiXJFp6dA9xg==
197
- Date:
198
- - Wed, 02 Nov 2016 05:07:23 GMT
199
- Connection:
200
- - close
201
- body:
202
- encoding: UTF-8
203
- string: '{"name":"Guess the Programming Language | Tutorialzine","message":"A
204
- little quiz to keep you sharp on programming trends.","updated_time":"2016-10-06T06:51:44+0000","created_time":"2016-10-04T02:21:25+0000","attachments":{"data":[{"title":"Guess
205
- the Programming Language | Tutorialzine","description":"Can you tell Java
206
- from JavaScript? Awesome! So you are ready to take our ultimate programming
207
- challenge.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftutorialzine.com\u00252F2014\u00252F06\u00252Fguess-the-programming-language\u00252F&h=WAQF2RvSH&s=1&enc=AZNnPD9PkV-Fi2zXmBc0G2m2vfSBK13pfsnMUdi4CW0nr4vDwrP3zDG65w8tqf_gFbQZccbOzm8O5E9-Ofcur0WY","media":{"image":{"height":490,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQB9saA-D40lNQqm&w=720&h=720&url=http\u00253A\u00252F\u00252Fcdn.tutorialzine.com\u00252Fwp-content\u00252Fuploads\u00252F2014\u00252F06\u00252Fguess-the-programming-language.jpg&cfs=1","width":490}}}]},"id":"150352985174571_517105121832687"}'
208
- http_version:
209
- recorded_at: Wed, 02 Nov 2016 05:07:22 GMT
49
+ recorded_at: Fri, 25 Nov 2016 06:09:33 GMT
210
50
  recorded_with: VCR 3.0.3
data/spec/spec_helper.rb CHANGED
@@ -24,3 +24,4 @@ end
24
24
 
25
25
  RESULT_FILE = "#{FIXTURES_FOLDER}/fb_api_results.yml"
26
26
  FB_RESULT = YAML.load(File.read(RESULT_FILE))
27
+ INVALID_RESOURCE_ID = '_12345'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facegroups
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aditya Utama Wijaya
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-02 00:00:00.000000000 Z
11
+ date: 2016-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http