diff --git a/lib/fb_graph2/achievement.rb b/lib/fb_graph2/achievement.rb index e4c87d7..5c4b772 100644 --- a/lib/fb_graph2/achievement.rb +++ b/lib/fb_graph2/achievement.rb @@ -1,5 +1,8 @@ module FbGraph2 class Achievement < Node + include Edge::Comments + include Edge::Likes::LikeeContext + register_attributes( raw: [:type, :no_feed_story], time: [:publish_time], diff --git a/lib/fb_graph2/album.rb b/lib/fb_graph2/album.rb index 1dc3752..1d400d9 100644 --- a/lib/fb_graph2/album.rb +++ b/lib/fb_graph2/album.rb @@ -1,5 +1,11 @@ module FbGraph2 class Album < Node + include Edge::Comments + include Edge::Likes::LikeeContext + include Edge::Picture + include Edge::Photos + include Edge::SharedPosts + register_attributes( raw: [:can_upload, :count, :cover_photo, :description, :link, :location, :name, :privacy, :type], time: [:created_time, :updated_time], diff --git a/lib/fb_graph2/comment.rb b/lib/fb_graph2/comment.rb new file mode 100644 index 0000000..d011952 --- /dev/null +++ b/lib/fb_graph2/comment.rb @@ -0,0 +1,15 @@ +module FbGraph2 + class Comment < Node + register_attributes( + raw: [:can_comment, :can_remove, :comment_count, :like_count, :message, :user_likes], + time: [:created_time], + user: [:from], + custom: [:attachment, :message_tags, :parent] + ) + + def initialize(id, attributes = {}) + super + # TODO: handle custom attributes. + end + end +end \ No newline at end of file diff --git a/lib/fb_graph2/edge/comments.rb b/lib/fb_graph2/edge/comments.rb new file mode 100644 index 0000000..328bbfe --- /dev/null +++ b/lib/fb_graph2/edge/comments.rb @@ -0,0 +1,17 @@ +module FbGraph2 + class Edge + module Comments + def comments(params = {}) + comments = self.edge :comments, params + comments.collect do |comment| + Comment.new(comment[:id], comment).authenticate self.access_token + end + end + + def comment!(params = {}) + comment = self.post params, edge: :comments + Comment.new(comment[:id], comment.merge(params)).authenticate self.access_token + end + end + end +end \ No newline at end of file diff --git a/lib/fb_graph2/edge/likes.rb b/lib/fb_graph2/edge/likes.rb index 94e9ca5..5823455 100644 --- a/lib/fb_graph2/edge/likes.rb +++ b/lib/fb_graph2/edge/likes.rb @@ -1,16 +1,35 @@ module FbGraph2 class Edge module Likes - def likes(params = {}) - pages = self.edge :likes, params - pages.collect do |page| - Page.new(page[:id], page).authenticate self.access_token + module LikerContext + def likes(params = {}) + pages = self.edge :likes, params + pages.collect do |page| + Page.new(page[:id], page).authenticate self.access_token + end + end + + def liked?(page_id, params = {}) + pages = self.edge :likes, params, edge_scope: page_id + pages.present? end end - def liked?(page_id, params = {}) - pages = self.edge :likes, params, edge_scope: page_id - pages.present? + module LikeeContext + def likes(params = {}) + users = self.edge :likes, params + users.collect do |user| + User.new(user[:id], user).authenticate self.access_token + end + end + + def like!(params = {}) + self.post params, edge: :likes + end + + def unlike!(params = {}) + self.delete params, edge: :likes + end end end end diff --git a/lib/fb_graph2/edge/shared_posts.rb b/lib/fb_graph2/edge/shared_posts.rb new file mode 100644 index 0000000..a130b24 --- /dev/null +++ b/lib/fb_graph2/edge/shared_posts.rb @@ -0,0 +1,13 @@ +module FbGraph2 + class Edge + module SharedPosts + def shared_posts(params = {}) + posts = self.edge :posts, params + posts.collect do |post| + Post.new(post[:id], post).authenticate self.access_token + end + end + alias_method :sharedposts, :shared_posts + end + end +end \ No newline at end of file diff --git a/lib/fb_graph2/node.rb b/lib/fb_graph2/node.rb index 8d97576..9b4412a 100644 --- a/lib/fb_graph2/node.rb +++ b/lib/fb_graph2/node.rb @@ -60,7 +60,7 @@ module FbGraph2 def delete(params = {}, options = {}) handle_response do - http_client.delete build_endpoint(params), build_params(params) + http_client.delete build_endpoint(options), build_params(params) end end @@ -85,7 +85,8 @@ module FbGraph2 def handle_response response = yield - _response_ = MultiJson.load(response.body).with_indifferent_access + _response_ = MultiJson.load response.body + _response_ = _response_.with_indifferent_access if _response_.respond_to? :with_indifferent_access case response.status when 200...300 _response_ diff --git a/lib/fb_graph2/post.rb b/lib/fb_graph2/post.rb index 2f5759a..09b25e2 100644 --- a/lib/fb_graph2/post.rb +++ b/lib/fb_graph2/post.rb @@ -1,5 +1,7 @@ module FbGraph2 class Post < Node + include Edge::Likes::LikeeContext + register_attributes( raw: [ :caption, :description, :icon, :is_hidden, :link, :message, :name, :object_id, :picture, diff --git a/lib/fb_graph2/user.rb b/lib/fb_graph2/user.rb index 2e452c4..f8630e2 100644 --- a/lib/fb_graph2/user.rb +++ b/lib/fb_graph2/user.rb @@ -14,7 +14,7 @@ module FbGraph2 include Edge::Home include Edge::Interests include Edge::InvitableFriends - include Edge::Likes + include Edge::Likes::LikerContext include Edge::Links include Edge::Movies include Edge::Music