facegroups 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +20 -0
- data/.travis.yml +3 -0
- data/README.md +3 -3
- data/bin/facegroups +2 -17
- data/facegroups.gemspec +4 -3
- data/lib/facegroups/version.rb +1 -1
- data/spec/facegroups_spec.rb +5 -0
- data/spec/fixtures/cassettes/facebook_api.yml +74 -161
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9d0c0a5d47155fc8f1046ec512f4b2dc6f6e2ac
|
4
|
+
data.tar.gz: 1ea2d41b70ba6aa6f0f5c1e127d77699b5714b5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a78021fcdb3f3e6c26e2ba903671099b72c1d1980e1fdee053e2d31660128f99143f373aecf779dd487466cd1f906684d88fbfa7a7ec8c95bbd57e40220ff8f
|
7
|
+
data.tar.gz: f9c9f288713ac77951a0a2098543e2d962b9f2ef8028659e50ad0e789b4cecc64d0d039a1489ca77b3ddb74d59e2bc00543dd2dc418c8e2ef5fb2389180723f8
|
data/.codeclimate.yml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
---
|
2
|
+
engines:
|
3
|
+
bundler-audit:
|
4
|
+
enabled: true
|
5
|
+
duplication:
|
6
|
+
enabled: true
|
7
|
+
config:
|
8
|
+
languages:
|
9
|
+
- ruby
|
10
|
+
fixme:
|
11
|
+
enabled: true
|
12
|
+
rubocop:
|
13
|
+
enabled: true
|
14
|
+
ratings:
|
15
|
+
paths:
|
16
|
+
- Gemfile.lock
|
17
|
+
- "**.rb"
|
18
|
+
exclude_paths:
|
19
|
+
- config/
|
20
|
+
- spec/
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# FaceGroups Gem
|
2
2
|
|
3
|
-
[![Gem Version](https://badge.fury.io/rb/facegroups.svg)](https://badge.fury.io/rb/
|
4
|
-
[![Build Status](https://travis-ci.org/aditya-utama-wijaya/facegroups.svg?branch=master)](https://travis-ci.org/aditya-utama-wijaya/
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/facegroups.svg)](https://badge.fury.io/rb/facegroups)
|
4
|
+
[![Build Status](https://travis-ci.org/aditya-utama-wijaya/facegroups.svg?branch=master)](https://travis-ci.org/aditya-utama-wijaya/facegroups)
|
5
5
|
|
6
6
|
FaceGroups is a gem that specializes in getting data from public Facebook Groups.
|
7
7
|
|
@@ -18,7 +18,7 @@ Please setup your Facebook developer credentials by creating an app profile on F
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
Require
|
21
|
+
Require FaceGroup gem in your code: `require 'facegroups'`
|
22
22
|
|
23
23
|
Supply your Facebook credentials to our library in one of two ways:
|
24
24
|
- Setup environment variables: `ENV[FB_CLIENT_ID]` and `ENV[FB_CLIENT_SECRET]`
|
data/bin/facegroups
CHANGED
@@ -1,21 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
|
-
$LOAD_PATH.unshift File.join(File.dirname(__FILE__),
|
3
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
4
4
|
require 'facegroups'
|
5
5
|
|
6
|
-
|
7
|
-
unless group_id
|
8
|
-
puts 'USAGE: facegroups [group_id]'
|
9
|
-
exit(1)
|
10
|
-
end
|
11
|
-
|
12
|
-
group = FaceGroups::Group.find(id: group_id)
|
13
|
-
|
14
|
-
puts group.name
|
15
|
-
puts Array.new(group.name.length) { '-' }.join
|
16
|
-
group.feed.postings.first(3).each.with_index do |post, index|
|
17
|
-
print "#{index + 1}"
|
18
|
-
puts post.message ? post.message : '(blank)'
|
19
|
-
puts "Attached: #{post.attachment.url}" if post.attachment
|
20
|
-
puts
|
21
|
-
end
|
6
|
+
puts FaceGroups::Runner.run!(ARGV)
|
data/facegroups.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = FaceGroups::VERSION
|
8
8
|
|
9
9
|
s.summary = 'Gets posted content from public Facebook groups'
|
10
|
-
s.description
|
10
|
+
s.description= 'Extracts feed, postings, and attachments from FB groups'
|
11
11
|
s.authors = ['Aditya Utama Wijaya']
|
12
12
|
s.email = ['adityautamawijaya@gmail.com']
|
13
13
|
|
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.add_development_dependency 'flay', '~> 2.8'
|
28
28
|
s.add_development_dependency 'rubocop', '~> 0.42'
|
29
29
|
|
30
|
-
s.
|
31
|
-
s.
|
30
|
+
s.add_development_dependency 'codeclimate-test-reporter', '~> 0.6'
|
31
|
+
s.homepage = 'https://github.com/aditya-utama-wijaya/facegroups'
|
32
|
+
s.license = 'MIT'
|
32
33
|
end
|
data/lib/facegroups/version.rb
CHANGED
data/spec/facegroups_spec.rb
CHANGED
@@ -80,4 +80,9 @@ describe 'FaceGroups specifications' do
|
|
80
80
|
retrieved.attachment.description.must_equal attachment['description']
|
81
81
|
retrieved.attachment.url.must_match 'tutorialzine'
|
82
82
|
end
|
83
|
+
|
84
|
+
it 'should run the executable file' do
|
85
|
+
output = FaceGroups::Runner.run!([ENV['FB_GROUP_ID']])
|
86
|
+
output.split("\n").length.must_be :>, 5
|
87
|
+
end
|
83
88
|
end
|
@@ -31,13 +31,13 @@ http_interactions:
|
|
31
31
|
Content-Type:
|
32
32
|
- application/json; charset=UTF-8
|
33
33
|
X-Fb-Trace-Id:
|
34
|
-
-
|
34
|
+
- FwC6mbp5Zm1
|
35
35
|
X-Fb-Rev:
|
36
|
-
- '
|
36
|
+
- '2657702'
|
37
37
|
X-Fb-Debug:
|
38
|
-
-
|
38
|
+
- nfKtI0MxdJgGNhRVSmjE1ICwkUjwdffXUqxfopKVS3lF9d4mvM/XbAM50IIcV6k+j+ZDtMv6LoxBq4kAOfWD7g==
|
39
39
|
Date:
|
40
|
-
-
|
40
|
+
- Wed, 02 Nov 2016 05:03:32 GMT
|
41
41
|
Connection:
|
42
42
|
- close
|
43
43
|
Content-Length:
|
@@ -46,60 +46,7 @@ http_interactions:
|
|
46
46
|
encoding: UTF-8
|
47
47
|
string: '{"access_token":"<ACCESS_TOKEN>","token_type":"bearer"}'
|
48
48
|
http_version:
|
49
|
-
recorded_at:
|
50
|
-
- request:
|
51
|
-
method: get
|
52
|
-
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
|
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
|
-
- '"19ab4fac7a978265ff28a3f4c89a24f3a37265f4"'
|
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
|
-
- HUt5ZGrTYkm
|
84
|
-
X-Fb-Rev:
|
85
|
-
- '2654373'
|
86
|
-
Vary:
|
87
|
-
- Accept-Encoding
|
88
|
-
X-Fb-Debug:
|
89
|
-
- zvEa/+ZE+NkLMj6+4VJpKOuYmfhO3qHrj+qqxO990wx53Ttsv/b1/wg5C/LQ4Ci10m70DkDMwJLeIEsKvModtA==
|
90
|
-
Date:
|
91
|
-
- Mon, 31 Oct 2016 11:36:32 GMT
|
92
|
-
Connection:
|
93
|
-
- close
|
94
|
-
body:
|
95
|
-
encoding: UTF-8
|
96
|
-
string: '{"name":"Guess the Programming Language | Tutorialzine","message":"A
|
97
|
-
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
|
98
|
-
the Programming Language | Tutorialzine","description":"Can you tell Java
|
99
|
-
from JavaScript? Awesome! So you are ready to take our ultimate programming
|
100
|
-
challenge.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftutorialzine.com\u00252F2014\u00252F06\u00252Fguess-the-programming-language\u00252F&h=ZAQFN2caD&s=1&enc=AZOSnK148OZJedVdYW4wBMXBd3PXCWbCnSv00om_hEzZx_-VSjNESrSgpmRpy0iGYn_kc_x85BOz70FuPyrkJwRx","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"}'
|
101
|
-
http_version:
|
102
|
-
recorded_at: Mon, 31 Oct 2016 11:36:13 GMT
|
49
|
+
recorded_at: Wed, 02 Nov 2016 05:03:31 GMT
|
103
50
|
- request:
|
104
51
|
method: get
|
105
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
|
@@ -121,7 +68,7 @@ http_interactions:
|
|
121
68
|
Access-Control-Allow-Origin:
|
122
69
|
- "*"
|
123
70
|
Etag:
|
124
|
-
- '"
|
71
|
+
- '"55a9c5dbe626c19908318953e58017c00cabc241"'
|
125
72
|
Pragma:
|
126
73
|
- no-cache
|
127
74
|
Cache-Control:
|
@@ -133,15 +80,15 @@ http_interactions:
|
|
133
80
|
Content-Type:
|
134
81
|
- text/javascript; charset=UTF-8
|
135
82
|
X-Fb-Trace-Id:
|
136
|
-
-
|
83
|
+
- A2Rn84SBo3z
|
137
84
|
X-Fb-Rev:
|
138
|
-
- '
|
85
|
+
- '2657702'
|
139
86
|
Vary:
|
140
87
|
- Accept-Encoding
|
141
88
|
X-Fb-Debug:
|
142
|
-
-
|
89
|
+
- MaGrUfDwwSpE5NkCmQss3hl9OTCRnAOLZHkxGQ3WLnZcUQehPRgvAXj8Cb1RpAcKqSIabApW30/a1LNz0tfkhg==
|
143
90
|
Date:
|
144
|
-
-
|
91
|
+
- Wed, 02 Nov 2016 05:03:33 GMT
|
145
92
|
Connection:
|
146
93
|
- close
|
147
94
|
body:
|
@@ -157,7 +104,7 @@ http_interactions:
|
|
157
104
|
facto standard when it comes to (un)serialising and exchanging data in web
|
158
105
|
and mobile programming. But how well do you really know JSON? We''ll read
|
159
106
|
the specifications and write test cases together. We''ll test common JSON
|
160
|
-
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=
|
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=JAQHilxvU&s=1&enc=AZMwR9W_voodqXdJnttkrPKMZF_BRoZ2qNpqJaO1mceVWWjY7NdqkfgFAdbEvYvbHsYw8ppzNK3iRZnj6hgXLEB3","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
|
161
108
|
Dumps REST Calls for Facebook''s GraphQL - The New Stack","message":"Github''s
|
162
109
|
adoption of GraphQL for APIs, over RESTful services, might be the tipping
|
163
110
|
point that makes GraphQL ubiquitous. From what little exposure I have to it
|
@@ -171,127 +118,93 @@ http_interactions:
|
|
171
118
|
to streamline the remote querying services of its site, GitHub is moving its
|
172
119
|
API (application programming interface) from REST calls to Facebook\u2019s
|
173
120
|
GraphQL API. In the company\u2019s recent user conference GitHub Universe,
|
174
|
-
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=
|
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=VAQEiRfg_&s=1&enc=AZOrUYmr5j1SadFbMCNq6tjbX7Hh2yIcnUMxjjsQReNzuyHNvVEldWESssscnzqO13nfS4RFpM78npvL5_XDL2t2","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
|
175
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
|
176
|
-
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=
|
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=_AQGTrZ6U&s=1&enc=AZP41UWxCsnVx2lz9h50G2L8jWT7zLNrwqwzWZxK1KF-SnY59ta17NKryYkZQFvjV4hDwTtuI8JsyXFva7vFJcxV","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
|
177
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
|
178
125
|
To Save The Princess In 8 Programming Languages","description":"Programming
|
179
126
|
sucks. This fairytale comic shows the different ways in which programming
|
180
|
-
languages could fail you in the fantasy kingdom.","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Ftoggl.com\u00252Fprogramming-princess&h=
|
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=iAQGBUybk&s=1&enc=AZNgzH4MhhTdwppBp3S9e-Ipjkin1PGyZ_n4kH8qy2cagF1ZIHRDduF_9Uf98gq2G1xw1HCV5cG5z8UT5DfxaShy","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
|
181
128
|
the Programming Language | Tutorialzine","message":"A little quiz to keep
|
182
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
|
183
130
|
the Programming Language | Tutorialzine","description":"Can you tell Java
|
184
131
|
from JavaScript? Awesome! So you are ready to take our ultimate programming
|
185
|
-
challenge.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftutorialzine.com\u00252F2014\u00252F06\u00252Fguess-the-programming-language\u00252F&h=
|
132
|
+
challenge.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Ftutorialzine.com\u00252F2014\u00252F06\u00252Fguess-the-programming-language\u00252F&h=kAQFK_jvc&s=1&enc=AZNqsaF0XZ5SHgr1rD9gCLLxJkT2OlqvPNM8mcJk2koIPKgL8oxpgjBbboSPbJCwCN9hHuKDXoP-6N9ruh-W2grU","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
|
186
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
|
187
134
|
it feels to learn JavaScript in 2016","description":"Edit: Thanks for pointing
|
188
135
|
typos and mistakes, I\u2019ll update the article as noted. Discussion in HackerNews
|
189
|
-
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
|
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=NAQFnYRHD&s=1&enc=AZOZbtq5GIJZZonUtNfOKjmO0UHq_NSfuSK7J6uxTpqhR7oWWQOIl8xtFaPO1Es5bhGHAkXs04aohropTU9DUUrj","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
|
190
137
|
emerging programming languages with a bright future","message":"Up and coming
|
191
138
|
languages worth keeping our eyes on. I''m already a huge fan of Crystal and
|
192
139
|
Rust, but the author has convinced me to pay more attention to Kotlin and
|
193
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
|
194
141
|
emerging programming languages with a bright future","description":"Get the
|
195
142
|
elevator pitch for five of the most promising languages (some of them you
|
196
|
-
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=
|
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=QAQEY1eMe&s=1&enc=AZN2ukbPrmSMJtLQme00SiRRCR3zPEl-4ZAQ7fyLWwDZpMgM0qNosKdqJ2lKuQVEwwj5HdonQSnL_fbEzfEWaXQw","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
|
197
144
|
whole new Universe","message":"I can''t even wrap my head around all the new
|
198
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
|
199
146
|
whole new Universe","description":"Learn about the exciting features and announcements
|
200
147
|
revealed at this year\u2019s annual GitHub Universe conference at historic
|
201
|
-
Pier 70 in San Francisco.","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fgithub.com\u00252Funiverse-2016&h=
|
202
|
-
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=
|
148
|
+
Pier 70 in San Francisco.","url":"https:\/\/www.facebook.com\/l.php?u=https\u00253A\u00252F\u00252Fgithub.com\u00252Funiverse-2016&h=uAQGWCK_E&s=1&enc=AZOJWwiLnElHH0rUs8vbgB64PyAUFs58Kihx1_yyDZiTHcXOev3uOT6AgNcclgw9txNx9KMXsi9f7fc3n9xhJT9e","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=gAQFK4n51&s=1&enc=AZNjgTxW7C03g-OazTZpyIXBgANCj3hfoIQNIhUXRpMhIJ3oq_3sSLbiCnrRoyopOsNIy4IRuPcYnFMmTpvZ2gS7","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
|
203
150
|
Photos","description":"Are you a Javascript guru? Then you should check out
|
204
151
|
our course in React.js!\n\nReact enables websites to display complex animations,
|
205
152
|
large volumes of data, or other memory-heavy tasks without slowing down. At
|
206
153
|
the end of the course, you\u2019ll know how to build sophisticated React applications.
|
207
|
-
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}}}]}},{"name":"
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
create sequence diagrams for web and mobile activities. I usually end up drawing
|
262
|
-
these on paper or on the board. I think it will be quite engaging to play
|
263
|
-
with this live!","updated_time":"2016-07-21T02:25:49+0000","created_time":"2016-07-20T03:59:51+0000","id":"150352985174571_486566974886502","attachments":{"data":[{"description":"Check
|
264
|
-
out: https:\/\/www.websequencediagrams.com \u2014 fun and friendly way to
|
265
|
-
create sequence diagrams for web and mobile activities. I usually end up drawing
|
266
|
-
these on paper or on the board. I think it will be quite engaging to play
|
267
|
-
with this live!","url":"https:\/\/www.facebook.com\/photo.php?fbid=1058362510919499&set=gm.486566974886502&type=3","media":{"image":{"height":392,"src":"https:\/\/scontent.xx.fbcdn.net\/v\/t1.0-9\/s720x720\/13680904_1058362510919499_8542835077177246391_n.jpg?oh=e23aa643f32eb9665e3c8ba8a43c01ca&oe=58A0A9E7","width":720}}}]}},{"name":"Dropbox
|
268
|
-
open-sources Lepton, a compression algorithm that cuts JPEG file size by 22\u0025","message":"http:\/\/venturebeat.com\/2016\/07\/14\/dropbox-open-sources-lepton-a-compression-algorithm-that-cuts-jpeg-file-size-by-22\/","updated_time":"2016-07-15T05:52:51+0000","created_time":"2016-07-14T19:37:54+0000","id":"150352985174571_484513371758529","attachments":{"data":[{"title":"Dropbox
|
269
|
-
open-sources Lepton, a compression algorithm that cuts JPEG file size by 22\u0025","description":"Cloud
|
270
|
-
syncing and sharing software company Dropbox today announced that it has released
|
271
|
-
an image compression algorithm called Lepton under an Apache open-source license
|
272
|
-
on GitHub.","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fventurebeat.com\u00252F2016\u00252F07\u00252F14\u00252Fdropbox-open-sources-lepton-a-compression-algorithm-that-cuts-jpeg-file-size-by-22\u00252F&h=JAQEPnFK0&s=1&enc=AZMjmVzr_G1gBKkY7nUuDz6AxY955tDBPQ4JEB35D2opKc0txgXlVfJngJYiHgqqtNQ7VimeUoNXbYHjNm8oXvBn","media":{"image":{"height":585,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCBxul8ygkf06Je&w=720&h=720&url=https\u00253A\u00252F\u00252Fventurebeat.com\u00252Fwp-content\u00252Fuploads\u00252F2015\u00252F11\u00252FDropbox-Open-outside-Novet-780x585.jpg&cfs=1","width":585}}}]}},{"name":"Serverless
|
273
|
-
Architectures","message":"\"Serverless\" is the new sensation in service architecture,
|
274
|
-
and it integrates the recent trends of microservices and reactive (message-driven)
|
275
|
-
architectures. We will play with some of these concepts in our SOA class this
|
276
|
-
coming semester. Take a peek at what''s brewing.\nhttp:\/\/martinfowler.com\/articles\/serverless.html","updated_time":"2016-07-14T19:01:17+0000","created_time":"2016-07-14T12:16:33+0000","id":"150352985174571_484366188439914","attachments":{"data":[{"title":"Serverless
|
277
|
-
Architectures","description":"Serverless architectures replace a managed server
|
278
|
-
with a collection of third party services and FaaS","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fmartinfowler.com\u00252Farticles\u00252Fserverless.html\u002523benefits&h=tAQFxOLUP&s=1&enc=AZOnodmObsKCua5Hgv0LB-cV9d94ECVdGjy7gm3yqARhHQqWT7Ojra2PH27QqIwjswS5aEk-CzEIvvUItmig30Mv","media":{"image":{"height":300,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCGBUsGoj1TcRRD&w=720&h=720&url=http\u00253A\u00252F\u00252Fmartinfowler.com\u00252Farticles\u00252Fserverless\u00252Fsps.png&cfs=1","width":300}}}]}},{"name":"Pokemon
|
279
|
-
Go Is Driving Insane Amounts of Sales at Small Local Businesses. Here''s How
|
280
|
-
It Works","message":"I''m shocked at how Pok\u00e9mon Go is taking over our
|
281
|
-
streets (very soon in TW, right?). And now its having a major effect on local
|
282
|
-
businesses as well. Great example of how an online service can transform offline
|
283
|
-
ones.","updated_time":"2016-07-13T09:36:32+0000","created_time":"2016-07-13T02:42:08+0000","id":"150352985174571_483847351825131","attachments":{"data":[{"title":"Pokemon
|
284
|
-
Go Is Driving Insane Amounts of Sales at Small Local Businesses. Here''s How
|
285
|
-
It Works","description":"For $1.19 an hour, you can have more customers than
|
286
|
-
you''ve ever seen in your life","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fwww.inc.com\u00252Fwalter-chen\u00252Fpok-mon-go-is-driving-insane-amounts-of-sales-at-small-local-businesses-here-s-h.html&h=0AQH76qxR&s=1&enc=AZPeGp9RV6xgmO8IJ7b6-l54PweT1SvXcMy-riyqyk7b8D_XJTeZB4ygHuSN3wvVARUuuAOegMhkKkup0KGeS94-","media":{"image":{"height":450,"src":"https:\/\/external.xx.fbcdn.net\/safe_image.php?d=AQCDr9LKzFIQfJFh&w=720&h=720&url=http\u00253A\u00252F\u00252Fwww.incimages.com\u00252Fuploaded_files\u00252Fimage\u00252F970x450\u00252FPokemon_Heroes_2003_03-cc_100058.jpg&cfs=1","width":450}}}]}},{"name":"SOA
|
287
|
-
Syllabus","message":"The syllabus for next semester''s \"Service Oriented
|
288
|
-
Architecture\" class is now online! Take a look and share it with your coder
|
289
|
-
friends who are dreaming of their first startup :)","updated_time":"2016-07-04T11:18:26+0000","created_time":"2016-07-04T06:48:44+0000","id":"150352985174571_480686308807902","attachments":{"data":[{"title":"SOA
|
290
|
-
Syllabus","description":"Institute of Service Science, National Tsing Hua
|
291
|
-
University\u000bService Oriented Architecture\u000bFall 2016 Course Duration:
|
292
|
-
Sep 2015 \u2013 Jan 2016\u000bClass Time: Mondays, 9:00am-12:00pm\u000b Instructor:
|
293
|
-
Soumya Ray (soumya.ray\u0040iss.nthu.edu.tw)\u000bAssistant: TBA (\u0040...
|
294
|
-
available on Slack) How do companies lik...","url":"http:\/\/www.facebook.com\/l.php?u=http\u00253A\u00252F\u00252Fbit.ly\u00252Fsoa-syllabus&h=BAQHN6LOh&s=1&enc=AZNGM5gYGMJrxsa388aIW6E8bK0oG-nn_SZUHKtOnATjOkd7hnXIZ_AAH7u4XMHeQP8FKRpOKGc6s1pUR8Tdypp3"}]}}],"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=1467631106&__paging_token=enc_AdC4X4Wv1EBK4kEN9Y5TOPvPUz3HmgdUXTs7mZCGDzKM0JowQrOJOd0aQmt9j99Ih4aTyPdgZCtSjfotx3noc8yN9dZB40l6MStprBctRTbTZCOQzAZDZD"}}}'
|
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:03:31 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
|
+
- '"4e166f8a8887862a60b4e7d00e4926bc8e68c944"'
|
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
|
+
- HuHg200BhIK
|
191
|
+
X-Fb-Rev:
|
192
|
+
- '2657702'
|
193
|
+
Vary:
|
194
|
+
- Accept-Encoding
|
195
|
+
X-Fb-Debug:
|
196
|
+
- oTJxL63LMtx0ut04qB4rgresNR4xsG9dTXlV8LdFypapfX/1H/d6c92lp5Z1x2S+n/Ym5GosJQdcyzE3/cDEmg==
|
197
|
+
Date:
|
198
|
+
- Wed, 02 Nov 2016 05:03:33 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=vAQFlXv1-&s=1&enc=AZOaHoHrjoGDpCkwjynUvRh9rJLxi5-fG7UwwwWibn_x53v_UZDG15911NZxUkxFc4LIgtn7clNIg48Z1VytT7RE","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"}'
|
295
208
|
http_version:
|
296
|
-
recorded_at:
|
209
|
+
recorded_at: Wed, 02 Nov 2016 05:03:32 GMT
|
297
210
|
recorded_with: VCR 3.0.3
|
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.
|
4
|
+
version: 0.2.0
|
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
|
+
date: 2016-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -150,6 +150,20 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0.42'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: codeclimate-test-reporter
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.6'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0.6'
|
153
167
|
description: Extracts feed, postings, and attachments from FB groups
|
154
168
|
email:
|
155
169
|
- adityautamawijaya@gmail.com
|
@@ -158,6 +172,7 @@ executables:
|
|
158
172
|
extensions: []
|
159
173
|
extra_rdoc_files: []
|
160
174
|
files:
|
175
|
+
- ".codeclimate.yml"
|
161
176
|
- ".gitignore"
|
162
177
|
- ".rubocop.yml"
|
163
178
|
- ".travis.yml"
|