fb_graph 2.1.5 → 2.1.6
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.
- data/Gemfile.lock +5 -6
- data/VERSION +1 -1
- data/lib/fb_graph/connections/inbox.rb +9 -6
- data/lib/fb_graph/connections/outbox.rb +9 -6
- data/lib/fb_graph/thread.rb +49 -0
- data/spec/fb_graph/connections/inbox_spec.rb +9 -8
- data/spec/fb_graph/connections/outbox_spec.rb +9 -8
- data/spec/fb_graph/thread_spec.rb +30 -0
- data/spec/mock_json/users/inbox/{me_private.json → before_transition.json} +21 -0
- metadata +4 -4
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fb_graph (2.1.
|
4
|
+
fb_graph (2.1.5)
|
5
5
|
httpclient (>= 2.2.0.2)
|
6
6
|
rack-oauth2 (>= 0.9.4)
|
7
7
|
|
@@ -28,8 +28,8 @@ GEM
|
|
28
28
|
multi_json (~> 1.0)
|
29
29
|
addressable (2.2.6)
|
30
30
|
attr_required (0.0.3)
|
31
|
-
bcrypt-ruby (3.0.
|
32
|
-
bcrypt-ruby (3.0.
|
31
|
+
bcrypt-ruby (3.0.1)
|
32
|
+
bcrypt-ruby (3.0.1-java)
|
33
33
|
bouncy-castle-java (1.5.0146.1)
|
34
34
|
builder (3.0.0)
|
35
35
|
crack (0.1.8)
|
@@ -40,15 +40,14 @@ GEM
|
|
40
40
|
i18n (0.6.0)
|
41
41
|
jruby-openssl (0.7.4)
|
42
42
|
bouncy-castle-java
|
43
|
-
json (1.
|
44
|
-
json (1.5.4-java)
|
43
|
+
json (1.6.0)
|
45
44
|
multi_json (1.0.3)
|
46
45
|
rack (1.3.2)
|
47
46
|
rack-cache (1.0.3)
|
48
47
|
rack (>= 0.4)
|
49
48
|
rack-mount (0.8.3)
|
50
49
|
rack (>= 1.0.0)
|
51
|
-
rack-oauth2 (0.
|
50
|
+
rack-oauth2 (0.10.1)
|
52
51
|
activesupport (>= 2.3)
|
53
52
|
attr_required (>= 0.0.3)
|
54
53
|
httpclient (>= 2.2.0.2)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.1.
|
1
|
+
2.1.6
|
@@ -4,12 +4,15 @@ module FbGraph
|
|
4
4
|
def inbox(options = {})
|
5
5
|
threads = self.connection(:inbox, options)
|
6
6
|
threads.map! do |thread|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
if thread[:message]
|
8
|
+
Thread::BeforeTransition.new(thread[:id], thread.merge(
|
9
|
+
:access_token => options[:access_token] || self.access_token
|
10
|
+
))
|
11
|
+
else
|
12
|
+
Thread.new(thread[:id], thread.merge(
|
13
|
+
:access_token => options[:access_token] || self.access_token
|
14
|
+
))
|
15
|
+
end
|
13
16
|
end
|
14
17
|
end
|
15
18
|
end
|
@@ -4,12 +4,15 @@ module FbGraph
|
|
4
4
|
def outbox(options = {})
|
5
5
|
threads = self.connection(:outbox, options)
|
6
6
|
threads.map! do |thread|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
if thread[:message]
|
8
|
+
Thread::BeforeTransition.new(thread[:id], thread.merge(
|
9
|
+
:access_token => options[:access_token] || self.access_token
|
10
|
+
))
|
11
|
+
else
|
12
|
+
Thread.new(thread[:id], thread.merge(
|
13
|
+
:access_token => options[:access_token] || self.access_token
|
14
|
+
))
|
15
|
+
end
|
13
16
|
end
|
14
17
|
end
|
15
18
|
end
|
data/lib/fb_graph/thread.rb
CHANGED
@@ -24,5 +24,54 @@ module FbGraph
|
|
24
24
|
@_senders_ = Collection.new(attributes[:senders])
|
25
25
|
@_tags_ = Collection.new(attributes[:tags])
|
26
26
|
end
|
27
|
+
|
28
|
+
# NOTE:
|
29
|
+
# Facebook is under transision of their message platform.
|
30
|
+
# This is current thread model in Graph API.
|
31
|
+
# In near future, this will be replaced with FbGraph::Thread model.
|
32
|
+
class BeforeTransition < Node
|
33
|
+
attr_accessor :subject, :message, :from, :to, :unread, :unseen, :updated_time
|
34
|
+
|
35
|
+
def initialize(identifier, attributes = {})
|
36
|
+
super
|
37
|
+
@subject = attributes[:subject]
|
38
|
+
@message = attributes[:message]
|
39
|
+
if (from = attributes[:from])
|
40
|
+
@from = if from[:start_time]
|
41
|
+
Event.new(from[:id], from)
|
42
|
+
else
|
43
|
+
User.new(from[:id], from)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
@to = []
|
47
|
+
Collection.new(attributes[:to]).each do |to|
|
48
|
+
@to << User.new(to[:id], to)
|
49
|
+
end
|
50
|
+
if attributes[:updated_time]
|
51
|
+
@created_time = Time.parse(attributes[:updated_time]).utc
|
52
|
+
end
|
53
|
+
@unread = attributes[:unread] == 1
|
54
|
+
@unseen = attributes[:unseen] == 1
|
55
|
+
@_messages_ = Collection.new(attributes[:comments])
|
56
|
+
end
|
57
|
+
|
58
|
+
# NOTE:
|
59
|
+
# This is a connection named "comments" but returns "messages" and different from normal "comments" connection.
|
60
|
+
# Therefore I put this connection here not under FbGraph::Connections.
|
61
|
+
def messages(options = {})
|
62
|
+
messages = if @_messages_ && options.blank?
|
63
|
+
self.connection(:comments, options.merge(:cached_collection => @_messages_))
|
64
|
+
else
|
65
|
+
self.connection(:comments, options)
|
66
|
+
end
|
67
|
+
messages.map! do |message|
|
68
|
+
Message.new(message[:id], message.merge(
|
69
|
+
:access_token => options[:access_token] || self.access_token
|
70
|
+
))
|
71
|
+
end
|
72
|
+
end
|
73
|
+
# for pagination, a method which name is same as the connection name is needed.
|
74
|
+
alias_method :comments, :messages
|
75
|
+
end
|
27
76
|
end
|
28
77
|
end
|
@@ -1,15 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe FbGraph::Connections::Inbox, '#inbox' do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
thread.should be_instance_of(FbGraph::Post)
|
4
|
+
context 'before message platform transition' do
|
5
|
+
it 'should return threads as FbGraph::Thread::BeforeTransition' do
|
6
|
+
mock_graph :get, 'me/inbox', 'users/inbox/before_transition', :access_token => 'access_token' do
|
7
|
+
threads = FbGraph::User.me('access_token').inbox
|
8
|
+
threads.each do |thread|
|
9
|
+
thread.should be_instance_of(FbGraph::Thread::BeforeTransition)
|
10
|
+
end
|
12
11
|
end
|
13
12
|
end
|
14
13
|
end
|
14
|
+
|
15
|
+
# TODO: after transition, check JSON format and put test here
|
15
16
|
end
|
@@ -1,15 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe FbGraph::Connections::Outbox, '#outbox' do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
thread.should be_instance_of(FbGraph::Post)
|
4
|
+
context 'before message platform transition' do
|
5
|
+
it 'should return threads as FbGraph::Thread::BeforeTransition' do
|
6
|
+
mock_graph :get, 'me/outbox', 'users/outbox/me_private', :access_token => 'access_token' do
|
7
|
+
threads = FbGraph::User.me('access_token').outbox
|
8
|
+
threads.each do |thread|
|
9
|
+
thread.should be_instance_of(FbGraph::Thread::BeforeTransition)
|
10
|
+
end
|
12
11
|
end
|
13
12
|
end
|
14
13
|
end
|
14
|
+
|
15
|
+
# TODO: after transition, check JSON format and put test here
|
15
16
|
end
|
@@ -83,4 +83,34 @@ describe FbGraph::Thread, '.new' do
|
|
83
83
|
FbGraph::User.new('1575327134', :name => 'Nov Matake', :email => 'abc@facebook.com')
|
84
84
|
]
|
85
85
|
end
|
86
|
+
|
87
|
+
|
88
|
+
describe FbGraph::Thread::BeforeTransition do
|
89
|
+
describe '#messages' do
|
90
|
+
it 'should use cached contents as default' do
|
91
|
+
lambda do
|
92
|
+
FbGraph::Thread::BeforeTransition.new(12345, :access_token => 'access_token').messages
|
93
|
+
end.should_not request_to '12345/comments?access_token=access_token'
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'should not use cached contents when options are specified' do
|
97
|
+
lambda do
|
98
|
+
FbGraph::Thread::BeforeTransition.new(12345).messages(:no_cache => true)
|
99
|
+
end.should request_to '12345/comments?no_cache=true'
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'should return threads as FbGraph::Message' do
|
103
|
+
mock_graph :get, '12345/comments', 'thread/messages/private', :params => {:no_cache => 'true'}, :access_token => 'access_token' do
|
104
|
+
messages = FbGraph::Thread::BeforeTransition.new(12345, :access_token => 'access_token').messages(:no_cache => true)
|
105
|
+
messages.each do |message|
|
106
|
+
message.should be_instance_of(FbGraph::Message)
|
107
|
+
end
|
108
|
+
lambda do
|
109
|
+
messages.next
|
110
|
+
end.should request_to '12345/comments'
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
86
116
|
end
|
@@ -1,5 +1,26 @@
|
|
1
1
|
{
|
2
2
|
"data": [
|
3
|
+
{
|
4
|
+
"id": "1234567890",
|
5
|
+
"from": {
|
6
|
+
"name": "Some Event",
|
7
|
+
"start_time": "2011-08-19T21:00:00",
|
8
|
+
"end_time": "2011-08-20T04:00:00",
|
9
|
+
"location": "Somewhere",
|
10
|
+
"id": "1234567890"
|
11
|
+
},
|
12
|
+
"to": {
|
13
|
+
"data": [{
|
14
|
+
"name": "Nov",
|
15
|
+
"id": "579612276"
|
16
|
+
}]
|
17
|
+
},
|
18
|
+
"subject": "Subject",
|
19
|
+
"message": "Message",
|
20
|
+
"updated_time": "2011-08-21T08:24:30+0000",
|
21
|
+
"unread": 1,
|
22
|
+
"unseen": 0
|
23
|
+
},
|
3
24
|
{
|
4
25
|
"id": "1390404535644",
|
5
26
|
"from": {
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: fb_graph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 2.1.
|
5
|
+
version: 2.1.6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- nov matake
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-09-
|
13
|
+
date: 2011-09-14 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: httpclient
|
@@ -468,7 +468,7 @@ files:
|
|
468
468
|
- spec/mock_json/users/home/me_private_next.json
|
469
469
|
- spec/mock_json/users/home/me_private_previous.json
|
470
470
|
- spec/mock_json/users/home/me_public.json
|
471
|
-
- spec/mock_json/users/inbox/
|
471
|
+
- spec/mock_json/users/inbox/before_transition.json
|
472
472
|
- spec/mock_json/users/interests/matake_private.json
|
473
473
|
- spec/mock_json/users/likes/arjun_private.json
|
474
474
|
- spec/mock_json/users/likes/arjun_public.json
|
@@ -759,7 +759,7 @@ test_files:
|
|
759
759
|
- spec/mock_json/users/home/me_private_next.json
|
760
760
|
- spec/mock_json/users/home/me_private_previous.json
|
761
761
|
- spec/mock_json/users/home/me_public.json
|
762
|
-
- spec/mock_json/users/inbox/
|
762
|
+
- spec/mock_json/users/inbox/before_transition.json
|
763
763
|
- spec/mock_json/users/interests/matake_private.json
|
764
764
|
- spec/mock_json/users/likes/arjun_private.json
|
765
765
|
- spec/mock_json/users/likes/arjun_public.json
|