facegroups 0.1.0 → 0.2.0
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.
- 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
|
-
[](https://badge.fury.io/rb/
|
4
|
-
[](https://travis-ci.org/aditya-utama-wijaya/
|
3
|
+
[](https://badge.fury.io/rb/facegroups)
|
4
|
+
[](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"
|