fb_graph 2.5.5 → 2.5.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/.gitignore CHANGED
@@ -22,3 +22,4 @@ rdoc
22
22
  pkg
23
23
 
24
24
  ## PROJECT::SPECIFIC
25
+ .rbenv-version
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fb_graph (2.5.3)
4
+ fb_graph (2.5.6)
5
5
  httpclient (>= 2.2.0.2)
6
6
  json
7
7
  rack-oauth2 (>= 0.14.4)
@@ -28,7 +28,7 @@ GEM
28
28
  multi_json (~> 1.0)
29
29
  addressable (2.3.2)
30
30
  attr_required (0.0.5)
31
- builder (3.0.3)
31
+ builder (3.0.4)
32
32
  configatron (2.9.1)
33
33
  yamler (>= 0.1.0)
34
34
  cover_me (1.2.0)
@@ -54,7 +54,7 @@ GEM
54
54
  i18n
55
55
  multi_json (>= 1.3.6)
56
56
  rack (>= 1.1)
57
- rack-test (0.6.1)
57
+ rack-test (0.6.2)
58
58
  rack (>= 1.0)
59
59
  rake (0.9.2.2)
60
60
  rspec (2.11.0)
@@ -64,14 +64,14 @@ GEM
64
64
  rspec-core (2.11.1)
65
65
  rspec-expectations (2.11.3)
66
66
  diff-lcs (~> 1.1.3)
67
- rspec-mocks (2.11.2)
67
+ rspec-mocks (2.11.3)
68
68
  sprockets (2.1.3)
69
69
  hike (~> 1.2)
70
70
  rack (~> 1.0)
71
71
  tilt (~> 1.1, != 1.3.0)
72
72
  tilt (1.3.3)
73
- tzinfo (0.3.33)
74
- webmock (1.8.10)
73
+ tzinfo (0.3.34)
74
+ webmock (1.8.11)
75
75
  addressable (>= 2.2.7)
76
76
  crack (>= 0.1.7)
77
77
  yamler (0.1.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.5.5
1
+ 2.5.6
@@ -42,11 +42,17 @@ module FbGraph
42
42
  cache_collection attributes, :comments
43
43
  end
44
44
 
45
- def picture_with_access_token(size = nil)
46
- raise Unauthorized.new('Album picture connection requires an access token') unless self.access_token
47
- _endpoint_ = URI.parse picture_without_access_token(size)
48
- _endpoint_.query = [_endpoint_.query, {:access_token => self.access_token.to_s}.to_query].compact.join('&')
49
- _endpoint_.to_s
45
+ def picture_with_access_token(options_or_size = {})
46
+ response = picture_without_access_token options_or_size
47
+ if response.is_a?(FbGraph::Picture)
48
+ response
49
+ else
50
+ _endpoint_ = URI.parse response
51
+ if self.access_token
52
+ _endpoint_.query = [_endpoint_.query, {:access_token => self.access_token.to_s}.to_query].compact.join('&')
53
+ end
54
+ _endpoint_.to_s
55
+ end
50
56
  end
51
57
  alias_method_chain :picture, :access_token
52
58
  end
@@ -1,12 +1,32 @@
1
1
  module FbGraph
2
2
  module Connections
3
3
  module Picture
4
- def picture(size = nil)
5
- _endpoint_ = "#{self.endpoint}/picture"
6
- if size
7
- _endpoint_ += "?type=#{size}"
4
+ # User can specify size in two ways:
5
+ # 1. By type: square | small | normal | large
6
+ # 2. By width and height, so facebook return the _closest_
7
+ # match to the size you specified, if only one parameter
8
+ # is set, then facebook will return square image
9
+ # See: https://developers.facebook.com/docs/reference/api/user/
10
+ def picture(options_or_size = {})
11
+ options = if options_or_size.is_a?(String) || options_or_size.is_a?(Symbol)
12
+ {:type => options_or_size}
13
+ else
14
+ options_or_size
15
+ end
16
+ _endpoint_ = ["#{self.endpoint}/picture", options.to_query].delete_if(&:blank?).join('?')
17
+
18
+ if options[:redirect] == false
19
+ response = get options.merge(
20
+ :connection => :picture,
21
+
22
+ # NOTE: can be removed when addressable 2.3.3+ released with this fix
23
+ # https://github.com/sporkmonger/addressable/commit/421a88fed1d2f14426f15158f3712ab563581327
24
+ :redirect => 'false'
25
+ )
26
+ FbGraph::Picture.new response[:data]
27
+ else
28
+ _endpoint_
8
29
  end
9
- _endpoint_
10
30
  end
11
31
  end
12
32
  end
data/lib/fb_graph/node.rb CHANGED
@@ -113,7 +113,6 @@ module FbGraph
113
113
  # ref) http://blog.livedoor.jp/idea_and_players/archives/5184702.html
114
114
  value.tempfile
115
115
  else
116
- puts value.class
117
116
  value.to_json
118
117
  end
119
118
  end
@@ -0,0 +1,12 @@
1
+ module FbGraph
2
+ class Picture
3
+ include Comparison
4
+
5
+ attr_accessor :is_silhouette, :url
6
+
7
+ def initialize(attributes = {})
8
+ @is_silhouette = attributes[:is_silhouette]
9
+ @url = attributes[:url]
10
+ end
11
+ end
12
+ end
data/lib/fb_graph.rb CHANGED
@@ -69,6 +69,7 @@ require 'fb_graph/searchable'
69
69
  require 'fb_graph/action'
70
70
  require 'fb_graph/education'
71
71
  require 'fb_graph/location'
72
+ require 'fb_graph/picture'
72
73
  require 'fb_graph/poke'
73
74
  require 'fb_graph/privacy'
74
75
  require 'fb_graph/role'
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe FbGraph::Album do
4
-
5
4
  describe '.new' do
6
5
  it 'should setup all supported attributes' do
7
6
  attributes = {
@@ -66,21 +65,29 @@ describe FbGraph::Album do
66
65
 
67
66
  describe '#picture' do
68
67
  let(:album) { FbGraph::Album.new('12345') }
69
- subject { album }
68
+ subject { album.picture }
70
69
 
71
70
  context 'when access token is given' do
72
71
  before { album.access_token = 'access_token' }
73
- its(:picture) { should == File.join(FbGraph::ROOT_URL, '12345/picture?access_token=access_token') }
72
+ it { should == File.join(FbGraph::ROOT_URL, '12345/picture?access_token=access_token') }
74
73
  it 'should support size' do
75
74
  album.picture(:small).should == File.join(FbGraph::ROOT_URL, '12345/picture?type=small&access_token=access_token')
76
75
  end
77
76
  end
78
77
 
79
- context 'otherwise' do
80
- it do
81
- expect { album.picture }.to raise_error(FbGraph::Unauthorized)
78
+ context 'when no access token' do
79
+ it { should == File.join(FbGraph::ROOT_URL, '12345/picture') }
80
+ end
81
+
82
+ context 'when no redirect' do
83
+ before { album.access_token = 'access_token' }
84
+ it 'should return FbGraph::Picture' do
85
+ mock_graph :get, '12345/picture', 'albums/picture/success', :access_token => 'access_token', :params => {
86
+ :redirect => 'false'
87
+ } do
88
+ album.picture(:redirect => false).should be_instance_of FbGraph::Picture
89
+ end
82
90
  end
83
91
  end
84
92
  end
85
-
86
93
  end
@@ -1,15 +1,44 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe FbGraph::Connections::Picture, '#picture' do
4
-
5
4
  context 'when included by FbGraph::User' do
6
5
  it 'should return image url' do
7
6
  FbGraph::User.new('matake').picture.should == File.join(FbGraph::ROOT_URL, 'matake/picture')
8
7
  end
9
8
 
10
9
  it 'should support size option' do
11
- [:square, :large].each do |size|
10
+ [:square, :small, :normal, :large].each do |size|
12
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}")
13
+ end
14
+ end
15
+
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
19
+
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
23
+
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
33
+
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
41
+ end
13
42
  end
14
43
  end
15
44
  end
@@ -20,10 +49,27 @@ describe FbGraph::Connections::Picture, '#picture' do
20
49
  end
21
50
 
22
51
  it 'should support size option' do
23
- [:square, :large].each do |size|
52
+ [:square, :small, :normal, :large].each do |size|
24
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}")
25
55
  end
26
56
  end
27
- end
28
57
 
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
61
+
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")
64
+ end
65
+
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
74
+ end
29
75
  end
@@ -0,0 +1,5 @@
1
+ {
2
+ "data": {
3
+ "url": "http://static.ak.fbcdn.net/rsrc.php/v1/yC/r/gtEJuZGrBLG.jpg"
4
+ }
5
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "data": {
3
+ "url": "http://profile.ak.fbcdn.net/hprofile-ak-snc6/260832_579612276_1894390292_q.jpg",
4
+ "is_silhouette": false
5
+ }
6
+ }
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.5
4
+ version: 2.5.6
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-10-16 00:00:00.000000000 Z
12
+ date: 2012-11-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httpclient
@@ -312,6 +312,7 @@ files:
312
312
  - lib/fb_graph/page.rb
313
313
  - lib/fb_graph/page/category_attributes.rb
314
314
  - lib/fb_graph/photo.rb
315
+ - lib/fb_graph/picture.rb
315
316
  - lib/fb_graph/place.rb
316
317
  - lib/fb_graph/poke.rb
317
318
  - lib/fb_graph/post.rb
@@ -521,6 +522,7 @@ files:
521
522
  - spec/mock_json/ad_keywords/buffy_search.json
522
523
  - spec/mock_json/albums/photos/matake_private.json
523
524
  - spec/mock_json/albums/photos/post_with_valid_access_token.json
525
+ - spec/mock_json/albums/picture/success.json
524
526
  - spec/mock_json/app_token_response.json
525
527
  - spec/mock_json/applications/accounts/private.json
526
528
  - spec/mock_json/applications/achievements/sample.json
@@ -687,6 +689,7 @@ files:
687
689
  - spec/mock_json/users/notifications/all.json
688
690
  - spec/mock_json/users/outbox/me_private.json
689
691
  - spec/mock_json/users/permissions/me_private.json
692
+ - spec/mock_json/users/picture/success.json
690
693
  - spec/mock_json/users/pokes/sample.json
691
694
  - spec/mock_json/users/posts/arjun_private.json
692
695
  - spec/mock_json/users/posts/arjun_public.json
@@ -720,12 +723,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
720
723
  - - ! '>='
721
724
  - !ruby/object:Gem::Version
722
725
  version: '0'
726
+ segments:
727
+ - 0
728
+ hash: 77075375696592851
723
729
  required_rubygems_version: !ruby/object:Gem::Requirement
724
730
  none: false
725
731
  requirements:
726
732
  - - ! '>='
727
733
  - !ruby/object:Gem::Version
728
734
  version: '0'
735
+ segments:
736
+ - 0
737
+ hash: 77075375696592851
729
738
  requirements: []
730
739
  rubyforge_project:
731
740
  rubygems_version: 1.8.24
@@ -909,6 +918,7 @@ test_files:
909
918
  - spec/mock_json/ad_keywords/buffy_search.json
910
919
  - spec/mock_json/albums/photos/matake_private.json
911
920
  - spec/mock_json/albums/photos/post_with_valid_access_token.json
921
+ - spec/mock_json/albums/picture/success.json
912
922
  - spec/mock_json/app_token_response.json
913
923
  - spec/mock_json/applications/accounts/private.json
914
924
  - spec/mock_json/applications/achievements/sample.json
@@ -1075,6 +1085,7 @@ test_files:
1075
1085
  - spec/mock_json/users/notifications/all.json
1076
1086
  - spec/mock_json/users/outbox/me_private.json
1077
1087
  - spec/mock_json/users/permissions/me_private.json
1088
+ - spec/mock_json/users/picture/success.json
1078
1089
  - spec/mock_json/users/pokes/sample.json
1079
1090
  - spec/mock_json/users/posts/arjun_private.json
1080
1091
  - spec/mock_json/users/posts/arjun_public.json