fb_graph 2.5.8 → 2.5.9

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -10,20 +10,20 @@ PATH
10
10
  GEM
11
11
  remote: http://rubygems.org/
12
12
  specs:
13
- actionpack (3.2.8)
14
- activemodel (= 3.2.8)
15
- activesupport (= 3.2.8)
13
+ actionpack (3.2.9)
14
+ activemodel (= 3.2.9)
15
+ activesupport (= 3.2.9)
16
16
  builder (~> 3.0.0)
17
17
  erubis (~> 2.7.0)
18
18
  journey (~> 1.0.4)
19
19
  rack (~> 1.4.0)
20
20
  rack-cache (~> 1.2)
21
21
  rack-test (~> 0.6.1)
22
- sprockets (~> 2.1.3)
23
- activemodel (3.2.8)
24
- activesupport (= 3.2.8)
22
+ sprockets (~> 2.2.1)
23
+ activemodel (3.2.9)
24
+ activesupport (= 3.2.9)
25
25
  builder (~> 3.0.0)
26
- activesupport (3.2.8)
26
+ activesupport (3.2.9)
27
27
  i18n (~> 0.6)
28
28
  multi_json (~> 1.0)
29
29
  addressable (2.3.2)
@@ -43,7 +43,7 @@ GEM
43
43
  i18n (0.6.1)
44
44
  journey (1.0.4)
45
45
  json (1.7.5)
46
- multi_json (1.3.6)
46
+ multi_json (1.4.0)
47
47
  rack (1.4.1)
48
48
  rack-cache (1.2)
49
49
  rack (>= 0.4)
@@ -56,22 +56,23 @@ GEM
56
56
  rack (>= 1.1)
57
57
  rack-test (0.6.2)
58
58
  rack (>= 1.0)
59
- rake (0.9.2.2)
60
- rspec (2.11.0)
61
- rspec-core (~> 2.11.0)
62
- rspec-expectations (~> 2.11.0)
63
- rspec-mocks (~> 2.11.0)
64
- rspec-core (2.11.1)
65
- rspec-expectations (2.11.3)
59
+ rake (10.0.2)
60
+ rspec (2.12.0)
61
+ rspec-core (~> 2.12.0)
62
+ rspec-expectations (~> 2.12.0)
63
+ rspec-mocks (~> 2.12.0)
64
+ rspec-core (2.12.0)
65
+ rspec-expectations (2.12.0)
66
66
  diff-lcs (~> 1.1.3)
67
- rspec-mocks (2.11.3)
68
- sprockets (2.1.3)
67
+ rspec-mocks (2.12.0)
68
+ sprockets (2.2.2)
69
69
  hike (~> 1.2)
70
+ multi_json (~> 1.0)
70
71
  rack (~> 1.0)
71
72
  tilt (~> 1.1, != 1.3.0)
72
73
  tilt (1.3.3)
73
74
  tzinfo (0.3.35)
74
- webmock (1.8.11)
75
+ webmock (1.9.0)
75
76
  addressable (>= 2.2.7)
76
77
  crack (>= 0.1.7)
77
78
  yamler (0.1.0)
data/README.rdoc CHANGED
@@ -73,6 +73,16 @@ https://github.com/nov/fb_graph/wiki
73
73
  me.home
74
74
  :
75
75
 
76
+ By default, FbGraph will only return the default fields. In order to
77
+ get a non-default field, you have to supply the connect with an options hash
78
+ specifying the field. An example for events:
79
+
80
+ user.events({:fields => "owner,name,description,picture"}) # { and } optional
81
+
82
+ An overview of which fields you can include in the graph API can be found at
83
+ https://developers.facebook.com/docs/reference/api/, which has a description
84
+ of the specific objects fields in the sidebar under "Objects".
85
+
76
86
  ==== Search
77
87
 
78
88
  # all objects
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.5.8
1
+ 2.5.9
@@ -28,6 +28,12 @@ module FbGraph
28
28
  _endpoint_
29
29
  end
30
30
  end
31
+
32
+ module Updatable
33
+ def picture!(options = {})
34
+ post options.merge(:connection => :picture)
35
+ end
36
+ end
31
37
  end
32
38
  end
33
39
  end
@@ -0,0 +1,10 @@
1
+ module FbGraph
2
+ class Cover < Photo
3
+ attr_accessor :offset_y
4
+
5
+ def initialize(identifier, attributes = {})
6
+ super
7
+ @offset_y = attributes[:offset_y]
8
+ end
9
+ end
10
+ end
@@ -1,8 +1,8 @@
1
1
  module FbGraph
2
2
  class Page
3
3
  module CategoryAttributes
4
- @@attributes = {}
5
- @@attributes[:raw] = [
4
+ @@category_attributes = {}
5
+ @@category_attributes[:raw] = [
6
6
  :affiliation,
7
7
  :artists_we_like,
8
8
  :attire,
@@ -11,7 +11,6 @@ module FbGraph
11
11
  :band_members,
12
12
  :bio,
13
13
  :booking_agent,
14
- :can_post,
15
14
  :company_overview,
16
15
  :culinary_team,
17
16
  :current_location,
@@ -23,7 +22,6 @@ module FbGraph
23
22
  :hometown,
24
23
  :influences,
25
24
  :is_community_page,
26
- :link,
27
25
  :location,
28
26
  :mission,
29
27
  :mpg,
@@ -43,24 +41,24 @@ module FbGraph
43
41
  :website,
44
42
  :written_by
45
43
  ]
46
- @@attributes[:symbols] = [
44
+ @@category_attributes[:symbols] = [
47
45
  :parking,
48
46
  :payment_options,
49
47
  :restaurant_services,
50
48
  :restaurant_specialties
51
49
  ]
52
- @@attributes[:date] = [
50
+ @@category_attributes[:date] = [
53
51
  :birthday,
54
52
  :built,
55
53
  :founded,
56
54
  :release_date
57
55
  ]
58
- @@attributes[:others] = [
56
+ @@category_attributes[:others] = [
59
57
  :checkin_count,
60
58
  :hours,
61
59
  :location
62
60
  ]
63
- attr_accessor *@@attributes.values.flatten
61
+ attr_accessor *@@category_attributes.values.flatten
64
62
 
65
63
  def self.included(klass)
66
64
  klass.alias_method_chain :initialize, :category_specific_attributes
@@ -68,19 +66,17 @@ module FbGraph
68
66
 
69
67
  def initialize_with_category_specific_attributes(identifier, attributes = {})
70
68
  initialize_without_category_specific_attributes identifier, attributes
71
- @@attributes[:raw].each do |key|
69
+ @@category_attributes[:raw].each do |key|
72
70
  self.send :"#{key}=", attributes[key]
73
71
  end
74
72
 
75
- self.link ||= "https://www.facebook.com/#{username || identifier}"
76
-
77
- @@attributes[:symbols].each do |key|
73
+ @@category_attributes[:symbols].each do |key|
78
74
  self.send :"#{key}=", []
79
75
  if attributes[key]
80
76
  self.send :"#{key}=", attributes[key].keys.collect(&:to_sym)
81
77
  end
82
78
  end
83
- @@attributes[:date].each do |key|
79
+ @@category_attributes[:date].each do |key|
84
80
  date = if attributes[key]
85
81
  begin
86
82
  Date.parse attributes[key]
data/lib/fb_graph/page.rb CHANGED
@@ -15,6 +15,7 @@ module FbGraph
15
15
  include Connections::Notes
16
16
  include Connections::Photos
17
17
  include Connections::Picture
18
+ include Connections::Picture::Updatable
18
19
  include Connections::Posts
19
20
  include Connections::PromotablePosts
20
21
  include Connections::Questions
@@ -25,15 +26,23 @@ module FbGraph
25
26
  include Connections::Videos
26
27
  extend Searchable
27
28
 
28
- attr_accessor :name, :username, :category, :like_count, :talking_about_count, :perms
29
+ @@attributes = {
30
+ :raw => [:name, :username, :category, :link, :talking_about_count, :perms, :is_published, :can_post],
31
+ :custom => [:cover, :like_count]
32
+ }
33
+
34
+ attr_accessor *@@attributes.values.flatten
29
35
 
30
36
  def initialize(identifier, attributes = {})
31
37
  super
32
- [:name, :username, :category, :talking_about_count].each do |key|
38
+ @@attributes[:raw].each do |key|
33
39
  self.send :"#{key}=", attributes[key]
34
40
  end
41
+ @link ||= "https://www.facebook.com/#{username || identifier}"
35
42
  @like_count = attributes[:likes] || attributes[:fan_count]
36
- @perms = attributes[:perms]
43
+ @cover = if (cover = attributes[:cover])
44
+ Cover.new cover[:cover_id], cover
45
+ end
37
46
  end
38
47
  end
39
48
  end
data/lib/fb_graph.rb CHANGED
@@ -115,6 +115,7 @@ require 'fb_graph/notification'
115
115
  require 'fb_graph/order'
116
116
  require 'fb_graph/page'
117
117
  require 'fb_graph/photo'
118
+ require 'fb_graph/cover'
118
119
  require 'fb_graph/place'
119
120
  require 'fb_graph/post'
120
121
  require 'fb_graph/promotable_post'
@@ -1,75 +1,92 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe FbGraph::Connections::Picture, '#picture' do
4
- context 'when included by FbGraph::User' do
5
- it 'should return image url' do
6
- FbGraph::User.new('matake').picture.should == File.join(FbGraph::ROOT_URL, 'matake/picture')
7
- end
3
+ describe FbGraph::Connections::Picture do
4
+ describe '#picture' do
5
+ context 'when included by FbGraph::User' do
6
+ it 'should return image url' do
7
+ FbGraph::User.new('matake').picture.should == File.join(FbGraph::ROOT_URL, 'matake/picture')
8
+ end
8
9
 
9
- it 'should support size option' do
10
- [:square, :small, :normal, :large].each do |size|
11
- FbGraph::User.new('matake').picture(size).should == File.join(FbGraph::ROOT_URL, "matake/picture?type=#{size}")
12
- FbGraph::User.new('matake').picture(:type => size).should == File.join(FbGraph::ROOT_URL, "matake/picture?type=#{size}")
10
+ it 'should support size option' do
11
+ [:square, :small, :normal, :large].each do |size|
12
+ FbGraph::User.new('matake').picture(size).should == File.join(FbGraph::ROOT_URL, "matake/picture?type=#{size}")
13
+ FbGraph::User.new('matake').picture(:type => size).should == File.join(FbGraph::ROOT_URL, "matake/picture?type=#{size}")
14
+ end
13
15
  end
14
- end
15
16
 
16
- it 'should support width option' do
17
- FbGraph::User.new('matake').picture(:width => 13).should == File.join(FbGraph::ROOT_URL, "matake/picture?width=13")
18
- end
17
+ it 'should support width option' do
18
+ FbGraph::User.new('matake').picture(:width => 13).should == File.join(FbGraph::ROOT_URL, "matake/picture?width=13")
19
+ end
19
20
 
20
- it 'should support height option' do
21
- FbGraph::User.new('matake').picture(:height => 37).should == File.join(FbGraph::ROOT_URL, "matake/picture?height=37")
22
- end
21
+ it 'should support height option' do
22
+ FbGraph::User.new('matake').picture(:height => 37).should == File.join(FbGraph::ROOT_URL, "matake/picture?height=37")
23
+ end
23
24
 
24
- it 'should support width and height options at the same time' do
25
- # Because we can't be sure of order of arguments and order by itself doesn't matter
26
- FbGraph::User.new('matake').picture(:width => 13, :height => 37).should satisfy { |uri|
27
- [
28
- File.join(FbGraph::ROOT_URL, "matake/picture?width=13&height=37"),
29
- File.join(FbGraph::ROOT_URL, "matake/picture?height=37&width=13")
30
- ].include? uri
31
- }
32
- end
25
+ it 'should support width and height options at the same time' do
26
+ # Because we can't be sure of order of arguments and order by itself doesn't matter
27
+ FbGraph::User.new('matake').picture(:width => 13, :height => 37).should satisfy { |uri|
28
+ [
29
+ File.join(FbGraph::ROOT_URL, "matake/picture?width=13&height=37"),
30
+ File.join(FbGraph::ROOT_URL, "matake/picture?height=37&width=13")
31
+ ].include? uri
32
+ }
33
+ end
33
34
 
34
- context 'when no-redirect' do
35
- it 'should return Picture object' do
36
- mock_graph :get, 'matake/picture', 'users/picture/success', :params => {
37
- :redirect => 'false'
38
- } do
39
- picture = FbGraph::User.new('matake').picture(:redirect => false)
40
- picture.should be_instance_of FbGraph::Picture
35
+ context 'when no-redirect' do
36
+ it 'should return Picture object' do
37
+ mock_graph :get, 'matake/picture', 'users/picture/success', :params => {
38
+ :redirect => 'false'
39
+ } do
40
+ picture = FbGraph::User.new('matake').picture(:redirect => false)
41
+ picture.should be_instance_of FbGraph::Picture
42
+ end
41
43
  end
42
44
  end
43
45
  end
44
- end
45
46
 
46
- context 'when included by FbGraph::Page' do
47
- it 'should return image url' do
48
- FbGraph::Page.new('platform').picture.should == File.join(FbGraph::ROOT_URL, 'platform/picture')
49
- end
47
+ context 'when included by FbGraph::Page' do
48
+ it 'should return image url' do
49
+ FbGraph::Page.new('platform').picture.should == File.join(FbGraph::ROOT_URL, 'platform/picture')
50
+ end
50
51
 
51
- it 'should support size option' do
52
- [:square, :small, :normal, :large].each do |size|
53
- FbGraph::Page.new('platform').picture(size).should == File.join(FbGraph::ROOT_URL, "platform/picture?type=#{size}")
54
- FbGraph::Page.new('platform').picture(:type => size).should == File.join(FbGraph::ROOT_URL, "platform/picture?type=#{size}")
52
+ it 'should support size option' do
53
+ [:square, :small, :normal, :large].each do |size|
54
+ FbGraph::Page.new('platform').picture(size).should == File.join(FbGraph::ROOT_URL, "platform/picture?type=#{size}")
55
+ FbGraph::Page.new('platform').picture(:type => size).should == File.join(FbGraph::ROOT_URL, "platform/picture?type=#{size}")
56
+ end
55
57
  end
56
- end
57
58
 
58
- it 'should support width option' do
59
- FbGraph::Page.new('platform').picture(:width => 13).should == File.join(FbGraph::ROOT_URL, "platform/picture?width=13")
60
- end
59
+ it 'should support width option' do
60
+ FbGraph::Page.new('platform').picture(:width => 13).should == File.join(FbGraph::ROOT_URL, "platform/picture?width=13")
61
+ end
61
62
 
62
- it 'should support height option' do
63
- FbGraph::Page.new('platform').picture(:height => 37).should == File.join(FbGraph::ROOT_URL, "platform/picture?height=37")
63
+ it 'should support height option' do
64
+ FbGraph::Page.new('platform').picture(:height => 37).should == File.join(FbGraph::ROOT_URL, "platform/picture?height=37")
65
+ end
66
+
67
+ it 'should support width and height options at the same time' do
68
+ FbGraph::Page.new('platform').picture(:width => 13, :height => 37).should satisfy { |uri|
69
+ [
70
+ File.join(FbGraph::ROOT_URL, "platform/picture?width=13&height=37"),
71
+ File.join(FbGraph::ROOT_URL, "platform/picture?height=37&width=13")
72
+ ].include? uri
73
+ }
74
+ end
64
75
  end
76
+ end
77
+ end
65
78
 
66
- it 'should support width and height options at the same time' do
67
- FbGraph::Page.new('platform').picture(:width => 13, :height => 37).should satisfy { |uri|
68
- [
69
- File.join(FbGraph::ROOT_URL, "platform/picture?width=13&height=37"),
70
- File.join(FbGraph::ROOT_URL, "platform/picture?height=37&width=13")
71
- ].include? uri
72
- }
73
- end
79
+ describe FbGraph::Connections::Picture::Updatable do
80
+ describe '#picture!' do
81
+ it 'should update profile picture' do
82
+ mock_graph :post, 'FbGraph/picture', 'true', :access_token => 'page_token', :params => {
83
+ :picture => 'http://example.com/images/FbGraph.png'
84
+ } do
85
+ page = FbGraph::Page.new('FbGraph', :access_token => 'page_token')
86
+ page.picture!(
87
+ :picture => 'http://example.com/images/FbGraph.png'
88
+ ).should be_true
89
+ end
90
+ end
74
91
  end
75
92
  end
@@ -41,10 +41,12 @@ describe FbGraph::Page do
41
41
  end
42
42
  end
43
43
  its(:identifier) { should == '19292868552' }
44
- its(:name) { should == 'Facebook Platform' }
45
- its(:category) { should == 'Technology' }
46
- its(:like_count) { should == 578214 }
47
- its(:talking_about_count) { should == 40945 }
44
+ its(:name) { should == 'Facebook Developers' }
45
+ its(:category) { should == 'Product/service' }
46
+ its(:like_count) { should == 237499 }
47
+ its(:talking_about_count) { should == 17811 }
48
+ its(:cover) { should be_instance_of FbGraph::Cover }
49
+ its(:is_published) { should be_true }
48
50
 
49
51
  context 'when access_token field fetched' do
50
52
  subject do
@@ -1,14 +1,18 @@
1
1
  {
2
- "id": "19292868552",
3
- "name": "Facebook Platform",
4
- "picture": "http://profile.ak.fbcdn.net/profile-ak-snc1/object3/1566/8/s19292868552_1660.jpg",
5
- "link": "http://www.facebook.com/platform",
6
- "category": "Technology",
7
- "username": "platform",
8
- "founded": "May 2007",
9
- "company_overview": "Facebook Platform enables anyone to build social applications on Facebook and the web.",
10
- "mission": "To make the web more open and social.",
11
- "products": "Facebook Application Programming Interface (API)\nFacebook Query Language (FQL)\nFacebook Markup Language (FBML)\nFacebook JavaScript (FBJS)\nFacebook Connect\n",
12
- "likes": 578214,
13
- "talking_about_count": 40945
2
+ "name": "Facebook Developers",
3
+ "is_published": true,
4
+ "website": "http://developers.facebook.com",
5
+ "username": "FacebookDevelopers",
6
+ "company_overview": "Facebook Platform enables anyone to build social apps on Facebook, mobile, and the web.\n\n",
7
+ "about": "Build and distribute amazing social apps on Facebook. https://developers.facebook.com/ ",
8
+ "talking_about_count": 17811,
9
+ "category": "Product/service",
10
+ "id": "19292868552",
11
+ "link": "https://www.facebook.com/FacebookDevelopers",
12
+ "likes": 237499,
13
+ "cover": {
14
+ "cover_id": "10151124971508553",
15
+ "source": "https://fbcdn-sphotos-f-a.akamaihd.net/hphotos-ak-ash4/s720x720/418043_10151124971508553_1379621833_n.png",
16
+ "offset_y": 0
17
+ }
14
18
  }
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.8
4
+ version: 2.5.9
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-07 00:00:00.000000000 Z
12
+ date: 2012-12-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httpclient
@@ -285,6 +285,7 @@ files:
285
285
  - lib/fb_graph/connections/user_likes.rb
286
286
  - lib/fb_graph/connections/videos.rb
287
287
  - lib/fb_graph/connections/votes.rb
288
+ - lib/fb_graph/cover.rb
288
289
  - lib/fb_graph/debugger.rb
289
290
  - lib/fb_graph/doc.rb
290
291
  - lib/fb_graph/domain.rb
@@ -728,18 +729,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
728
729
  - - ! '>='
729
730
  - !ruby/object:Gem::Version
730
731
  version: '0'
731
- segments:
732
- - 0
733
- hash: -910629927856901231
734
732
  required_rubygems_version: !ruby/object:Gem::Requirement
735
733
  none: false
736
734
  requirements:
737
735
  - - ! '>='
738
736
  - !ruby/object:Gem::Version
739
737
  version: '0'
740
- segments:
741
- - 0
742
- hash: -910629927856901231
743
738
  requirements: []
744
739
  rubyforge_project:
745
740
  rubygems_version: 1.8.24