fb_graph 0.0.8 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/VERSION +1 -1
  2. data/fb_graph.gemspec +63 -2
  3. data/lib/fb_graph/album.rb +6 -3
  4. data/lib/fb_graph/comment.rb +1 -1
  5. data/lib/fb_graph/connections/attending.rb +1 -5
  6. data/lib/fb_graph/connections/declined.rb +1 -5
  7. data/lib/fb_graph/connections/invited.rb +1 -5
  8. data/lib/fb_graph/connections/maybe.rb +1 -5
  9. data/lib/fb_graph/connections/members.rb +2 -6
  10. data/lib/fb_graph/connections/noreply.rb +1 -5
  11. data/lib/fb_graph/event.rb +19 -9
  12. data/lib/fb_graph/group.rb +1 -1
  13. data/lib/fb_graph/link.rb +1 -1
  14. data/lib/fb_graph/node.rb +26 -26
  15. data/lib/fb_graph/note.rb +2 -2
  16. data/lib/fb_graph/photo.rb +11 -8
  17. data/lib/fb_graph/post.rb +2 -2
  18. data/lib/fb_graph/status.rb +1 -1
  19. data/lib/fb_graph/tag.rb +1 -1
  20. data/lib/fb_graph/user.rb +3 -1
  21. data/lib/fb_graph/video.rb +2 -2
  22. data/lib/fb_graph.rb +11 -6
  23. data/spec/fake_json/albums/photos/matake_private.json +97 -0
  24. data/spec/fake_json/albums/photos/post_with_valid_access_token.json +1 -0
  25. data/spec/fake_json/events/attending/post_with_valid_access_token.json +1 -0
  26. data/spec/fake_json/events/attending/smartday_private.json +44 -0
  27. data/spec/fake_json/events/declined/post_with_valid_access_token.json +1 -0
  28. data/spec/fake_json/events/declined/smartday_private.json +720 -0
  29. data/spec/fake_json/events/invited/smartday_private.json +7092 -0
  30. data/spec/fake_json/events/maybe/post_with_valid_access_token.json +1 -0
  31. data/spec/fake_json/events/maybe/smartday_private.json +956 -0
  32. data/spec/fake_json/events/noreply/smartday_private.json +896 -0
  33. data/spec/fake_json/groups/members/emacs_private.json +1996 -0
  34. data/spec/fake_json/pages/notes/post_with_valid_access_token.json +1 -0
  35. data/spec/fake_json/posts/comments/post_with_invalid_access_token.json +1 -0
  36. data/spec/fake_json/posts/comments/post_with_valid_access_token.json +1 -0
  37. data/spec/fake_json/posts/comments/post_without_access_token.json +1 -0
  38. data/spec/fake_json/posts/likes/post_with_invalid_access_token.json +1 -0
  39. data/spec/fake_json/posts/likes/post_with_valid_access_token.json +1 -0
  40. data/spec/fake_json/posts/likes/post_without_access_token.json +1 -0
  41. data/spec/fake_json/users/albums/post_with_valid_access_token.json +1 -0
  42. data/spec/fake_json/users/events/post_with_valid_access_token.json +1 -0
  43. data/spec/fake_json/users/feed/post_with_invalid_access_token.json +1 -0
  44. data/spec/fake_json/users/feed/post_with_valid_access_token.json +1 -0
  45. data/spec/fake_json/users/feed/post_without_access_token.json +1 -0
  46. data/spec/fake_json/users/interests/matake_private.json +14 -0
  47. data/spec/fake_json/users/links/matake_private.json +221 -0
  48. data/spec/fake_json/users/links/post_with_valid_access_token.json +1 -0
  49. data/spec/fake_json/users/movies/matake_private.json +9 -0
  50. data/spec/fake_json/users/music/matake_private.json +34 -0
  51. data/spec/fake_json/users/notes/matake_private.json +308 -0
  52. data/spec/fake_json/users/television/matake_private.json +9 -0
  53. data/spec/fake_json/users/videos/kirk_private.json +41 -0
  54. data/spec/fb_graph/album_spec.rb +1 -1
  55. data/spec/fb_graph/collection_spec.rb +1 -1
  56. data/spec/fb_graph/comment_spec.rb +1 -1
  57. data/spec/fb_graph/connections/activities_spec.rb +2 -2
  58. data/spec/fb_graph/connections/albums_spec.rb +18 -2
  59. data/spec/fb_graph/connections/attending_spec.rb +24 -0
  60. data/spec/fb_graph/connections/comments_spec.rb +83 -0
  61. data/spec/fb_graph/connections/declined_spec.rb +24 -0
  62. data/spec/fb_graph/connections/events_spec.rb +20 -2
  63. data/spec/fb_graph/connections/feed_spec.rb +42 -2
  64. data/spec/fb_graph/connections/interests_spec.rb +14 -0
  65. data/spec/fb_graph/connections/invited_spec.rb +14 -0
  66. data/spec/fb_graph/connections/likes_spec.rb +2 -2
  67. data/spec/fb_graph/connections/links_spec.rb +32 -0
  68. data/spec/fb_graph/connections/maybe_spec.rb +24 -0
  69. data/spec/fb_graph/connections/members_spec.rb +14 -0
  70. data/spec/fb_graph/connections/movies_spec.rb +14 -0
  71. data/spec/fb_graph/connections/music_spec.rb +14 -0
  72. data/spec/fb_graph/connections/noreply_spec.rb +14 -0
  73. data/spec/fb_graph/connections/notes_spec.rb +31 -0
  74. data/spec/fb_graph/connections/photos_spec.rb +29 -0
  75. data/spec/fb_graph/connections/television_spec.rb +14 -0
  76. data/spec/fb_graph/connections/videos_spec.rb +14 -0
  77. data/spec/fb_graph/education_spec.rb +1 -1
  78. data/spec/fb_graph/event_spec.rb +1 -1
  79. data/spec/fb_graph/group_spec.rb +1 -1
  80. data/spec/fb_graph/link_spec.rb +1 -1
  81. data/spec/fb_graph/node_spec.rb +1 -1
  82. data/spec/fb_graph/note_spec.rb +1 -1
  83. data/spec/fb_graph/photo_spec.rb +1 -1
  84. data/spec/fb_graph/post_spec.rb +1 -1
  85. data/spec/fb_graph/status_spec.rb +1 -1
  86. data/spec/fb_graph/tag_spec.rb +1 -1
  87. data/spec/fb_graph/user_spec.rb +9 -0
  88. data/spec/fb_graph/venue_spec.rb +1 -1
  89. data/spec/fb_graph/video_spec.rb +1 -1
  90. data/spec/fb_graph/work_spec.rb +1 -1
  91. data/spec/helpers/fake_json_helper.rb +4 -2
  92. metadata +64 -3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.8
1
+ 0.1.0
data/fb_graph.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fb_graph}
8
- s.version = "0.0.8"
8
+ s.version = "0.1.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{2010-05-10}
12
+ s.date = %q{2010-05-11}
13
13
  s.description = %q{A Ruby wrapper for Facebook Graph API}
14
14
  s.email = %q{nov@matake.jp}
15
15
  s.extra_rdoc_files = [
@@ -75,24 +75,47 @@ Gem::Specification.new do |s|
75
75
  "lib/fb_graph/venue.rb",
76
76
  "lib/fb_graph/video.rb",
77
77
  "lib/fb_graph/work.rb",
78
+ "spec/fake_json/albums/photos/matake_private.json",
79
+ "spec/fake_json/albums/photos/post_with_valid_access_token.json",
80
+ "spec/fake_json/events/attending/post_with_valid_access_token.json",
81
+ "spec/fake_json/events/attending/smartday_private.json",
82
+ "spec/fake_json/events/declined/post_with_valid_access_token.json",
83
+ "spec/fake_json/events/declined/smartday_private.json",
84
+ "spec/fake_json/events/invited/smartday_private.json",
85
+ "spec/fake_json/events/maybe/post_with_valid_access_token.json",
86
+ "spec/fake_json/events/maybe/smartday_private.json",
87
+ "spec/fake_json/events/noreply/smartday_private.json",
88
+ "spec/fake_json/groups/members/emacs_private.json",
89
+ "spec/fake_json/pages/notes/post_with_valid_access_token.json",
78
90
  "spec/fake_json/pages/platform_private.json",
79
91
  "spec/fake_json/pages/platform_public.json",
80
92
  "spec/fake_json/pages/statuses/platform_private.json",
81
93
  "spec/fake_json/pages/statuses/platform_public.json",
94
+ "spec/fake_json/posts/comments/post_with_invalid_access_token.json",
95
+ "spec/fake_json/posts/comments/post_with_valid_access_token.json",
96
+ "spec/fake_json/posts/comments/post_without_access_token.json",
97
+ "spec/fake_json/posts/likes/post_with_invalid_access_token.json",
98
+ "spec/fake_json/posts/likes/post_with_valid_access_token.json",
99
+ "spec/fake_json/posts/likes/post_without_access_token.json",
82
100
  "spec/fake_json/posts/platform_private.json",
83
101
  "spec/fake_json/posts/platform_public.json",
84
102
  "spec/fake_json/users/activities/arjun_private.json",
85
103
  "spec/fake_json/users/activities/arjun_public.json",
86
104
  "spec/fake_json/users/albums/matake_private.json",
87
105
  "spec/fake_json/users/albums/matake_public.json",
106
+ "spec/fake_json/users/albums/post_with_valid_access_token.json",
88
107
  "spec/fake_json/users/arjun_private.json",
89
108
  "spec/fake_json/users/arjun_public.json",
90
109
  "spec/fake_json/users/books/matake_private.json",
91
110
  "spec/fake_json/users/books/matake_public.json",
92
111
  "spec/fake_json/users/events/matake_private.json",
93
112
  "spec/fake_json/users/events/matake_public.json",
113
+ "spec/fake_json/users/events/post_with_valid_access_token.json",
94
114
  "spec/fake_json/users/feed/arjun_private.json",
95
115
  "spec/fake_json/users/feed/arjun_public.json",
116
+ "spec/fake_json/users/feed/post_with_invalid_access_token.json",
117
+ "spec/fake_json/users/feed/post_with_valid_access_token.json",
118
+ "spec/fake_json/users/feed/post_without_access_token.json",
96
119
  "spec/fake_json/users/friends/arjun_private.json",
97
120
  "spec/fake_json/users/friends/arjun_public.json",
98
121
  "spec/fake_json/users/friends/me_private.json",
@@ -105,32 +128,55 @@ Gem::Specification.new do |s|
105
128
  "spec/fake_json/users/home/me_private_next.json",
106
129
  "spec/fake_json/users/home/me_private_previous.json",
107
130
  "spec/fake_json/users/home/me_public.json",
131
+ "spec/fake_json/users/interests/matake_private.json",
108
132
  "spec/fake_json/users/likes/arjun_private.json",
109
133
  "spec/fake_json/users/likes/arjun_public.json",
134
+ "spec/fake_json/users/links/matake_private.json",
135
+ "spec/fake_json/users/links/post_with_valid_access_token.json",
110
136
  "spec/fake_json/users/me_private.json",
111
137
  "spec/fake_json/users/me_public.json",
138
+ "spec/fake_json/users/movies/matake_private.json",
139
+ "spec/fake_json/users/music/matake_private.json",
140
+ "spec/fake_json/users/notes/matake_private.json",
112
141
  "spec/fake_json/users/posts/arjun_private.json",
113
142
  "spec/fake_json/users/posts/arjun_public.json",
114
143
  "spec/fake_json/users/statuses/arjun_private.json",
115
144
  "spec/fake_json/users/statuses/arjun_public.json",
116
145
  "spec/fake_json/users/tagged/arjun_private.json",
117
146
  "spec/fake_json/users/tagged/arjun_public.json",
147
+ "spec/fake_json/users/television/matake_private.json",
148
+ "spec/fake_json/users/videos/kirk_private.json",
118
149
  "spec/fb_graph/album_spec.rb",
119
150
  "spec/fb_graph/collection_spec.rb",
120
151
  "spec/fb_graph/comment_spec.rb",
121
152
  "spec/fb_graph/connections/activities_spec.rb",
122
153
  "spec/fb_graph/connections/albums_spec.rb",
154
+ "spec/fb_graph/connections/attending_spec.rb",
123
155
  "spec/fb_graph/connections/books_spec.rb",
156
+ "spec/fb_graph/connections/comments_spec.rb",
157
+ "spec/fb_graph/connections/declined_spec.rb",
124
158
  "spec/fb_graph/connections/events_spec.rb",
125
159
  "spec/fb_graph/connections/feed_spec.rb",
126
160
  "spec/fb_graph/connections/friends_spec.rb",
127
161
  "spec/fb_graph/connections/groups_spec.rb",
128
162
  "spec/fb_graph/connections/home_spec.rb",
163
+ "spec/fb_graph/connections/interests_spec.rb",
164
+ "spec/fb_graph/connections/invited_spec.rb",
129
165
  "spec/fb_graph/connections/likes_spec.rb",
166
+ "spec/fb_graph/connections/links_spec.rb",
167
+ "spec/fb_graph/connections/maybe_spec.rb",
168
+ "spec/fb_graph/connections/members_spec.rb",
169
+ "spec/fb_graph/connections/movies_spec.rb",
170
+ "spec/fb_graph/connections/music_spec.rb",
171
+ "spec/fb_graph/connections/noreply_spec.rb",
172
+ "spec/fb_graph/connections/notes_spec.rb",
173
+ "spec/fb_graph/connections/photos_spec.rb",
130
174
  "spec/fb_graph/connections/picture_spec.rb",
131
175
  "spec/fb_graph/connections/posts_spec.rb",
132
176
  "spec/fb_graph/connections/statuses_spec.rb",
133
177
  "spec/fb_graph/connections/tagged_spec.rb",
178
+ "spec/fb_graph/connections/television_spec.rb",
179
+ "spec/fb_graph/connections/videos_spec.rb",
134
180
  "spec/fb_graph/education_spec.rb",
135
181
  "spec/fb_graph/event_spec.rb",
136
182
  "spec/fb_graph/group_spec.rb",
@@ -162,17 +208,32 @@ Gem::Specification.new do |s|
162
208
  "spec/fb_graph/comment_spec.rb",
163
209
  "spec/fb_graph/connections/activities_spec.rb",
164
210
  "spec/fb_graph/connections/albums_spec.rb",
211
+ "spec/fb_graph/connections/attending_spec.rb",
165
212
  "spec/fb_graph/connections/books_spec.rb",
213
+ "spec/fb_graph/connections/comments_spec.rb",
214
+ "spec/fb_graph/connections/declined_spec.rb",
166
215
  "spec/fb_graph/connections/events_spec.rb",
167
216
  "spec/fb_graph/connections/feed_spec.rb",
168
217
  "spec/fb_graph/connections/friends_spec.rb",
169
218
  "spec/fb_graph/connections/groups_spec.rb",
170
219
  "spec/fb_graph/connections/home_spec.rb",
220
+ "spec/fb_graph/connections/interests_spec.rb",
221
+ "spec/fb_graph/connections/invited_spec.rb",
171
222
  "spec/fb_graph/connections/likes_spec.rb",
223
+ "spec/fb_graph/connections/links_spec.rb",
224
+ "spec/fb_graph/connections/maybe_spec.rb",
225
+ "spec/fb_graph/connections/members_spec.rb",
226
+ "spec/fb_graph/connections/movies_spec.rb",
227
+ "spec/fb_graph/connections/music_spec.rb",
228
+ "spec/fb_graph/connections/noreply_spec.rb",
229
+ "spec/fb_graph/connections/notes_spec.rb",
230
+ "spec/fb_graph/connections/photos_spec.rb",
172
231
  "spec/fb_graph/connections/picture_spec.rb",
173
232
  "spec/fb_graph/connections/posts_spec.rb",
174
233
  "spec/fb_graph/connections/statuses_spec.rb",
175
234
  "spec/fb_graph/connections/tagged_spec.rb",
235
+ "spec/fb_graph/connections/television_spec.rb",
236
+ "spec/fb_graph/connections/videos_spec.rb",
176
237
  "spec/fb_graph/education_spec.rb",
177
238
  "spec/fb_graph/event_spec.rb",
178
239
  "spec/fb_graph/group_spec.rb",
@@ -15,15 +15,18 @@ module FbGraph
15
15
  end
16
16
  end
17
17
  @name = options[:name]
18
- @description = options[:description]
18
+ # NOTE:
19
+ # for some reason, facebook uses different parameter names.
20
+ # "description" in GET & "message" in POST
21
+ @description = options[:description] || options[:message]
19
22
  @location = options[:location]
20
23
  @link = options[:link]
21
24
  @count = options[:count]
22
25
  if options[:created_time]
23
- @created_time = Time.parse(options[:created_time])
26
+ @created_time = Time.parse(options[:created_time]).utc
24
27
  end
25
28
  if options[:updated_time]
26
- @updated_time = Time.parse(options[:updated_time])
29
+ @updated_time = Time.parse(options[:updated_time]).utc
27
30
  end
28
31
  end
29
32
  end
@@ -13,7 +13,7 @@ module FbGraph
13
13
  end
14
14
  @message = options[:message]
15
15
  if options[:created_time]
16
- @created_time = Time.parse(options[:created_time])
16
+ @created_time = Time.parse(options[:created_time]).utc
17
17
  end
18
18
  end
19
19
  end
@@ -4,11 +4,7 @@ module FbGraph
4
4
  def attending(options = {})
5
5
  members = FbGraph::Collection.new(get(options.merge(:connection => 'attending')))
6
6
  members.map! do |member|
7
- if member[:category]
8
- Page.new(member.delete(:id), member)
9
- else
10
- User.new(member.delete(:id), member)
11
- end
7
+ User.new(member.delete(:id), member)
12
8
  end
13
9
  end
14
10
 
@@ -4,11 +4,7 @@ module FbGraph
4
4
  def declined(options = {})
5
5
  members = FbGraph::Collection.new(get(options.merge(:connection => 'declined')))
6
6
  members.map! do |member|
7
- if member[:category]
8
- Page.new(member.delete(:id), member)
9
- else
10
- User.new(member.delete(:id), member)
11
- end
7
+ User.new(member.delete(:id), member)
12
8
  end
13
9
  end
14
10
 
@@ -4,11 +4,7 @@ module FbGraph
4
4
  def invited(options = {})
5
5
  members = FbGraph::Collection.new(get(options.merge(:connection => 'invited')))
6
6
  members.map! do |member|
7
- if member[:category]
8
- Page.new(member.delete(:id), member)
9
- else
10
- User.new(member.delete(:id), member)
11
- end
7
+ User.new(member.delete(:id), member)
12
8
  end
13
9
  end
14
10
  end
@@ -4,11 +4,7 @@ module FbGraph
4
4
  def maybe(options = {})
5
5
  members = FbGraph::Collection.new(get(options.merge(:connection => 'maybe')))
6
6
  members.map! do |member|
7
- if member[:category]
8
- Page.new(member.delete(:id), member)
9
- else
10
- User.new(member.delete(:id), member)
11
- end
7
+ User.new(member.delete(:id), member)
12
8
  end
13
9
  end
14
10
 
@@ -3,12 +3,8 @@ module FbGraph
3
3
  module Members
4
4
  def members(options = {})
5
5
  members = FbGraph::Collection.new(get(options.merge(:connection => 'members')))
6
- member.map! do |member|
7
- if member[:category]
8
- Page.new(member.delete(:id), member)
9
- else
10
- User.new(member.delete(:id), member)
11
- end
6
+ members.map! do |member|
7
+ User.new(member.delete(:id), member)
12
8
  end
13
9
  end
14
10
  end
@@ -4,11 +4,7 @@ module FbGraph
4
4
  def noreply(options = {})
5
5
  members = FbGraph::Collection.new(get(options.merge(:connection => 'noreply')))
6
6
  members.map! do |member|
7
- if member[:category]
8
- Page.new(member.delete(:id), member)
9
- else
10
- User.new(member.delete(:id), member)
11
- end
7
+ User.new(member.delete(:id), member)
12
8
  end
13
9
  end
14
10
  end
@@ -15,21 +15,31 @@ module FbGraph
15
15
  if (owner = options[:owner])
16
16
  @owner = FbGraph::User.new(owner.delete(:id), owner)
17
17
  end
18
- @name = options[:name]
19
- @description = options[:description]
20
- if options[:start_time]
21
- @start_time = Time.parse(options[:start_time])
18
+ @name = options[:name]
19
+ @description = options[:description]
20
+ @location = options[:location]
21
+ @privacy = options[:privacy]
22
+ if (start_time = options[:start_time])
23
+ @start_time = case start_time
24
+ when String
25
+ Time.parse(start_time).utc
26
+ when Fixnum
27
+ Time.at(start_time).utc
28
+ end
22
29
  end
23
- if options[:end_time]
24
- @end_time = Time.parse(options[:end_time])
30
+ if (end_time = options[:end_time])
31
+ @end_time = case end_time
32
+ when String
33
+ Time.parse(end_time).utc
34
+ when Fixnum
35
+ Time.at(end_time).utc
36
+ end
25
37
  end
26
- @location = options[:location]
27
- @privacy = options[:privacy]
28
38
  if options[:venue]
29
39
  @venue = FbGraph::Venue.new(options[:venue])
30
40
  end
31
41
  if options[:updated_time]
32
- @updated_time = Time.parse(options[:updated_time])
42
+ @updated_time = Time.parse(options[:updated_time]).utc
33
43
  end
34
44
  end
35
45
  end
@@ -19,7 +19,7 @@ module FbGraph
19
19
  @venue = FbGraph::Venue.new(options[:venue])
20
20
  end
21
21
  if options[:updated_time]
22
- @updated_time = Time.parse(options[:updated_time])
22
+ @updated_time = Time.parse(options[:updated_time]).utc
23
23
  end
24
24
  end
25
25
  end
data/lib/fb_graph/link.rb CHANGED
@@ -16,7 +16,7 @@ module FbGraph
16
16
  @link = options[:link]
17
17
  @message = options[:message]
18
18
  if options[:updated_time]
19
- @updated_time = Time.parse(options[:updated_time])
19
+ @updated_time = Time.parse(options[:updated_time]).utc
20
20
  end
21
21
  end
22
22
  end
data/lib/fb_graph/node.rb CHANGED
@@ -27,52 +27,50 @@ module FbGraph
27
27
 
28
28
  protected
29
29
 
30
- def get(options = {})
31
- _endpoint_ = build_endpoint(options.merge!(:method => :get))
32
- handle_response RestClient.get(_endpoint_)
33
- rescue RestClient::Exception => e
34
- raise FbGraph::Exception.new(e.http_code, e.message, e.http_body)
30
+ def get(params = {})
31
+ _endpoint_ = build_endpoint(params.merge!(:method => :get))
32
+ handle_response do
33
+ RestClient.get(_endpoint_)
34
+ end
35
35
  end
36
36
 
37
- def post(options = {})
38
- _endpoint_ = build_endpoint(options.merge!(:method => :post))
39
- handle_response RestClient.post(_endpoint_, options)
40
-
41
- rescue RestClient::Exception => e
42
- raise FbGraph::Exception.new(e.http_code, e.message, e.http_body)
37
+ def post(params = {})
38
+ _endpoint_ = build_endpoint(params.merge!(:method => :post))
39
+ handle_response do
40
+ RestClient.post(_endpoint_, params)
41
+ end
43
42
  end
44
43
 
45
- def delete(options = {})
46
- _endpoint_ = build_endpoint(options.merge!(:method => :delete))
47
- handle_response RestClient.delete(_endpoint_, options)
48
- rescue RestClient::Exception => e
49
- raise FbGraph::Exception.new(e.http_code, e.message, e.http_body)
44
+ def delete(params = {})
45
+ _endpoint_ = build_endpoint(params.merge!(:method => :delete))
46
+ handle_response do
47
+ RestClient.delete(_endpoint_, params)
48
+ end
50
49
  end
51
50
 
52
51
  private
53
52
 
54
- def build_endpoint(options = {})
55
- _endpoint_ = if options[:connection]
56
- File.join(self.endpoint, options.delete(:connection))
53
+ def build_endpoint(params = {})
54
+ _endpoint_ = if params[:connection]
55
+ File.join(self.endpoint, params.delete(:connection))
57
56
  else
58
57
  self.endpoint
59
58
  end
60
- options[:access_token] ||= self.access_token
61
- options.delete_if do |k, v|
59
+ params[:access_token] ||= self.access_token
60
+ params.delete_if do |k, v|
62
61
  v.blank?
63
62
  end
64
- if options.delete(:method) == :get && options.present?
65
- _endpoint_ << "?#{options.to_query}"
63
+ if params.delete(:method) == :get && params.present?
64
+ _endpoint_ << "?#{params.to_query}"
66
65
  end
67
66
  _endpoint_
68
67
  end
69
68
 
70
- def handle_response(response)
69
+ def handle_response
70
+ response = yield
71
71
  case response.body
72
72
  when 'true'
73
73
  true
74
- when 'false'
75
- false
76
74
  else
77
75
  _response_ = JSON.parse(response.body).with_indifferent_access
78
76
  if _response_[:error]
@@ -88,6 +86,8 @@ module FbGraph
88
86
  _response_
89
87
  end
90
88
  end
89
+ rescue RestClient::Exception => e
90
+ raise FbGraph::Exception.new(e.http_code, e.message, e.http_body)
91
91
  end
92
92
  end
93
93
  end
data/lib/fb_graph/note.rb CHANGED
@@ -16,10 +16,10 @@ module FbGraph
16
16
  @subject = options[:subject]
17
17
  @message = options[:message]
18
18
  if options[:created_time]
19
- @created_time = Time.parse(options[:created_time])
19
+ @created_time = Time.parse(options[:created_time]).utc
20
20
  end
21
21
  if options[:updated_time]
22
- @updated_time = Time.parse(options[:updated_time])
22
+ @updated_time = Time.parse(options[:updated_time]).utc
23
23
  end
24
24
  end
25
25
  end
@@ -19,17 +19,20 @@ module FbGraph
19
19
  @tags << FbGraph::Tag.new(tag.delete(:id), tag)
20
20
  end
21
21
  end
22
- @name = options[:name]
23
- @picture = options[:picture]
24
- @source = options[:source]
25
- @height = options[:height]
26
- @width = options[:width]
27
- @link = options[:link]
22
+ # NOTE:
23
+ # for some reason, facebook uses different parameter names.
24
+ # "name" in GET & "message" in POST
25
+ @name = options[:name] || options[:message]
26
+ @picture = options[:picture]
27
+ @source = options[:source]
28
+ @height = options[:height]
29
+ @width = options[:width]
30
+ @link = options[:link]
28
31
  if options[:created_time]
29
- @created_time = Time.parse(options[:created_time])
32
+ @created_time = Time.parse(options[:created_time]).utc
30
33
  end
31
34
  if options[:updated_time]
32
- @updated_time = Time.parse(options[:updated_time])
35
+ @updated_time = Time.parse(options[:updated_time]).utc
33
36
  end
34
37
  end
35
38
  end
data/lib/fb_graph/post.rb CHANGED
@@ -35,10 +35,10 @@ module FbGraph
35
35
  @actions = options[:actions]
36
36
  @likes = options[:likes]
37
37
  if options[:created_time]
38
- @created_time = Time.parse(options[:created_time])
38
+ @created_time = Time.parse(options[:created_time]).utc
39
39
  end
40
40
  if options[:updated_time]
41
- @updated_time = Time.parse(options[:updated_time])
41
+ @updated_time = Time.parse(options[:updated_time]).utc
42
42
  end
43
43
 
44
44
  # cached connection
@@ -15,7 +15,7 @@ module FbGraph
15
15
  end
16
16
  @message = options[:message]
17
17
  if (updated_time = options.delete(:updated_time))
18
- @updated_time = Time.parse(updated_time)
18
+ @updated_time = Time.parse(updated_time).utc
19
19
  end
20
20
  end
21
21
  end
data/lib/fb_graph/tag.rb CHANGED
@@ -8,7 +8,7 @@ module FbGraph
8
8
  @x = options.delete(:x)
9
9
  @y = options.delete(:y)
10
10
  if (created_time = options.delete(:created_time))
11
- @created_time = Time.parse(created_time)
11
+ @created_time = Time.parse(created_time).utc
12
12
  end
13
13
  @user = User.new(identifier, options)
14
14
  end
data/lib/fb_graph/user.rb CHANGED
@@ -38,7 +38,9 @@ module FbGraph
38
38
  @about = options[:about]
39
39
  @email = options[:email]
40
40
  if options[:birthday]
41
- @birthday = Date.parse(options[:birthday])
41
+ month, day, year = options[:birthday].split('/').collect(&:to_i)
42
+ year ||= 0
43
+ @birthday = Date.new(year, month, day)
42
44
  end
43
45
  @work = []
44
46
  if options[:work]
@@ -17,10 +17,10 @@ module FbGraph
17
17
  @description = options[:description]
18
18
  @length = options[:length]
19
19
  if options[:created_time]
20
- @created_time = Time.parse(options[:created_time])
20
+ @created_time = Time.parse(options[:created_time]).utc
21
21
  end
22
22
  if options[:updated_time]
23
- @updated_time = Time.parse(options[:updated_time])
23
+ @updated_time = Time.parse(options[:updated_time]).utc
24
24
  end
25
25
  end
26
26
  end
data/lib/fb_graph.rb CHANGED
@@ -6,16 +6,21 @@ require 'restclient'
6
6
  module FbGraph
7
7
  ROOT_URL = "https://graph.facebook.com"
8
8
 
9
- class FbGraph::Exception < StandardError
10
- attr_accessor :code, :message, :body
9
+ class Exception < StandardError
10
+ attr_accessor :code, :type, :message
11
11
  def initialize(code, message, body = '')
12
12
  @code = code
13
- @message = message
14
- @body = body
13
+ if body.blank?
14
+ @message = message
15
+ else
16
+ response = JSON.parse(body).with_indifferent_access
17
+ @message = response[:error][:message]
18
+ @type = response[:error][:type]
19
+ end
15
20
  end
16
21
  end
17
- class FbGraph::Unauthorized < FbGraph::Exception; end
18
- class FbGraph::NotFound < FbGraph::Exception; end
22
+ class Unauthorized < FbGraph::Exception; end
23
+ class NotFound < FbGraph::Exception; end
19
24
 
20
25
  class << self
21
26
  def node(identifier, options = {})
@@ -0,0 +1,97 @@
1
+ {
2
+ "data": [
3
+ {
4
+ "id": "1257916083644",
5
+ "from": {
6
+ "name": "Miwa Nagamitsu",
7
+ "id": "1101885111"
8
+ },
9
+ "tags": {
10
+ "data": [
11
+ {
12
+ "id": "579612276",
13
+ "name": "Nov Matake",
14
+ "x": 58,
15
+ "y": 42,
16
+ "created_time": "2009-11-27T15:14:12+0000"
17
+ },
18
+ {
19
+ "id": "",
20
+ "name": "Kondo",
21
+ "x": 50,
22
+ "y": 8,
23
+ "created_time": "2009-11-27T15:14:20+0000"
24
+ },
25
+ {
26
+ "id": "",
27
+ "name": "Hiromi",
28
+ "x": 20,
29
+ "y": 6,
30
+ "created_time": "2009-11-27T15:14:41+0000"
31
+ }
32
+ ]
33
+ },
34
+ "name": "Kondo!!",
35
+ "picture": "http://photos-b.ak.fbcdn.net/hphotos-ak-snc3/hs063.snc3/13041_1257916083644_1101885111_822884_3913995_s.jpg",
36
+ "source": "http://sphotos.ak.fbcdn.net/hphotos-ak-sjc1/hs063.snc3/13041_1257916083644_1101885111_822884_3913995_n.jpg",
37
+ "height": 453,
38
+ "width": 604,
39
+ "link": "http://www.facebook.com/photo.php?pid=822884&id=1101885111",
40
+ "icon": "http://static.ak.fbcdn.net/rsrc.php/z2E5Y/hash/8as8iqdm.gif",
41
+ "created_time": "2009-11-27T14:54:46+0000",
42
+ "updated_time": "2009-11-27T14:54:48+0000"
43
+ },
44
+ {
45
+ "id": "1257914963616",
46
+ "from": {
47
+ "name": "Miwa Nagamitsu",
48
+ "id": "1101885111"
49
+ },
50
+ "tags": {
51
+ "data": [
52
+ {
53
+ "id": "",
54
+ "name": "Eric",
55
+ "x": 41,
56
+ "y": 14,
57
+ "created_time": "2009-11-27T15:11:02+0000"
58
+ },
59
+ {
60
+ "id": "",
61
+ "name": "Hiromi",
62
+ "x": 68,
63
+ "y": 34,
64
+ "created_time": "2009-11-27T15:11:42+0000"
65
+ },
66
+ {
67
+ "id": "",
68
+ "name": "Kondo",
69
+ "x": 88,
70
+ "y": 55,
71
+ "created_time": "2009-11-27T15:11:50+0000"
72
+ },
73
+ {
74
+ "id": "579612276",
75
+ "name": "Nov Matake",
76
+ "x": 49,
77
+ "y": 67,
78
+ "created_time": "2009-11-27T15:11:59+0000"
79
+ }
80
+ ]
81
+ },
82
+ "name": "Otsukare party!",
83
+ "picture": "http://photos-g.ak.fbcdn.net/hphotos-ak-snc3/hs043.snc3/13041_1257914963616_1101885111_822881_5331358_s.jpg",
84
+ "source": "http://sphotos.ak.fbcdn.net/hphotos-ak-snc3/hs043.snc3/13041_1257914963616_1101885111_822881_5331358_n.jpg",
85
+ "height": 453,
86
+ "width": 604,
87
+ "link": "http://www.facebook.com/photo.php?pid=822881&id=1101885111",
88
+ "icon": "http://static.ak.fbcdn.net/rsrc.php/z2E5Y/hash/8as8iqdm.gif",
89
+ "created_time": "2009-11-27T14:52:44+0000",
90
+ "updated_time": "2009-11-27T14:52:44+0000"
91
+ }
92
+ ],
93
+ "paging": {
94
+ "previous": "https://graph.facebook.com/579612276/photos?access_token=2227470867%7C2.RCvMPAuqsf2uaQr7YizV2Q__.3600.1273557600-579612276%7CwzBo6c2HKRjURbEaVGt0F2kNRbQ.&limit=25&since=2009-11-27T14%3A54%3A46%2B0000",
95
+ "next": "https://graph.facebook.com/579612276/photos?access_token=2227470867%7C2.RCvMPAuqsf2uaQr7YizV2Q__.3600.1273557600-579612276%7CwzBo6c2HKRjURbEaVGt0F2kNRbQ.&limit=25&until=2009-11-27T14%3A52%3A44%2B0000"
96
+ }
97
+ }
@@ -0,0 +1 @@
1
+ {"id":401111132276}