fb_graph 2.5.7 → 2.5.8

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fb_graph (2.5.7)
4
+ fb_graph (2.5.8)
5
5
  httpclient (>= 2.2.0.2)
6
6
  json
7
7
  rack-oauth2 (>= 0.14.4)
@@ -70,7 +70,7 @@ GEM
70
70
  rack (~> 1.0)
71
71
  tilt (~> 1.1, != 1.3.0)
72
72
  tilt (1.3.3)
73
- tzinfo (0.3.34)
73
+ tzinfo (0.3.35)
74
74
  webmock (1.8.11)
75
75
  addressable (>= 2.2.7)
76
76
  crack (>= 0.1.7)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.5.7
1
+ 2.5.8
@@ -117,6 +117,7 @@ require 'fb_graph/page'
117
117
  require 'fb_graph/photo'
118
118
  require 'fb_graph/place'
119
119
  require 'fb_graph/post'
120
+ require 'fb_graph/promotable_post'
120
121
  require 'fb_graph/property'
121
122
  require 'fb_graph/question'
122
123
  require 'fb_graph/question_option'
@@ -0,0 +1,14 @@
1
+ module FbGraph
2
+ module Connections
3
+ module PromotablePosts
4
+ def promotable_posts(options = {})
5
+ posts = self.connection :promotable_posts, options
6
+ posts.map! do |post|
7
+ PromotablePost.new post[:id], post.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ )
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -16,6 +16,7 @@ module FbGraph
16
16
  include Connections::Photos
17
17
  include Connections::Picture
18
18
  include Connections::Posts
19
+ include Connections::PromotablePosts
19
20
  include Connections::Questions
20
21
  include Connections::Settings
21
22
  include Connections::Statuses
@@ -0,0 +1,34 @@
1
+ module FbGraph
2
+ class PromotablePost < Post
3
+ attr_accessor :is_published, :scheduled_publish_time
4
+
5
+ def initialize(identifier, attributes = {})
6
+ super
7
+ @is_published = attributes[:is_published]
8
+ @scheduled_publish_time = if attributes[:scheduled_publish_time]
9
+ Time.at attributes[:scheduled_publish_time]
10
+ end
11
+ end
12
+
13
+ def publishable?
14
+ !@is_published
15
+ end
16
+ alias_method :schedulable?, :publishable?
17
+
18
+ def scheduled?
19
+ !!scheduled_publish_time
20
+ end
21
+
22
+ def publish!(options = {})
23
+ update options.merge(:is_published => true)
24
+ end
25
+
26
+ def schedule!(time, options = {})
27
+ update options.merge(:scheduled_publish_time => time.to_i)
28
+ end
29
+
30
+ def unschedule!(options = {})
31
+ schedule! nil, options
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe FbGraph::Connections::PromotablePosts do
4
+ describe '#promotable_posts' do
5
+ it 'should return promotable posts the user created as FbGraph::Post' do
6
+ mock_graph :get, 'FbGraph/promotable_posts', 'pages/promotable_posts/sample', :access_token => 'access_token' do
7
+ posts = FbGraph::Page.new('FbGraph', :access_token => 'access_token').promotable_posts
8
+ posts.class.should == FbGraph::Connection
9
+ posts.count.should == 4
10
+ posts.each.with_index do |post, index|
11
+ post.should be_instance_of FbGraph::PromotablePost
12
+ case index
13
+ when 0
14
+ post.is_published.should be_false
15
+ post.scheduled_publish_time.should == Time.at(1352473200)
16
+ else
17
+ post.is_published.should be_true
18
+ post.scheduled_publish_time.should be_nil
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ describe FbGraph::PromotablePost do
4
+ let(:published) { FbGraph::PromotablePost.new(12345, :is_published => true) }
5
+ let(:draft) { FbGraph::PromotablePost.new(12345, :is_published => false) }
6
+ let(:scheduled) { FbGraph::PromotablePost.new(12345, :is_published => false, :scheduled_publish_time => 2.days.from_now.to_i) }
7
+
8
+ context 'when published' do
9
+ subject { published }
10
+ its(:publishable?) { should be_false }
11
+ its(:scheduled?) { should be_false }
12
+ end
13
+
14
+ context 'when draft' do
15
+ subject { draft }
16
+ its(:publishable?) { should be_true }
17
+ its(:scheduled?) { should be_false }
18
+ end
19
+
20
+ context 'when scheduled' do
21
+ subject { scheduled }
22
+ its(:publishable?) { should be_true }
23
+ its(:scheduled?) { should be_true }
24
+ end
25
+
26
+ describe '.publish!' do
27
+ it 'should post with is_published=true' do
28
+ mock_graph :post, '12345', 'true', :access_token => 'page_token', :params => {
29
+ :is_published => 'true'
30
+ } do
31
+ draft.publish!(:access_token => 'page_token').should be_true
32
+ end
33
+ end
34
+ end
35
+
36
+ describe '.schedule!' do
37
+ it 'should post with scheduled_publish_time=timestamp' do
38
+ scheduled_at = 2.days.from_now
39
+ mock_graph :post, '12345', 'true', :access_token => 'page_token', :params => {
40
+ :scheduled_publish_time => scheduled_at.to_i.to_s
41
+ } do
42
+ draft.schedule!(scheduled_at, :access_token => 'page_token').should be_true
43
+ end
44
+ end
45
+ end
46
+
47
+ describe '.unschedule!' do
48
+ it 'should post with scheduled_publish_time=0' do
49
+ scheduled_at = 2.days.from_now
50
+ mock_graph :post, '12345', 'true', :access_token => 'page_token', :params => {
51
+ :scheduled_publish_time => '0'
52
+ } do
53
+ scheduled.unschedule!(:access_token => 'page_token').should be_true
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,168 @@
1
+ {
2
+ "data": [
3
+ {
4
+ "id": "117513961602338_485053824848348",
5
+ "from": {
6
+ "name": "FbGraph",
7
+ "category": "Software",
8
+ "id": "117513961602338"
9
+ },
10
+ "message": "Sample Scheduled Promotable Posts",
11
+ "actions": [
12
+ {
13
+ "name": "Comment",
14
+ "link": "https://www.facebook.com/117513961602338/posts/485053824848348"
15
+ },
16
+ {
17
+ "name": "Like",
18
+ "link": "https://www.facebook.com/117513961602338/posts/485053824848348"
19
+ }
20
+ ],
21
+ "privacy": {
22
+ "description": "Public",
23
+ "value": "EVERYONE"
24
+ },
25
+ "type": "status",
26
+ "created_time": "2012-11-09T15:00:00+0000",
27
+ "updated_time": "2012-11-09T15:00:00+0000",
28
+ "comments": {
29
+ "count": 0
30
+ },
31
+ "is_published": false,
32
+ "scheduled_publish_time": 1352473200
33
+ },
34
+ {
35
+ "id": "117513961602338_485050244848706",
36
+ "from": {
37
+ "name": "FbGraph",
38
+ "category": "Software",
39
+ "id": "117513961602338"
40
+ },
41
+ "message": "Sample Promotable Posts",
42
+ "actions": [
43
+ {
44
+ "name": "Comment",
45
+ "link": "https://www.facebook.com/117513961602338/posts/485050244848706"
46
+ },
47
+ {
48
+ "name": "Like",
49
+ "link": "https://www.facebook.com/117513961602338/posts/485050244848706"
50
+ }
51
+ ],
52
+ "privacy": {
53
+ "description": "Public",
54
+ "value": "EVERYONE"
55
+ },
56
+ "type": "status",
57
+ "status_type": "mobile_status_update",
58
+ "created_time": "2012-11-07T02:04:16+0000",
59
+ "updated_time": "2012-11-07T02:04:16+0000",
60
+ "comments": {
61
+ "count": 0
62
+ },
63
+ "is_published": true
64
+ },
65
+ {
66
+ "id": "117513961602338_274085326039445",
67
+ "from": {
68
+ "name": "FbGraph",
69
+ "category": "Software",
70
+ "id": "117513961602338"
71
+ },
72
+ "message": "I have no idea how to support this.\nArel for fb_graph??\nhttps://developers.facebook.com/docs/reference/api/field_expansion/",
73
+ "link": "https://developers.facebook.com/docs/reference/api/field_expansion/",
74
+ "name": "https://developers.facebook.com/docs/reference/api/field_expansion/",
75
+ "caption": "developers.facebook.com",
76
+ "icon": "https://s-static.ak.facebook.com/rsrc.php/v2/yD/r/aS8ecmYRys0.gif",
77
+ "actions": [
78
+ {
79
+ "name": "Comment",
80
+ "link": "https://www.facebook.com/117513961602338/posts/274085326039445"
81
+ },
82
+ {
83
+ "name": "Like",
84
+ "link": "https://www.facebook.com/117513961602338/posts/274085326039445"
85
+ }
86
+ ],
87
+ "privacy": {
88
+ "description": "Public",
89
+ "value": "EVERYONE"
90
+ },
91
+ "type": "link",
92
+ "status_type": "shared_story",
93
+ "created_time": "2012-09-02T17:42:08+0000",
94
+ "updated_time": "2012-09-02T17:42:08+0000",
95
+ "likes": {
96
+ "data": [
97
+ {
98
+ "name": "Benny Lin",
99
+ "id": "1684542911"
100
+ }
101
+ ],
102
+ "count": 1
103
+ },
104
+ "comments": {
105
+ "count": 0
106
+ },
107
+ "is_published": true
108
+ },
109
+ {
110
+ "id": "117513961602338_270322719752153",
111
+ "from": {
112
+ "name": "FbGraph",
113
+ "category": "Software",
114
+ "id": "117513961602338"
115
+ },
116
+ "message": "You can send App Notifications using fb_graph v2.4.20.\nhttps://github.com/nov/fb_graph/wiki/notifications",
117
+ "picture": "https://fbexternal-a.akamaihd.net/safe_image.php?d=AQAQcwCcAz2hGLi8&w=90&h=90&url=https%3A%2F%2Fa248.e.akamai.net%2Fassets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png%3F1345673561",
118
+ "link": "https://github.com/nov/fb_graph/wiki/notifications",
119
+ "name": "fb_graph",
120
+ "caption": "github.com",
121
+ "description": "A full-stack Facebook Graph API wrapper in Ruby. Contribute to fb_graph development by creating an account on GitHub.",
122
+ "icon": "https://s-static.ak.facebook.com/rsrc.php/v2/yD/r/aS8ecmYRys0.gif",
123
+ "actions": [
124
+ {
125
+ "name": "Comment",
126
+ "link": "https://www.facebook.com/117513961602338/posts/270322719752153"
127
+ },
128
+ {
129
+ "name": "Like",
130
+ "link": "https://www.facebook.com/117513961602338/posts/270322719752153"
131
+ }
132
+ ],
133
+ "privacy": {
134
+ "description": "Public",
135
+ "value": "EVERYONE"
136
+ },
137
+ "type": "link",
138
+ "status_type": "shared_story",
139
+ "created_time": "2012-09-02T17:33:59+0000",
140
+ "updated_time": "2012-09-02T17:33:59+0000",
141
+ "likes": {
142
+ "data": [
143
+ {
144
+ "name": "Benny Lin",
145
+ "id": "1684542911"
146
+ },
147
+ {
148
+ "name": "Arun Kumar",
149
+ "id": "100001286076940"
150
+ },
151
+ {
152
+ "name": "Ryan Felton",
153
+ "id": "697922812"
154
+ }
155
+ ],
156
+ "count": 3
157
+ },
158
+ "comments": {
159
+ "count": 0
160
+ },
161
+ "is_published": true
162
+ }
163
+ ],
164
+ "paging": {
165
+ "previous": "https://graph.facebook.com/117513961602338/promotable_posts?limit=25&since=1352473200",
166
+ "next": "https://graph.facebook.com/117513961602338/promotable_posts?limit=25&until=1346607238"
167
+ }
168
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fb_graph
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.7
4
+ version: 2.5.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-02 00:00:00.000000000 Z
12
+ date: 2012-11-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httpclient
@@ -263,6 +263,7 @@ files:
263
263
  - lib/fb_graph/connections/picture.rb
264
264
  - lib/fb_graph/connections/pokes.rb
265
265
  - lib/fb_graph/connections/posts.rb
266
+ - lib/fb_graph/connections/promotable_posts.rb
266
267
  - lib/fb_graph/connections/question_options.rb
267
268
  - lib/fb_graph/connections/questions.rb
268
269
  - lib/fb_graph/connections/reach_estimates.rb
@@ -318,6 +319,7 @@ files:
318
319
  - lib/fb_graph/post.rb
319
320
  - lib/fb_graph/privacy.rb
320
321
  - lib/fb_graph/project.rb
322
+ - lib/fb_graph/promotable_post.rb
321
323
  - lib/fb_graph/property.rb
322
324
  - lib/fb_graph/query.rb
323
325
  - lib/fb_graph/question.rb
@@ -426,6 +428,7 @@ files:
426
428
  - spec/fb_graph/connections/picture_spec.rb
427
429
  - spec/fb_graph/connections/pokes_spec.rb
428
430
  - spec/fb_graph/connections/posts_spec.rb
431
+ - spec/fb_graph/connections/promotable_posts_spec.rb
429
432
  - spec/fb_graph/connections/question_options_spec.rb
430
433
  - spec/fb_graph/connections/questions_spec.rb
431
434
  - spec/fb_graph/connections/reach_estimates_spec.rb
@@ -479,6 +482,7 @@ files:
479
482
  - spec/fb_graph/post_spec.rb
480
483
  - spec/fb_graph/privacy_spec.rb
481
484
  - spec/fb_graph/project_spec.rb
485
+ - spec/fb_graph/promotable_post_spec.rb
482
486
  - spec/fb_graph/qeustion_option_spec.rb
483
487
  - spec/fb_graph/query_spec.rb
484
488
  - spec/fb_graph/question_spec.rb
@@ -582,6 +586,7 @@ files:
582
586
  - spec/mock_json/pages/notes/post_with_valid_access_token.json
583
587
  - spec/mock_json/pages/platform_private.json
584
588
  - spec/mock_json/pages/platform_public.json
589
+ - spec/mock_json/pages/promotable_posts/sample.json
585
590
  - spec/mock_json/pages/search_fb_graph.json
586
591
  - spec/mock_json/pages/search_google.json
587
592
  - spec/mock_json/pages/settings/all_enabled.json
@@ -725,7 +730,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
725
730
  version: '0'
726
731
  segments:
727
732
  - 0
728
- hash: 3936393471201572148
733
+ hash: -910629927856901231
729
734
  required_rubygems_version: !ruby/object:Gem::Requirement
730
735
  none: false
731
736
  requirements:
@@ -734,7 +739,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
734
739
  version: '0'
735
740
  segments:
736
741
  - 0
737
- hash: 3936393471201572148
742
+ hash: -910629927856901231
738
743
  requirements: []
739
744
  rubyforge_project:
740
745
  rubygems_version: 1.8.24
@@ -822,6 +827,7 @@ test_files:
822
827
  - spec/fb_graph/connections/picture_spec.rb
823
828
  - spec/fb_graph/connections/pokes_spec.rb
824
829
  - spec/fb_graph/connections/posts_spec.rb
830
+ - spec/fb_graph/connections/promotable_posts_spec.rb
825
831
  - spec/fb_graph/connections/question_options_spec.rb
826
832
  - spec/fb_graph/connections/questions_spec.rb
827
833
  - spec/fb_graph/connections/reach_estimates_spec.rb
@@ -875,6 +881,7 @@ test_files:
875
881
  - spec/fb_graph/post_spec.rb
876
882
  - spec/fb_graph/privacy_spec.rb
877
883
  - spec/fb_graph/project_spec.rb
884
+ - spec/fb_graph/promotable_post_spec.rb
878
885
  - spec/fb_graph/qeustion_option_spec.rb
879
886
  - spec/fb_graph/query_spec.rb
880
887
  - spec/fb_graph/question_spec.rb
@@ -978,6 +985,7 @@ test_files:
978
985
  - spec/mock_json/pages/notes/post_with_valid_access_token.json
979
986
  - spec/mock_json/pages/platform_private.json
980
987
  - spec/mock_json/pages/platform_public.json
988
+ - spec/mock_json/pages/promotable_posts/sample.json
981
989
  - spec/mock_json/pages/search_fb_graph.json
982
990
  - spec/mock_json/pages/search_google.json
983
991
  - spec/mock_json/pages/settings/all_enabled.json