fb_graph 2.7.1 → 2.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7655ead97fca704002f5dac9ef943dbd61e8dde6
4
- data.tar.gz: 3166cea76ebd6bc8f439f0ecfe1080f294aa8f14
3
+ metadata.gz: e660328032ffbc8b0baa0033cf3099345ff336e0
4
+ data.tar.gz: 167ec5d9906e89ce2ada0e468e600241fb07978b
5
5
  SHA512:
6
- metadata.gz: e42d8137dd19236c601b4a6cd1c85d185228b5c6cb90712c8dce246da36968410359e357f752aa8702de546197a65f0636e10b6bf059ba730a9834abf5fed926
7
- data.tar.gz: 600d5eab48fae82d012047d911374ac8928a343b65777b8f22cabcd09d6749e1131672b6be4c59f9d4e632b39c92151f1af68d38781c08a1da5109ca39f54497
6
+ metadata.gz: 0fd73b3676e3b3b26c96ab0c1532f5bc41c9735f096991d154fe642ea365731fd942153221cfe555bb1b576673db0100a097b439e90948299d8ceb2b9bff6788
7
+ data.tar.gz: ed343eab7ee5fd8e682bb90e8ef85b0dee476130f8879cfb8cec76573f684cdefbbbf7afc82d9c3785ac3cffdb47f259b5617f2c0c2c2dc1c84498250472ae3f
data/README.rdoc CHANGED
@@ -116,6 +116,16 @@ of the specific objects fields in the sidebar under "Objects".
116
116
  results.klass.search(results.query, results.collection.next) # => same with results.next
117
117
  results.klass.search(results.query, results.collection.previous) # => same with results.previous
118
118
 
119
+
120
+ ==== Comments
121
+
122
+ # fetch comment replies
123
+ FbGraph::Comment.new("10151705618661509_29545180", :access_token => ACCESS_TOKEN).comments
124
+
125
+ # fetch if the comment accept replies
126
+ comment = FbGraph::Comment.fetch("10151705618661509_29545180", :access_token => ACCESS_TOKEN, :fields => "can_comment")
127
+ comment.can_comment
128
+
119
129
  === POST
120
130
 
121
131
  ==== Update status (wall post)
@@ -193,6 +203,14 @@ of the specific objects fields in the sidebar under "Objects".
193
203
  :message => 'Hello, where is photo?'
194
204
  )
195
205
 
206
+ ==== Reply a comment
207
+
208
+ comment = FbGraph::Comment.fetch("10151705618661509_29545180")
209
+ comment.reply!(
210
+ :message => "Hello!",
211
+ :access_token => ACCESS_TOKEN
212
+ )
213
+
196
214
  === DELETE
197
215
 
198
216
  ==== Delete an object
@@ -209,6 +227,13 @@ of the specific objects fields in the sidebar under "Objects".
209
227
  post.unlike!(:access_token => ACCESS_TOKEN)
210
228
  post.destroy(:access_token => ACCESS_TOKEN)
211
229
 
230
+ ==== Delete a comment reply
231
+
232
+ reply = comment.comment!( :access_token => ACCESS_TOKEN,
233
+ :message => "Hello!"
234
+ )
235
+ reply.destroy(:access_token => ACCESS_TOKEN)
236
+
212
237
  === Authentication
213
238
 
214
239
  Both Facebook JavaScript SDK and normal OAuth2 flow is supported.
@@ -288,4 +313,4 @@ https://github.com/nov/fb_graph/wiki
288
313
 
289
314
  == Copyright
290
315
 
291
- Copyright (c) 2010 nov matake. See LICENSE for details.
316
+ Copyright (c) 2010 nov matake. See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.7.1
1
+ 2.7.2
@@ -1,9 +1,10 @@
1
1
  module FbGraph
2
2
  class Comment < Node
3
+ include Connections::Comments
3
4
  include Connections::Likes
4
5
  include Connections::Likes::Likable
5
6
 
6
- attr_accessor :from, :message, :created_time, :like_count
7
+ attr_accessor :from, :message, :created_time, :like_count, :can_comment
7
8
 
8
9
  def initialize(identifier, attributes = {})
9
10
  super
@@ -16,6 +17,8 @@ module FbGraph
16
17
  end
17
18
  @message = attributes[:message]
18
19
  @like_count = attributes[:likes]
20
+ @can_comment = attributes[:can_comment]
21
+
19
22
  if attributes[:created_time]
20
23
  @created_time = Time.parse(attributes[:created_time]).utc
21
24
  end
@@ -16,6 +16,13 @@ module FbGraph
16
16
  :access_token => options[:access_token] || self.access_token
17
17
  )
18
18
  end
19
+
20
+ def reply!(options = {})
21
+ comment_id = post options.merge(:connection => :comments)
22
+ Comment.new comment_id, options.merge(
23
+ :access_token => options[:access_token] || self.access_token
24
+ )
25
+ end
19
26
  end
20
27
  end
21
28
  end
data/lib/fb_graph/node.rb CHANGED
@@ -135,7 +135,18 @@ module FbGraph
135
135
  when 'null'
136
136
  nil
137
137
  else
138
- _response_ = MultiJson.load(response.body).with_indifferent_access
138
+ _response_ = if response.body =~ /^"/
139
+ # NOTE:
140
+ # Only for comment.reply!, which returns an identifier as String.
141
+ # Once the API spec changed (I guess FB will do so), we can call "with_indifferent_access" for all response.
142
+ # NOTE:
143
+ # When MultiJson.engine is JsonGem, parsing JSON String fails.
144
+ # You should handle this case without MultiJson.
145
+ response.body.gsub('"', '')
146
+ else
147
+ MultiJson.load(response.body).with_indifferent_access
148
+ end
149
+
139
150
  if (200...300).include?(response.status)
140
151
  _response_
141
152
  else
data/lib/fb_graph.rb CHANGED
@@ -4,6 +4,7 @@ require 'patch/rack/oauth2/util'
4
4
  require 'patch/rack/oauth2/client'
5
5
  require 'patch/rack/oauth2/access_token'
6
6
 
7
+
7
8
  module FbGraph
8
9
  VERSION = ::File.read(
9
10
  ::File.join(::File.dirname(__FILE__), '../VERSION')
@@ -28,4 +28,40 @@ describe FbGraph::Comment, '.new' do
28
28
  page_comment.from.should == FbGraph::Page.new('23456', :name => 'Smart.fm', :category => 'Web Site')
29
29
  end
30
30
 
31
+ end
32
+
33
+ describe FbGraph::Comment, '#fetch' do
34
+
35
+ context 'when access_token given' do
36
+ it 'gets the comment message, attributes, and user object' do
37
+ mock_graph :get, 'comment_id', 'comments/comment', :access_token => 'access_token' do
38
+ comment = FbGraph::Comment.fetch("comment_id", :access_token => 'access_token')
39
+ comment.identifier.should == '10151705618661509_29545180'
40
+ comment.can_comment == nil
41
+ end
42
+ end
43
+
44
+ it "gets the list of replies for the comment" do
45
+ mock_graph :get, 'comment_id/comments', 'comments/comments/with_cursor_paging_params', :access_token => 'access_token' do
46
+ replies = FbGraph::Comment.new("comment_id", :access_token => 'access_token').comments
47
+ replies.should be_instance_of FbGraph::Connection
48
+ replies.should be_a FbGraph::Collection
49
+ replies.collection.next.should include :limit, :after
50
+ replies.collection.previous.should include :limit, :before
51
+ replies.collection.cursors.should include :before, :after
52
+ end
53
+ end
54
+
55
+ context 'when can_comment is passed into the fields parameter' do
56
+ it 'gets the can_comment attribute' do
57
+ mock_graph :get, 'comment_id', 'comments/with_can_comment', :access_token => 'access_token', :params => { :fields => 'can_comment' } do
58
+ comment = FbGraph::Comment.fetch("comment_id", :access_token => 'access_token', :fields => 'can_comment')
59
+ comment.identifier.should == '10151705618661509_29545180'
60
+ comment.can_comment.should == true
61
+ end
62
+ end
63
+ end
64
+
65
+ end
66
+
31
67
  end
@@ -72,4 +72,38 @@ describe FbGraph::Connections::Comments, '#comment!' do
72
72
  end
73
73
  end
74
74
  end
75
+ end
76
+
77
+ describe FbGraph::Comment, '#reply!' do
78
+ context 'when included by FbGraph::Post' do
79
+ context 'when no access_token given' do
80
+ it 'should raise FbGraph::Exception' do
81
+ mock_graph :post, '12345/comments', 'comments/comments/post_without_access_token', :status => [500, 'Internal Server Error'] do
82
+ lambda do
83
+ FbGraph::Post.new('12345').reply!(:message => 'hello')
84
+ end.should raise_exception(FbGraph::Exception)
85
+ end
86
+ end
87
+ end
88
+
89
+ context 'when invalid access_token is given' do
90
+ it 'should raise FbGraph::Exception' do
91
+ mock_graph :post, '12345/comments', 'comments/comments/post_with_invalid_access_token', :status => [500, 'Internal Server Error'] do
92
+ lambda do
93
+ FbGraph::Post.new('12345', :access_token => 'invalid').reply!(:message => 'hello')
94
+ end.should raise_exception(FbGraph::Exception)
95
+ end
96
+ end
97
+ end
98
+
99
+ context 'when valid access_token is given' do
100
+ it 'should return generated comment' do
101
+ mock_graph :post, '12345/comments', 'comments/comments/post_with_valid_access_token' do
102
+ reply = FbGraph::Comment.new('12345', :access_token => 'valid').reply!(:message => 'hello')
103
+ reply.should be_instance_of FbGraph::Comment
104
+ reply.identifier.should == '10151705618661509_29549300'
105
+ end
106
+ end
107
+ end
108
+ end
75
109
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fb_graph
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.1
4
+ version: 2.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - nov matake
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-26 00:00:00.000000000 Z
11
+ date: 2013-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -509,7 +509,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
509
509
  version: '0'
510
510
  requirements: []
511
511
  rubyforge_project:
512
- rubygems_version: 2.0.3
512
+ rubygems_version: 2.0.2
513
513
  signing_key:
514
514
  specification_version: 4
515
515
  summary: A full-stack Facebook Graph API wrapper in Ruby.