fb_graph 1.4.1 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.1
1
+ 1.5.0
data/fb_graph.gemspec CHANGED
@@ -1,396 +1,397 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fb_graph}
8
- s.version = "1.4.1"
8
+ s.version = "1.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["nov matake"]
12
- s.date = %q{2011-02-23}
12
+ s.date = %q{2011-02-27}
13
13
  s.description = %q{A full-stack Facebook Graph API wrapper in Ruby.}
14
14
  s.email = %q{nov@matake.jp}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.rdoc"
17
+ "README.rdoc"
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
21
- ".gitignore",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "assets/fb_graph.ai",
27
- "assets/fb_graph.png",
28
- "fb_graph.gemspec",
29
- "lib/cert",
30
- "lib/fb_graph.rb",
31
- "lib/fb_graph/action.rb",
32
- "lib/fb_graph/album.rb",
33
- "lib/fb_graph/app_request.rb",
34
- "lib/fb_graph/application.rb",
35
- "lib/fb_graph/auth.rb",
36
- "lib/fb_graph/auth/cookie.rb",
37
- "lib/fb_graph/checkin.rb",
38
- "lib/fb_graph/collection.rb",
39
- "lib/fb_graph/comment.rb",
40
- "lib/fb_graph/comparison.rb",
41
- "lib/fb_graph/connection.rb",
42
- "lib/fb_graph/connections.rb",
43
- "lib/fb_graph/connections/accounts.rb",
44
- "lib/fb_graph/connections/activities.rb",
45
- "lib/fb_graph/connections/albums.rb",
46
- "lib/fb_graph/connections/app_requests.rb",
47
- "lib/fb_graph/connections/attending.rb",
48
- "lib/fb_graph/connections/books.rb",
49
- "lib/fb_graph/connections/checkins.rb",
50
- "lib/fb_graph/connections/comments.rb",
51
- "lib/fb_graph/connections/declined.rb",
52
- "lib/fb_graph/connections/events.rb",
53
- "lib/fb_graph/connections/feed.rb",
54
- "lib/fb_graph/connections/former_participants.rb",
55
- "lib/fb_graph/connections/friend_lists.rb",
56
- "lib/fb_graph/connections/friends.rb",
57
- "lib/fb_graph/connections/games.rb",
58
- "lib/fb_graph/connections/groups.rb",
59
- "lib/fb_graph/connections/home.rb",
60
- "lib/fb_graph/connections/insights.rb",
61
- "lib/fb_graph/connections/interests.rb",
62
- "lib/fb_graph/connections/invited.rb",
63
- "lib/fb_graph/connections/likes.rb",
64
- "lib/fb_graph/connections/links.rb",
65
- "lib/fb_graph/connections/maybe.rb",
66
- "lib/fb_graph/connections/members.rb",
67
- "lib/fb_graph/connections/messages.rb",
68
- "lib/fb_graph/connections/movies.rb",
69
- "lib/fb_graph/connections/music.rb",
70
- "lib/fb_graph/connections/noreply.rb",
71
- "lib/fb_graph/connections/notes.rb",
72
- "lib/fb_graph/connections/participants.rb",
73
- "lib/fb_graph/connections/photos.rb",
74
- "lib/fb_graph/connections/picture.rb",
75
- "lib/fb_graph/connections/posts.rb",
76
- "lib/fb_graph/connections/senders.rb",
77
- "lib/fb_graph/connections/statuses.rb",
78
- "lib/fb_graph/connections/subscriptions.rb",
79
- "lib/fb_graph/connections/tagged.rb",
80
- "lib/fb_graph/connections/television.rb",
81
- "lib/fb_graph/connections/test_users.rb",
82
- "lib/fb_graph/connections/threads.rb",
83
- "lib/fb_graph/connections/videos.rb",
84
- "lib/fb_graph/education.rb",
85
- "lib/fb_graph/event.rb",
86
- "lib/fb_graph/friend_list.rb",
87
- "lib/fb_graph/group.rb",
88
- "lib/fb_graph/insight.rb",
89
- "lib/fb_graph/link.rb",
90
- "lib/fb_graph/location.rb",
91
- "lib/fb_graph/message.rb",
92
- "lib/fb_graph/node.rb",
93
- "lib/fb_graph/note.rb",
94
- "lib/fb_graph/page.rb",
95
- "lib/fb_graph/photo.rb",
96
- "lib/fb_graph/place.rb",
97
- "lib/fb_graph/post.rb",
98
- "lib/fb_graph/privacy.rb",
99
- "lib/fb_graph/project.rb",
100
- "lib/fb_graph/query.rb",
101
- "lib/fb_graph/searchable.rb",
102
- "lib/fb_graph/searchable/result.rb",
103
- "lib/fb_graph/serialization.rb",
104
- "lib/fb_graph/status.rb",
105
- "lib/fb_graph/subscription.rb",
106
- "lib/fb_graph/tag.rb",
107
- "lib/fb_graph/targeting.rb",
108
- "lib/fb_graph/test_user.rb",
109
- "lib/fb_graph/thread.rb",
110
- "lib/fb_graph/user.rb",
111
- "lib/fb_graph/venue.rb",
112
- "lib/fb_graph/video.rb",
113
- "lib/fb_graph/work.rb",
114
- "lib/restclient_with_ssl_support.rb",
115
- "spec/fake_json/albums/photos/matake_private.json",
116
- "spec/fake_json/albums/photos/post_with_valid_access_token.json",
117
- "spec/fake_json/applications/subscriptions/fb_graph_private.json",
118
- "spec/fake_json/applications/test_users/created.json",
119
- "spec/fake_json/applications/test_users/private.json",
120
- "spec/fake_json/checkins/search_private.json",
121
- "spec/fake_json/checkins/search_public.json",
122
- "spec/fake_json/events/attending/post_with_valid_access_token.json",
123
- "spec/fake_json/events/attending/smartday_private.json",
124
- "spec/fake_json/events/declined/post_with_valid_access_token.json",
125
- "spec/fake_json/events/declined/smartday_private.json",
126
- "spec/fake_json/events/invited/smartday_private.json",
127
- "spec/fake_json/events/maybe/post_with_valid_access_token.json",
128
- "spec/fake_json/events/maybe/smartday_private.json",
129
- "spec/fake_json/events/noreply/smartday_private.json",
130
- "spec/fake_json/groups/members/emacs_private.json",
131
- "spec/fake_json/pages/checkins/gowalla_private.json",
132
- "spec/fake_json/pages/checkins/gowalla_public.json",
133
- "spec/fake_json/pages/insights/FbGraph_private.json",
134
- "spec/fake_json/pages/insights/FbGraph_public.json",
135
- "spec/fake_json/pages/insights/page_like_adds/FbGraph_private.json",
136
- "spec/fake_json/pages/insights/page_like_adds/day/FbGraph_private.json",
137
- "spec/fake_json/pages/notes/post_with_valid_access_token.json",
138
- "spec/fake_json/pages/platform_private.json",
139
- "spec/fake_json/pages/platform_public.json",
140
- "spec/fake_json/pages/search_fb_graph.json",
141
- "spec/fake_json/pages/search_google.json",
142
- "spec/fake_json/pages/statuses/platform_private.json",
143
- "spec/fake_json/pages/statuses/platform_public.json",
144
- "spec/fake_json/posts/comments/post_with_invalid_access_token.json",
145
- "spec/fake_json/posts/comments/post_with_valid_access_token.json",
146
- "spec/fake_json/posts/comments/post_without_access_token.json",
147
- "spec/fake_json/posts/likes/post_with_invalid_access_token.json",
148
- "spec/fake_json/posts/likes/post_with_valid_access_token.json",
149
- "spec/fake_json/posts/likes/post_without_access_token.json",
150
- "spec/fake_json/posts/no_comments.json",
151
- "spec/fake_json/posts/platform_private.json",
152
- "spec/fake_json/posts/platform_public.json",
153
- "spec/fake_json/query/user/with_invalid_token.json",
154
- "spec/fake_json/query/user/with_valid_token.json",
155
- "spec/fake_json/query/user/without_token.json",
156
- "spec/fake_json/statuses/with_likes.json",
157
- "spec/fake_json/thread/former_participants/private.json",
158
- "spec/fake_json/thread/messages/private.json",
159
- "spec/fake_json/thread/participants/private.json",
160
- "spec/fake_json/thread/senders/private.json",
161
- "spec/fake_json/token_response.json",
162
- "spec/fake_json/true.json",
163
- "spec/fake_json/users/accounts/matake_private.json",
164
- "spec/fake_json/users/accounts/matake_private_with_manage_pages_permission.json",
165
- "spec/fake_json/users/accounts/matake_public.json",
166
- "spec/fake_json/users/activities/arjun_private.json",
167
- "spec/fake_json/users/activities/arjun_public.json",
168
- "spec/fake_json/users/albums/matake_private.json",
169
- "spec/fake_json/users/albums/matake_public.json",
170
- "spec/fake_json/users/albums/post_with_valid_access_token.json",
171
- "spec/fake_json/users/app_requests/me_private.json",
172
- "spec/fake_json/users/arjun_private.json",
173
- "spec/fake_json/users/arjun_public.json",
174
- "spec/fake_json/users/books/matake_private.json",
175
- "spec/fake_json/users/books/matake_public.json",
176
- "spec/fake_json/users/checkins/mattt_private.json",
177
- "spec/fake_json/users/checkins/mattt_public.json",
178
- "spec/fake_json/users/checkins/posted.json",
179
- "spec/fake_json/users/events/matake_private.json",
180
- "spec/fake_json/users/events/matake_public.json",
181
- "spec/fake_json/users/events/post_with_valid_access_token.json",
182
- "spec/fake_json/users/feed/arjun_private.json",
183
- "spec/fake_json/users/feed/arjun_public.json",
184
- "spec/fake_json/users/feed/post_with_invalid_access_token.json",
185
- "spec/fake_json/users/feed/post_with_valid_access_token.json",
186
- "spec/fake_json/users/feed/post_without_access_token.json",
187
- "spec/fake_json/users/friend_lists/matake.json",
188
- "spec/fake_json/users/friends/arjun_private.json",
189
- "spec/fake_json/users/friends/arjun_public.json",
190
- "spec/fake_json/users/friends/me_private.json",
191
- "spec/fake_json/users/friends/me_public.json",
192
- "spec/fake_json/users/games/matake_private.json",
193
- "spec/fake_json/users/groups/matake_private.json",
194
- "spec/fake_json/users/groups/matake_public.json",
195
- "spec/fake_json/users/home/arjun_private.json",
196
- "spec/fake_json/users/home/arjun_public.json",
197
- "spec/fake_json/users/home/me_private.json",
198
- "spec/fake_json/users/home/me_private_next.json",
199
- "spec/fake_json/users/home/me_private_previous.json",
200
- "spec/fake_json/users/home/me_public.json",
201
- "spec/fake_json/users/interests/matake_private.json",
202
- "spec/fake_json/users/likes/arjun_private.json",
203
- "spec/fake_json/users/likes/arjun_public.json",
204
- "spec/fake_json/users/links/matake_private.json",
205
- "spec/fake_json/users/links/post_with_valid_access_token.json",
206
- "spec/fake_json/users/me_private.json",
207
- "spec/fake_json/users/me_public.json",
208
- "spec/fake_json/users/movies/matake_private.json",
209
- "spec/fake_json/users/music/matake_private.json",
210
- "spec/fake_json/users/notes/matake_private.json",
211
- "spec/fake_json/users/posts/arjun_private.json",
212
- "spec/fake_json/users/posts/arjun_public.json",
213
- "spec/fake_json/users/statuses/arjun_private.json",
214
- "spec/fake_json/users/statuses/arjun_public.json",
215
- "spec/fake_json/users/tagged/arjun_private.json",
216
- "spec/fake_json/users/tagged/arjun_public.json",
217
- "spec/fake_json/users/television/matake_private.json",
218
- "spec/fake_json/users/threads/me_private.json",
219
- "spec/fake_json/users/videos/kirk_private.json",
220
- "spec/fb_graph/album_spec.rb",
221
- "spec/fb_graph/app_request_spec.rb",
222
- "spec/fb_graph/application_spec.rb",
223
- "spec/fb_graph/auth/cookie_spec.rb",
224
- "spec/fb_graph/auth_spec.rb",
225
- "spec/fb_graph/checkin_spec.rb",
226
- "spec/fb_graph/collection_spec.rb",
227
- "spec/fb_graph/comment_spec.rb",
228
- "spec/fb_graph/connection_spec.rb",
229
- "spec/fb_graph/connections/accounts_spec.rb",
230
- "spec/fb_graph/connections/activities_spec.rb",
231
- "spec/fb_graph/connections/albums_spec.rb",
232
- "spec/fb_graph/connections/app_requests_spec.rb",
233
- "spec/fb_graph/connections/attending_spec.rb",
234
- "spec/fb_graph/connections/books_spec.rb",
235
- "spec/fb_graph/connections/checkins_spec.rb",
236
- "spec/fb_graph/connections/comments_spec.rb",
237
- "spec/fb_graph/connections/declined_spec.rb",
238
- "spec/fb_graph/connections/events_spec.rb",
239
- "spec/fb_graph/connections/feed_spec.rb",
240
- "spec/fb_graph/connections/former_participants_spec.rb",
241
- "spec/fb_graph/connections/friend_lists_spec.rb",
242
- "spec/fb_graph/connections/friends_spec.rb",
243
- "spec/fb_graph/connections/games_spec.rb",
244
- "spec/fb_graph/connections/groups_spec.rb",
245
- "spec/fb_graph/connections/home_spec.rb",
246
- "spec/fb_graph/connections/insights_spec.rb",
247
- "spec/fb_graph/connections/interests_spec.rb",
248
- "spec/fb_graph/connections/invited_spec.rb",
249
- "spec/fb_graph/connections/likes_spec.rb",
250
- "spec/fb_graph/connections/links_spec.rb",
251
- "spec/fb_graph/connections/maybe_spec.rb",
252
- "spec/fb_graph/connections/members_spec.rb",
253
- "spec/fb_graph/connections/messages_spec.rb",
254
- "spec/fb_graph/connections/movies_spec.rb",
255
- "spec/fb_graph/connections/music_spec.rb",
256
- "spec/fb_graph/connections/noreply_spec.rb",
257
- "spec/fb_graph/connections/notes_spec.rb",
258
- "spec/fb_graph/connections/participants_spec.rb",
259
- "spec/fb_graph/connections/photos_spec.rb",
260
- "spec/fb_graph/connections/picture_spec.rb",
261
- "spec/fb_graph/connections/posts_spec.rb",
262
- "spec/fb_graph/connections/senders_spec.rb",
263
- "spec/fb_graph/connections/statuses_spec.rb",
264
- "spec/fb_graph/connections/subscriptions_spec.rb",
265
- "spec/fb_graph/connections/tagged_spec.rb",
266
- "spec/fb_graph/connections/television_spec.rb",
267
- "spec/fb_graph/connections/test_users_spec.rb",
268
- "spec/fb_graph/connections/threads_spec.rb",
269
- "spec/fb_graph/connections/videos_spec.rb",
270
- "spec/fb_graph/education_spec.rb",
271
- "spec/fb_graph/event_spec.rb",
272
- "spec/fb_graph/exception_spec.rb",
273
- "spec/fb_graph/friend_list_spec.rb",
274
- "spec/fb_graph/group_spec.rb",
275
- "spec/fb_graph/insight_spec.rb",
276
- "spec/fb_graph/link_spec.rb",
277
- "spec/fb_graph/location_spec.rb",
278
- "spec/fb_graph/message_spec.rb",
279
- "spec/fb_graph/node_spec.rb",
280
- "spec/fb_graph/note_spec.rb",
281
- "spec/fb_graph/page_spec.rb",
282
- "spec/fb_graph/photo_spec.rb",
283
- "spec/fb_graph/place_spec.rb",
284
- "spec/fb_graph/post_spec.rb",
285
- "spec/fb_graph/privacy_spec.rb",
286
- "spec/fb_graph/project_spec.rb",
287
- "spec/fb_graph/query/core_spec.rb",
288
- "spec/fb_graph/searchable_spec.rb",
289
- "spec/fb_graph/seriarization_spec.rb",
290
- "spec/fb_graph/status_spec.rb",
291
- "spec/fb_graph/subscription_spec.rb",
292
- "spec/fb_graph/tag_spec.rb",
293
- "spec/fb_graph/targeting_spec.rb",
294
- "spec/fb_graph/test_user_spec.rb",
295
- "spec/fb_graph/thread_spec.rb",
296
- "spec/fb_graph/user_spec.rb",
297
- "spec/fb_graph/venue_spec.rb",
298
- "spec/fb_graph/video_spec.rb",
299
- "spec/fb_graph/work_spec.rb",
300
- "spec/helpers/fake_json_helper.rb",
301
- "spec/restclient_with_ssl_support_spec.rb",
302
- "spec/spec.opts",
303
- "spec/spec_helper.rb"
21
+ "LICENSE",
22
+ "README.rdoc",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "assets/fb_graph.ai",
26
+ "assets/fb_graph.png",
27
+ "fb_graph.gemspec",
28
+ "lib/cert",
29
+ "lib/fb_graph.rb",
30
+ "lib/fb_graph/action.rb",
31
+ "lib/fb_graph/album.rb",
32
+ "lib/fb_graph/app_request.rb",
33
+ "lib/fb_graph/application.rb",
34
+ "lib/fb_graph/auth.rb",
35
+ "lib/fb_graph/auth/cookie.rb",
36
+ "lib/fb_graph/auth/signed_request.rb",
37
+ "lib/fb_graph/checkin.rb",
38
+ "lib/fb_graph/collection.rb",
39
+ "lib/fb_graph/comment.rb",
40
+ "lib/fb_graph/comparison.rb",
41
+ "lib/fb_graph/connection.rb",
42
+ "lib/fb_graph/connections.rb",
43
+ "lib/fb_graph/connections/accounts.rb",
44
+ "lib/fb_graph/connections/activities.rb",
45
+ "lib/fb_graph/connections/albums.rb",
46
+ "lib/fb_graph/connections/app_requests.rb",
47
+ "lib/fb_graph/connections/attending.rb",
48
+ "lib/fb_graph/connections/books.rb",
49
+ "lib/fb_graph/connections/checkins.rb",
50
+ "lib/fb_graph/connections/comments.rb",
51
+ "lib/fb_graph/connections/declined.rb",
52
+ "lib/fb_graph/connections/events.rb",
53
+ "lib/fb_graph/connections/feed.rb",
54
+ "lib/fb_graph/connections/former_participants.rb",
55
+ "lib/fb_graph/connections/friend_lists.rb",
56
+ "lib/fb_graph/connections/friends.rb",
57
+ "lib/fb_graph/connections/games.rb",
58
+ "lib/fb_graph/connections/groups.rb",
59
+ "lib/fb_graph/connections/home.rb",
60
+ "lib/fb_graph/connections/insights.rb",
61
+ "lib/fb_graph/connections/interests.rb",
62
+ "lib/fb_graph/connections/invited.rb",
63
+ "lib/fb_graph/connections/likes.rb",
64
+ "lib/fb_graph/connections/links.rb",
65
+ "lib/fb_graph/connections/maybe.rb",
66
+ "lib/fb_graph/connections/members.rb",
67
+ "lib/fb_graph/connections/messages.rb",
68
+ "lib/fb_graph/connections/movies.rb",
69
+ "lib/fb_graph/connections/music.rb",
70
+ "lib/fb_graph/connections/noreply.rb",
71
+ "lib/fb_graph/connections/notes.rb",
72
+ "lib/fb_graph/connections/participants.rb",
73
+ "lib/fb_graph/connections/photos.rb",
74
+ "lib/fb_graph/connections/picture.rb",
75
+ "lib/fb_graph/connections/posts.rb",
76
+ "lib/fb_graph/connections/senders.rb",
77
+ "lib/fb_graph/connections/statuses.rb",
78
+ "lib/fb_graph/connections/subscriptions.rb",
79
+ "lib/fb_graph/connections/tagged.rb",
80
+ "lib/fb_graph/connections/television.rb",
81
+ "lib/fb_graph/connections/test_users.rb",
82
+ "lib/fb_graph/connections/threads.rb",
83
+ "lib/fb_graph/connections/videos.rb",
84
+ "lib/fb_graph/education.rb",
85
+ "lib/fb_graph/event.rb",
86
+ "lib/fb_graph/friend_list.rb",
87
+ "lib/fb_graph/group.rb",
88
+ "lib/fb_graph/insight.rb",
89
+ "lib/fb_graph/link.rb",
90
+ "lib/fb_graph/location.rb",
91
+ "lib/fb_graph/message.rb",
92
+ "lib/fb_graph/node.rb",
93
+ "lib/fb_graph/note.rb",
94
+ "lib/fb_graph/page.rb",
95
+ "lib/fb_graph/photo.rb",
96
+ "lib/fb_graph/place.rb",
97
+ "lib/fb_graph/post.rb",
98
+ "lib/fb_graph/privacy.rb",
99
+ "lib/fb_graph/project.rb",
100
+ "lib/fb_graph/query.rb",
101
+ "lib/fb_graph/searchable.rb",
102
+ "lib/fb_graph/searchable/result.rb",
103
+ "lib/fb_graph/serialization.rb",
104
+ "lib/fb_graph/status.rb",
105
+ "lib/fb_graph/subscription.rb",
106
+ "lib/fb_graph/tag.rb",
107
+ "lib/fb_graph/targeting.rb",
108
+ "lib/fb_graph/test_user.rb",
109
+ "lib/fb_graph/thread.rb",
110
+ "lib/fb_graph/user.rb",
111
+ "lib/fb_graph/venue.rb",
112
+ "lib/fb_graph/video.rb",
113
+ "lib/fb_graph/work.rb",
114
+ "lib/restclient_with_ssl_support.rb",
115
+ "spec/fake_json/albums/photos/matake_private.json",
116
+ "spec/fake_json/albums/photos/post_with_valid_access_token.json",
117
+ "spec/fake_json/applications/subscriptions/fb_graph_private.json",
118
+ "spec/fake_json/applications/test_users/created.json",
119
+ "spec/fake_json/applications/test_users/private.json",
120
+ "spec/fake_json/checkins/search_private.json",
121
+ "spec/fake_json/checkins/search_public.json",
122
+ "spec/fake_json/events/attending/post_with_valid_access_token.json",
123
+ "spec/fake_json/events/attending/smartday_private.json",
124
+ "spec/fake_json/events/declined/post_with_valid_access_token.json",
125
+ "spec/fake_json/events/declined/smartday_private.json",
126
+ "spec/fake_json/events/invited/smartday_private.json",
127
+ "spec/fake_json/events/maybe/post_with_valid_access_token.json",
128
+ "spec/fake_json/events/maybe/smartday_private.json",
129
+ "spec/fake_json/events/noreply/smartday_private.json",
130
+ "spec/fake_json/groups/members/emacs_private.json",
131
+ "spec/fake_json/pages/checkins/gowalla_private.json",
132
+ "spec/fake_json/pages/checkins/gowalla_public.json",
133
+ "spec/fake_json/pages/insights/FbGraph_private.json",
134
+ "spec/fake_json/pages/insights/FbGraph_public.json",
135
+ "spec/fake_json/pages/insights/page_like_adds/FbGraph_private.json",
136
+ "spec/fake_json/pages/insights/page_like_adds/day/FbGraph_private.json",
137
+ "spec/fake_json/pages/notes/post_with_valid_access_token.json",
138
+ "spec/fake_json/pages/platform_private.json",
139
+ "spec/fake_json/pages/platform_public.json",
140
+ "spec/fake_json/pages/search_fb_graph.json",
141
+ "spec/fake_json/pages/search_google.json",
142
+ "spec/fake_json/pages/statuses/platform_private.json",
143
+ "spec/fake_json/pages/statuses/platform_public.json",
144
+ "spec/fake_json/posts/comments/post_with_invalid_access_token.json",
145
+ "spec/fake_json/posts/comments/post_with_valid_access_token.json",
146
+ "spec/fake_json/posts/comments/post_without_access_token.json",
147
+ "spec/fake_json/posts/likes/post_with_invalid_access_token.json",
148
+ "spec/fake_json/posts/likes/post_with_valid_access_token.json",
149
+ "spec/fake_json/posts/likes/post_without_access_token.json",
150
+ "spec/fake_json/posts/no_comments.json",
151
+ "spec/fake_json/posts/platform_private.json",
152
+ "spec/fake_json/posts/platform_public.json",
153
+ "spec/fake_json/query/user/with_invalid_token.json",
154
+ "spec/fake_json/query/user/with_valid_token.json",
155
+ "spec/fake_json/query/user/without_token.json",
156
+ "spec/fake_json/statuses/with_likes.json",
157
+ "spec/fake_json/thread/former_participants/private.json",
158
+ "spec/fake_json/thread/messages/private.json",
159
+ "spec/fake_json/thread/participants/private.json",
160
+ "spec/fake_json/thread/senders/private.json",
161
+ "spec/fake_json/token_response.json",
162
+ "spec/fake_json/true.json",
163
+ "spec/fake_json/users/accounts/matake_private.json",
164
+ "spec/fake_json/users/accounts/matake_private_with_manage_pages_permission.json",
165
+ "spec/fake_json/users/accounts/matake_public.json",
166
+ "spec/fake_json/users/activities/arjun_private.json",
167
+ "spec/fake_json/users/activities/arjun_public.json",
168
+ "spec/fake_json/users/albums/matake_private.json",
169
+ "spec/fake_json/users/albums/matake_public.json",
170
+ "spec/fake_json/users/albums/post_with_valid_access_token.json",
171
+ "spec/fake_json/users/app_requests/me_private.json",
172
+ "spec/fake_json/users/arjun_private.json",
173
+ "spec/fake_json/users/arjun_public.json",
174
+ "spec/fake_json/users/books/matake_private.json",
175
+ "spec/fake_json/users/books/matake_public.json",
176
+ "spec/fake_json/users/checkins/mattt_private.json",
177
+ "spec/fake_json/users/checkins/mattt_public.json",
178
+ "spec/fake_json/users/checkins/posted.json",
179
+ "spec/fake_json/users/events/matake_private.json",
180
+ "spec/fake_json/users/events/matake_public.json",
181
+ "spec/fake_json/users/events/post_with_valid_access_token.json",
182
+ "spec/fake_json/users/feed/arjun_private.json",
183
+ "spec/fake_json/users/feed/arjun_public.json",
184
+ "spec/fake_json/users/feed/post_with_invalid_access_token.json",
185
+ "spec/fake_json/users/feed/post_with_valid_access_token.json",
186
+ "spec/fake_json/users/feed/post_without_access_token.json",
187
+ "spec/fake_json/users/friend_lists/matake.json",
188
+ "spec/fake_json/users/friends/arjun_private.json",
189
+ "spec/fake_json/users/friends/arjun_public.json",
190
+ "spec/fake_json/users/friends/me_private.json",
191
+ "spec/fake_json/users/friends/me_public.json",
192
+ "spec/fake_json/users/games/matake_private.json",
193
+ "spec/fake_json/users/groups/matake_private.json",
194
+ "spec/fake_json/users/groups/matake_public.json",
195
+ "spec/fake_json/users/home/arjun_private.json",
196
+ "spec/fake_json/users/home/arjun_public.json",
197
+ "spec/fake_json/users/home/me_private.json",
198
+ "spec/fake_json/users/home/me_private_next.json",
199
+ "spec/fake_json/users/home/me_private_previous.json",
200
+ "spec/fake_json/users/home/me_public.json",
201
+ "spec/fake_json/users/interests/matake_private.json",
202
+ "spec/fake_json/users/likes/arjun_private.json",
203
+ "spec/fake_json/users/likes/arjun_public.json",
204
+ "spec/fake_json/users/links/matake_private.json",
205
+ "spec/fake_json/users/links/post_with_valid_access_token.json",
206
+ "spec/fake_json/users/me_private.json",
207
+ "spec/fake_json/users/me_public.json",
208
+ "spec/fake_json/users/movies/matake_private.json",
209
+ "spec/fake_json/users/music/matake_private.json",
210
+ "spec/fake_json/users/notes/matake_private.json",
211
+ "spec/fake_json/users/posts/arjun_private.json",
212
+ "spec/fake_json/users/posts/arjun_public.json",
213
+ "spec/fake_json/users/statuses/arjun_private.json",
214
+ "spec/fake_json/users/statuses/arjun_public.json",
215
+ "spec/fake_json/users/tagged/arjun_private.json",
216
+ "spec/fake_json/users/tagged/arjun_public.json",
217
+ "spec/fake_json/users/television/matake_private.json",
218
+ "spec/fake_json/users/threads/me_private.json",
219
+ "spec/fake_json/users/videos/kirk_private.json",
220
+ "spec/fb_graph/album_spec.rb",
221
+ "spec/fb_graph/app_request_spec.rb",
222
+ "spec/fb_graph/application_spec.rb",
223
+ "spec/fb_graph/auth/cookie_spec.rb",
224
+ "spec/fb_graph/auth/signed_request_spec.rb",
225
+ "spec/fb_graph/auth_spec.rb",
226
+ "spec/fb_graph/checkin_spec.rb",
227
+ "spec/fb_graph/collection_spec.rb",
228
+ "spec/fb_graph/comment_spec.rb",
229
+ "spec/fb_graph/connection_spec.rb",
230
+ "spec/fb_graph/connections/accounts_spec.rb",
231
+ "spec/fb_graph/connections/activities_spec.rb",
232
+ "spec/fb_graph/connections/albums_spec.rb",
233
+ "spec/fb_graph/connections/app_requests_spec.rb",
234
+ "spec/fb_graph/connections/attending_spec.rb",
235
+ "spec/fb_graph/connections/books_spec.rb",
236
+ "spec/fb_graph/connections/checkins_spec.rb",
237
+ "spec/fb_graph/connections/comments_spec.rb",
238
+ "spec/fb_graph/connections/declined_spec.rb",
239
+ "spec/fb_graph/connections/events_spec.rb",
240
+ "spec/fb_graph/connections/feed_spec.rb",
241
+ "spec/fb_graph/connections/former_participants_spec.rb",
242
+ "spec/fb_graph/connections/friend_lists_spec.rb",
243
+ "spec/fb_graph/connections/friends_spec.rb",
244
+ "spec/fb_graph/connections/games_spec.rb",
245
+ "spec/fb_graph/connections/groups_spec.rb",
246
+ "spec/fb_graph/connections/home_spec.rb",
247
+ "spec/fb_graph/connections/insights_spec.rb",
248
+ "spec/fb_graph/connections/interests_spec.rb",
249
+ "spec/fb_graph/connections/invited_spec.rb",
250
+ "spec/fb_graph/connections/likes_spec.rb",
251
+ "spec/fb_graph/connections/links_spec.rb",
252
+ "spec/fb_graph/connections/maybe_spec.rb",
253
+ "spec/fb_graph/connections/members_spec.rb",
254
+ "spec/fb_graph/connections/messages_spec.rb",
255
+ "spec/fb_graph/connections/movies_spec.rb",
256
+ "spec/fb_graph/connections/music_spec.rb",
257
+ "spec/fb_graph/connections/noreply_spec.rb",
258
+ "spec/fb_graph/connections/notes_spec.rb",
259
+ "spec/fb_graph/connections/participants_spec.rb",
260
+ "spec/fb_graph/connections/photos_spec.rb",
261
+ "spec/fb_graph/connections/picture_spec.rb",
262
+ "spec/fb_graph/connections/posts_spec.rb",
263
+ "spec/fb_graph/connections/senders_spec.rb",
264
+ "spec/fb_graph/connections/statuses_spec.rb",
265
+ "spec/fb_graph/connections/subscriptions_spec.rb",
266
+ "spec/fb_graph/connections/tagged_spec.rb",
267
+ "spec/fb_graph/connections/television_spec.rb",
268
+ "spec/fb_graph/connections/test_users_spec.rb",
269
+ "spec/fb_graph/connections/threads_spec.rb",
270
+ "spec/fb_graph/connections/videos_spec.rb",
271
+ "spec/fb_graph/education_spec.rb",
272
+ "spec/fb_graph/event_spec.rb",
273
+ "spec/fb_graph/exception_spec.rb",
274
+ "spec/fb_graph/friend_list_spec.rb",
275
+ "spec/fb_graph/group_spec.rb",
276
+ "spec/fb_graph/insight_spec.rb",
277
+ "spec/fb_graph/link_spec.rb",
278
+ "spec/fb_graph/location_spec.rb",
279
+ "spec/fb_graph/message_spec.rb",
280
+ "spec/fb_graph/node_spec.rb",
281
+ "spec/fb_graph/note_spec.rb",
282
+ "spec/fb_graph/page_spec.rb",
283
+ "spec/fb_graph/photo_spec.rb",
284
+ "spec/fb_graph/place_spec.rb",
285
+ "spec/fb_graph/post_spec.rb",
286
+ "spec/fb_graph/privacy_spec.rb",
287
+ "spec/fb_graph/project_spec.rb",
288
+ "spec/fb_graph/query/core_spec.rb",
289
+ "spec/fb_graph/searchable_spec.rb",
290
+ "spec/fb_graph/seriarization_spec.rb",
291
+ "spec/fb_graph/status_spec.rb",
292
+ "spec/fb_graph/subscription_spec.rb",
293
+ "spec/fb_graph/tag_spec.rb",
294
+ "spec/fb_graph/targeting_spec.rb",
295
+ "spec/fb_graph/test_user_spec.rb",
296
+ "spec/fb_graph/thread_spec.rb",
297
+ "spec/fb_graph/user_spec.rb",
298
+ "spec/fb_graph/venue_spec.rb",
299
+ "spec/fb_graph/video_spec.rb",
300
+ "spec/fb_graph/work_spec.rb",
301
+ "spec/helpers/fake_json_helper.rb",
302
+ "spec/restclient_with_ssl_support_spec.rb",
303
+ "spec/spec.opts",
304
+ "spec/spec_helper.rb"
304
305
  ]
305
306
  s.homepage = %q{http://github.com/nov/fb_graph}
306
- s.rdoc_options = ["--charset=UTF-8"]
307
307
  s.require_paths = ["lib"]
308
- s.rubygems_version = %q{1.5.2}
308
+ s.rubygems_version = %q{1.5.3}
309
309
  s.summary = %q{A full-stack Facebook Graph API wrapper in Ruby.}
310
310
  s.test_files = [
311
311
  "spec/fb_graph/album_spec.rb",
312
- "spec/fb_graph/app_request_spec.rb",
313
- "spec/fb_graph/application_spec.rb",
314
- "spec/fb_graph/auth/cookie_spec.rb",
315
- "spec/fb_graph/auth_spec.rb",
316
- "spec/fb_graph/checkin_spec.rb",
317
- "spec/fb_graph/collection_spec.rb",
318
- "spec/fb_graph/comment_spec.rb",
319
- "spec/fb_graph/connection_spec.rb",
320
- "spec/fb_graph/connections/accounts_spec.rb",
321
- "spec/fb_graph/connections/activities_spec.rb",
322
- "spec/fb_graph/connections/albums_spec.rb",
323
- "spec/fb_graph/connections/app_requests_spec.rb",
324
- "spec/fb_graph/connections/attending_spec.rb",
325
- "spec/fb_graph/connections/books_spec.rb",
326
- "spec/fb_graph/connections/checkins_spec.rb",
327
- "spec/fb_graph/connections/comments_spec.rb",
328
- "spec/fb_graph/connections/declined_spec.rb",
329
- "spec/fb_graph/connections/events_spec.rb",
330
- "spec/fb_graph/connections/feed_spec.rb",
331
- "spec/fb_graph/connections/former_participants_spec.rb",
332
- "spec/fb_graph/connections/friend_lists_spec.rb",
333
- "spec/fb_graph/connections/friends_spec.rb",
334
- "spec/fb_graph/connections/games_spec.rb",
335
- "spec/fb_graph/connections/groups_spec.rb",
336
- "spec/fb_graph/connections/home_spec.rb",
337
- "spec/fb_graph/connections/insights_spec.rb",
338
- "spec/fb_graph/connections/interests_spec.rb",
339
- "spec/fb_graph/connections/invited_spec.rb",
340
- "spec/fb_graph/connections/likes_spec.rb",
341
- "spec/fb_graph/connections/links_spec.rb",
342
- "spec/fb_graph/connections/maybe_spec.rb",
343
- "spec/fb_graph/connections/members_spec.rb",
344
- "spec/fb_graph/connections/messages_spec.rb",
345
- "spec/fb_graph/connections/movies_spec.rb",
346
- "spec/fb_graph/connections/music_spec.rb",
347
- "spec/fb_graph/connections/noreply_spec.rb",
348
- "spec/fb_graph/connections/notes_spec.rb",
349
- "spec/fb_graph/connections/participants_spec.rb",
350
- "spec/fb_graph/connections/photos_spec.rb",
351
- "spec/fb_graph/connections/picture_spec.rb",
352
- "spec/fb_graph/connections/posts_spec.rb",
353
- "spec/fb_graph/connections/senders_spec.rb",
354
- "spec/fb_graph/connections/statuses_spec.rb",
355
- "spec/fb_graph/connections/subscriptions_spec.rb",
356
- "spec/fb_graph/connections/tagged_spec.rb",
357
- "spec/fb_graph/connections/television_spec.rb",
358
- "spec/fb_graph/connections/test_users_spec.rb",
359
- "spec/fb_graph/connections/threads_spec.rb",
360
- "spec/fb_graph/connections/videos_spec.rb",
361
- "spec/fb_graph/education_spec.rb",
362
- "spec/fb_graph/event_spec.rb",
363
- "spec/fb_graph/exception_spec.rb",
364
- "spec/fb_graph/friend_list_spec.rb",
365
- "spec/fb_graph/group_spec.rb",
366
- "spec/fb_graph/insight_spec.rb",
367
- "spec/fb_graph/link_spec.rb",
368
- "spec/fb_graph/location_spec.rb",
369
- "spec/fb_graph/message_spec.rb",
370
- "spec/fb_graph/node_spec.rb",
371
- "spec/fb_graph/note_spec.rb",
372
- "spec/fb_graph/page_spec.rb",
373
- "spec/fb_graph/photo_spec.rb",
374
- "spec/fb_graph/place_spec.rb",
375
- "spec/fb_graph/post_spec.rb",
376
- "spec/fb_graph/privacy_spec.rb",
377
- "spec/fb_graph/project_spec.rb",
378
- "spec/fb_graph/query/core_spec.rb",
379
- "spec/fb_graph/searchable_spec.rb",
380
- "spec/fb_graph/seriarization_spec.rb",
381
- "spec/fb_graph/status_spec.rb",
382
- "spec/fb_graph/subscription_spec.rb",
383
- "spec/fb_graph/tag_spec.rb",
384
- "spec/fb_graph/targeting_spec.rb",
385
- "spec/fb_graph/test_user_spec.rb",
386
- "spec/fb_graph/thread_spec.rb",
387
- "spec/fb_graph/user_spec.rb",
388
- "spec/fb_graph/venue_spec.rb",
389
- "spec/fb_graph/video_spec.rb",
390
- "spec/fb_graph/work_spec.rb",
391
- "spec/helpers/fake_json_helper.rb",
392
- "spec/restclient_with_ssl_support_spec.rb",
393
- "spec/spec_helper.rb"
312
+ "spec/fb_graph/app_request_spec.rb",
313
+ "spec/fb_graph/application_spec.rb",
314
+ "spec/fb_graph/auth/cookie_spec.rb",
315
+ "spec/fb_graph/auth/signed_request_spec.rb",
316
+ "spec/fb_graph/auth_spec.rb",
317
+ "spec/fb_graph/checkin_spec.rb",
318
+ "spec/fb_graph/collection_spec.rb",
319
+ "spec/fb_graph/comment_spec.rb",
320
+ "spec/fb_graph/connection_spec.rb",
321
+ "spec/fb_graph/connections/accounts_spec.rb",
322
+ "spec/fb_graph/connections/activities_spec.rb",
323
+ "spec/fb_graph/connections/albums_spec.rb",
324
+ "spec/fb_graph/connections/app_requests_spec.rb",
325
+ "spec/fb_graph/connections/attending_spec.rb",
326
+ "spec/fb_graph/connections/books_spec.rb",
327
+ "spec/fb_graph/connections/checkins_spec.rb",
328
+ "spec/fb_graph/connections/comments_spec.rb",
329
+ "spec/fb_graph/connections/declined_spec.rb",
330
+ "spec/fb_graph/connections/events_spec.rb",
331
+ "spec/fb_graph/connections/feed_spec.rb",
332
+ "spec/fb_graph/connections/former_participants_spec.rb",
333
+ "spec/fb_graph/connections/friend_lists_spec.rb",
334
+ "spec/fb_graph/connections/friends_spec.rb",
335
+ "spec/fb_graph/connections/games_spec.rb",
336
+ "spec/fb_graph/connections/groups_spec.rb",
337
+ "spec/fb_graph/connections/home_spec.rb",
338
+ "spec/fb_graph/connections/insights_spec.rb",
339
+ "spec/fb_graph/connections/interests_spec.rb",
340
+ "spec/fb_graph/connections/invited_spec.rb",
341
+ "spec/fb_graph/connections/likes_spec.rb",
342
+ "spec/fb_graph/connections/links_spec.rb",
343
+ "spec/fb_graph/connections/maybe_spec.rb",
344
+ "spec/fb_graph/connections/members_spec.rb",
345
+ "spec/fb_graph/connections/messages_spec.rb",
346
+ "spec/fb_graph/connections/movies_spec.rb",
347
+ "spec/fb_graph/connections/music_spec.rb",
348
+ "spec/fb_graph/connections/noreply_spec.rb",
349
+ "spec/fb_graph/connections/notes_spec.rb",
350
+ "spec/fb_graph/connections/participants_spec.rb",
351
+ "spec/fb_graph/connections/photos_spec.rb",
352
+ "spec/fb_graph/connections/picture_spec.rb",
353
+ "spec/fb_graph/connections/posts_spec.rb",
354
+ "spec/fb_graph/connections/senders_spec.rb",
355
+ "spec/fb_graph/connections/statuses_spec.rb",
356
+ "spec/fb_graph/connections/subscriptions_spec.rb",
357
+ "spec/fb_graph/connections/tagged_spec.rb",
358
+ "spec/fb_graph/connections/television_spec.rb",
359
+ "spec/fb_graph/connections/test_users_spec.rb",
360
+ "spec/fb_graph/connections/threads_spec.rb",
361
+ "spec/fb_graph/connections/videos_spec.rb",
362
+ "spec/fb_graph/education_spec.rb",
363
+ "spec/fb_graph/event_spec.rb",
364
+ "spec/fb_graph/exception_spec.rb",
365
+ "spec/fb_graph/friend_list_spec.rb",
366
+ "spec/fb_graph/group_spec.rb",
367
+ "spec/fb_graph/insight_spec.rb",
368
+ "spec/fb_graph/link_spec.rb",
369
+ "spec/fb_graph/location_spec.rb",
370
+ "spec/fb_graph/message_spec.rb",
371
+ "spec/fb_graph/node_spec.rb",
372
+ "spec/fb_graph/note_spec.rb",
373
+ "spec/fb_graph/page_spec.rb",
374
+ "spec/fb_graph/photo_spec.rb",
375
+ "spec/fb_graph/place_spec.rb",
376
+ "spec/fb_graph/post_spec.rb",
377
+ "spec/fb_graph/privacy_spec.rb",
378
+ "spec/fb_graph/project_spec.rb",
379
+ "spec/fb_graph/query/core_spec.rb",
380
+ "spec/fb_graph/searchable_spec.rb",
381
+ "spec/fb_graph/seriarization_spec.rb",
382
+ "spec/fb_graph/status_spec.rb",
383
+ "spec/fb_graph/subscription_spec.rb",
384
+ "spec/fb_graph/tag_spec.rb",
385
+ "spec/fb_graph/targeting_spec.rb",
386
+ "spec/fb_graph/test_user_spec.rb",
387
+ "spec/fb_graph/thread_spec.rb",
388
+ "spec/fb_graph/user_spec.rb",
389
+ "spec/fb_graph/venue_spec.rb",
390
+ "spec/fb_graph/video_spec.rb",
391
+ "spec/fb_graph/work_spec.rb",
392
+ "spec/helpers/fake_json_helper.rb",
393
+ "spec/restclient_with_ssl_support_spec.rb",
394
+ "spec/spec_helper.rb"
394
395
  ]
395
396
 
396
397
  if s.respond_to? :specification_version then
@@ -0,0 +1,35 @@
1
+ require 'base64'
2
+ require 'hmac/sha2'
3
+
4
+ module FbGraph
5
+ class Auth
6
+ class SignedRequest
7
+ def self.verify(client, signed_request)
8
+ signature, payload = signed_request.split('.')
9
+ raise VerificationFailed.new(401, 'No Signature') if signature.blank?
10
+ raise VerificationFailed.new(401, 'No Payload') if payload.blank?
11
+ signature = base64_url_decode signature
12
+ data = decode_json base64_url_decode(payload)
13
+ raise VerificationFailed.new(401, 'Unexpected Signature Algorithm') unless data[:algorithm] == 'HMAC-SHA256'
14
+ _signature_ = HMAC::SHA256.digest(client.secret, payload)
15
+ raise VerificationFailed.new(401, 'Signature Invalid') unless signature == _signature_
16
+ data
17
+ end
18
+
19
+ private
20
+
21
+ def self.decode_json(json)
22
+ JSON.parse(json).with_indifferent_access
23
+ rescue => e
24
+ p e
25
+ raise VerificationFailed.new(400, 'Invalid JSON')
26
+ end
27
+
28
+ def self.base64_url_decode(str)
29
+ str += '=' * (4 - str.length.modulo(4))
30
+ str = str.gsub('-', '+').gsub('_', '/')
31
+ Base64.decode64 str
32
+ end
33
+ end
34
+ end
35
+ end
data/lib/fb_graph/auth.rb CHANGED
@@ -23,26 +23,42 @@ module FbGraph
23
23
  @client = OAuth2::Client.new(client_id, client_secret, options.merge(
24
24
  :site => ROOT_URL
25
25
  ))
26
- if options[:cookie].present?
27
- from_cookie(options[:cookie])
26
+ if options[:cookie]
27
+ from_cookie options[:cookie]
28
+ elsif options[:signed_request]
29
+ from_signed_request options[:signed_request]
28
30
  end
29
31
  end
30
32
 
31
33
  def from_cookie(cookie)
32
- cookie = Auth::Cookie.parse(self.client, cookie)
33
- expires_in = unless cookie[:expires].zero?
34
- cookie[:expires] - Time.now.to_i
34
+ data = Cookie.parse(self.client, cookie)
35
+ self.access_token = build_access_token(data)
36
+ self.user = User.new(data[:uid], :access_token => self.access_token)
37
+ self
38
+ end
39
+
40
+ def from_signed_request(signed_request)
41
+ data = SignedRequest.verify(self.client, signed_request)
42
+ self.access_token = build_access_token(data)
43
+ self.user = User.new(data[:user_id], data[:user].merge(:access_token => self.access_token))
44
+ self
45
+ end
46
+
47
+ private
48
+
49
+ def build_access_token(data)
50
+ expires_in = unless data[:expires].zero?
51
+ data[:expires] - Time.now.to_i
35
52
  end
36
- self.access_token = OAuth2::AccessToken.new(
53
+ OAuth2::AccessToken.new(
37
54
  self.client,
38
- cookie[:access_token],
39
- cookie[:refresh_token],
55
+ data[:oauth_token] || data[:access_token],
56
+ nil,
40
57
  expires_in
41
58
  )
42
- self.user = User.new(cookie[:uid], :access_token => self.access_token)
43
- self
44
59
  end
45
60
  end
46
61
  end
47
62
 
48
- require 'fb_graph/auth/cookie'
63
+ require 'fb_graph/auth/cookie'
64
+ require 'fb_graph/auth/signed_request'
data/lib/fb_graph/user.rb CHANGED
@@ -29,7 +29,7 @@ module FbGraph
29
29
  include Connections::Videos
30
30
  extend Searchable
31
31
 
32
- attr_accessor :first_name, :last_name, :name, :link, :about, :birthday, :work, :education, :email, :website, :websites, :hometown, :location, :bio, :quotes, :gender, :interested_in, :meeting_for, :relationship_status, :religion, :political, :verified, :significant_other, :timezone, :updated_time, :sports, :favorite_teams, :favorite_athletes, :inspirational_people, :locale, :languages, :third_party_id, :address, :mobile_phone
32
+ attr_accessor :first_name, :last_name, :name, :link, :about, :birthday, :work, :education, :email, :website, :websites, :hometown, :location, :bio, :quotes, :gender, :interested_in, :meeting_for, :relationship_status, :religion, :political, :verified, :significant_other, :timezone, :updated_time, :sports, :favorite_teams, :favorite_athletes, :inspirational_people, :locale, :languages, :third_party_id, :address, :mobile_phone, :age, :country
33
33
 
34
34
  def initialize(identifier, attributes = {})
35
35
  super
@@ -116,6 +116,8 @@ module FbGraph
116
116
  @address = Venue.new(attributes[:address])
117
117
  end
118
118
  @mobile_phone = attributes[:mobile_phone]
119
+ @age = attributes[:age]
120
+ @country = attributes[:country]
119
121
  end
120
122
 
121
123
  def self.me(access_token)
@@ -0,0 +1,22 @@
1
+ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
+
3
+ describe FbGraph::Auth::SignedRequest, '.parse' do
4
+ before do
5
+ @client = OAuth2::Client.new('client_id', 'client_secret')
6
+ @signed_request = "LqsgnfcsRdfjOgyW6ZuSLpGBVsxUBegEqai4EcrWS0A=.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjAsImlzc3VlZF9hdCI6MTI5ODc4MzczOSwib2F1dGhfdG9rZW4iOiIxMzQxNDU2NDMyOTQzMjJ8MmI4YTZmOTc1NTJjNmRjZWQyMDU4MTBiLTU3OTYxMjI3NnxGS1o0akdKZ0JwN2k3bFlrOVhhUk1QZ3lhNnMiLCJ1c2VyIjp7ImNvdW50cnkiOiJqcCIsImxvY2FsZSI6ImVuX1VTIiwiYWdlIjp7Im1pbiI6MjF9fSwidXNlcl9pZCI6IjU3OTYxMjI3NiJ9"
7
+ end
8
+
9
+ it 'should verify signature and return data' do
10
+ data = FbGraph::Auth::SignedRequest.verify(@client, @signed_request)
11
+ data[:expires].should == 0
12
+ data[:algorithm].should == 'HMAC-SHA256'
13
+ data[:user_id].should == '579612276'
14
+ data[:oauth_token].should == '134145643294322|2b8a6f97552c6dced205810b-579612276|FKZ4jGJgBp7i7lYk9XaRMPgya6s'
15
+ data[:issued_at].should == 1298783739
16
+ data[:user][:country].should == 'jp'
17
+ data[:user][:locale].should == 'en_US'
18
+ data[:user][:age][:min].should == 21
19
+ end
20
+ end
21
+
22
+
@@ -1,11 +1,10 @@
1
1
  require File.join(File.dirname(__FILE__), '../spec_helper')
2
2
 
3
3
  describe FbGraph::Auth, '.new' do
4
-
5
4
  it 'should setup OAuth2::Client' do
6
5
  auth = FbGraph::Auth.new('client_id', 'client_secret')
7
6
  auth.client.should be_a(OAuth2::Client)
8
- auth.client.id.should == 'client_id'
7
+ auth.client.id.should == 'client_id'
9
8
  auth.client.secret.should == 'client_secret'
10
9
  end
11
10
 
@@ -17,6 +16,13 @@ describe FbGraph::Auth, '.new' do
17
16
  end
18
17
  end
19
18
 
19
+ context 'when invalid cookie given' do
20
+ it 'should raise FbGraph::VerificationFailed' do
21
+ lambda do
22
+ FbGraph::Auth.new('client_id', 'client_secret', :signed_request => 'invalid')
23
+ end.should raise_exception(FbGraph::Auth::VerificationFailed)
24
+ end
25
+ end
20
26
  end
21
27
 
22
28
  describe FbGraph::Auth, '.from_cookie' do
@@ -46,5 +52,31 @@ describe FbGraph::Auth, '.from_cookie' do
46
52
  end.should raise_exception(FbGraph::Auth::VerificationFailed)
47
53
  end
48
54
  end
55
+ end
49
56
 
57
+ describe FbGraph::Auth, '.from_signed_request' do
58
+ before do
59
+ @signed_request = "LqsgnfcsRdfjOgyW6ZuSLpGBVsxUBegEqai4EcrWS0A=.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjAsImlzc3VlZF9hdCI6MTI5ODc4MzczOSwib2F1dGhfdG9rZW4iOiIxMzQxNDU2NDMyOTQzMjJ8MmI4YTZmOTc1NTJjNmRjZWQyMDU4MTBiLTU3OTYxMjI3NnxGS1o0akdKZ0JwN2k3bFlrOVhhUk1QZ3lhNnMiLCJ1c2VyIjp7ImNvdW50cnkiOiJqcCIsImxvY2FsZSI6ImVuX1VTIiwiYWdlIjp7Im1pbiI6MjF9fSwidXNlcl9pZCI6IjU3OTYxMjI3NiJ9"
60
+ @auth = FbGraph::Auth.new('client_id', 'client_secret')
61
+ end
62
+
63
+ it 'should fetch user and access_token from signed_request' do
64
+ @auth.access_token.should be_nil
65
+ @auth.user.should be_nil
66
+ @auth.from_signed_request(@signed_request)
67
+ @auth.access_token.token.should == '134145643294322|2b8a6f97552c6dced205810b-579612276|FKZ4jGJgBp7i7lYk9XaRMPgya6s'
68
+ @auth.user.identifier.should == '579612276'
69
+ @auth.user.access_token.token.should == '134145643294322|2b8a6f97552c6dced205810b-579612276|FKZ4jGJgBp7i7lYk9XaRMPgya6s'
70
+ @auth.user.locale.should == 'en_US'
71
+ @auth.user.country.should == 'jp'
72
+ @auth.user.age[:min].should == 21
73
+ end
74
+
75
+ context 'when invalid signed_request given' do
76
+ it 'should raise FbGraph::VerificationFailed' do
77
+ lambda do
78
+ @auth.from_signed_request('invalid.signed_request')
79
+ end.should raise_exception(FbGraph::Auth::VerificationFailed)
80
+ end
81
+ end
50
82
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fb_graph
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 4
9
- - 1
10
- version: 1.4.1
8
+ - 5
9
+ - 0
10
+ version: 1.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - nov matake
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-23 00:00:00 +09:00
18
+ date: 2011-02-27 00:00:00 +09:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -136,7 +136,6 @@ extra_rdoc_files:
136
136
  - README.rdoc
137
137
  files:
138
138
  - .document
139
- - .gitignore
140
139
  - LICENSE
141
140
  - README.rdoc
142
141
  - Rakefile
@@ -152,6 +151,7 @@ files:
152
151
  - lib/fb_graph/application.rb
153
152
  - lib/fb_graph/auth.rb
154
153
  - lib/fb_graph/auth/cookie.rb
154
+ - lib/fb_graph/auth/signed_request.rb
155
155
  - lib/fb_graph/checkin.rb
156
156
  - lib/fb_graph/collection.rb
157
157
  - lib/fb_graph/comment.rb
@@ -339,6 +339,7 @@ files:
339
339
  - spec/fb_graph/app_request_spec.rb
340
340
  - spec/fb_graph/application_spec.rb
341
341
  - spec/fb_graph/auth/cookie_spec.rb
342
+ - spec/fb_graph/auth/signed_request_spec.rb
342
343
  - spec/fb_graph/auth_spec.rb
343
344
  - spec/fb_graph/checkin_spec.rb
344
345
  - spec/fb_graph/collection_spec.rb
@@ -424,8 +425,8 @@ homepage: http://github.com/nov/fb_graph
424
425
  licenses: []
425
426
 
426
427
  post_install_message:
427
- rdoc_options:
428
- - --charset=UTF-8
428
+ rdoc_options: []
429
+
429
430
  require_paths:
430
431
  - lib
431
432
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -449,7 +450,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
449
450
  requirements: []
450
451
 
451
452
  rubyforge_project:
452
- rubygems_version: 1.5.2
453
+ rubygems_version: 1.5.3
453
454
  signing_key:
454
455
  specification_version: 3
455
456
  summary: A full-stack Facebook Graph API wrapper in Ruby.
@@ -458,6 +459,7 @@ test_files:
458
459
  - spec/fb_graph/app_request_spec.rb
459
460
  - spec/fb_graph/application_spec.rb
460
461
  - spec/fb_graph/auth/cookie_spec.rb
462
+ - spec/fb_graph/auth/signed_request_spec.rb
461
463
  - spec/fb_graph/auth_spec.rb
462
464
  - spec/fb_graph/checkin_spec.rb
463
465
  - spec/fb_graph/collection_spec.rb
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC