fb_graph 2.4.1 → 2.4.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fb_graph (2.4.0)
4
+ fb_graph (2.4.1)
5
5
  httpclient (>= 2.2.0.2)
6
6
  rack-oauth2 (>= 0.14.0)
7
+ tzinfo
7
8
 
8
9
  GEM
9
10
  remote: http://rubygems.org/
@@ -24,8 +25,8 @@ GEM
24
25
  activesupport (3.2.1)
25
26
  i18n (~> 0.6)
26
27
  multi_json (~> 1.0)
27
- addressable (2.2.6)
28
- attr_required (0.0.3)
28
+ addressable (2.2.7)
29
+ attr_required (0.0.5)
29
30
  builder (3.0.0)
30
31
  configatron (2.9.0)
31
32
  yamler (>= 0.1.0)
@@ -39,15 +40,15 @@ GEM
39
40
  hike (1.2.1)
40
41
  httpclient (2.2.4)
41
42
  i18n (0.6.0)
42
- journey (1.0.1)
43
+ journey (1.0.3)
43
44
  json (1.6.5)
44
- multi_json (1.0.4)
45
+ multi_json (1.1.0)
45
46
  rack (1.4.1)
46
47
  rack-cache (1.1)
47
48
  rack (>= 0.4)
48
- rack-oauth2 (0.14.0)
49
+ rack-oauth2 (0.14.2)
49
50
  activesupport (>= 2.3)
50
- attr_required (>= 0.0.3)
51
+ attr_required (>= 0.0.5)
51
52
  httpclient (>= 2.2.0.2)
52
53
  i18n
53
54
  json (>= 1.4.3)
@@ -68,8 +69,9 @@ GEM
68
69
  rack (~> 1.0)
69
70
  tilt (~> 1.1, != 1.3.0)
70
71
  tilt (1.3.3)
71
- webmock (1.7.10)
72
- addressable (~> 2.2, > 2.2.5)
72
+ tzinfo (0.3.31)
73
+ webmock (1.8.0)
74
+ addressable (>= 2.2.7)
73
75
  crack (>= 0.1.7)
74
76
  yamler (0.1.0)
75
77
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.4.1
1
+ 2.4.2
data/fb_graph.gemspec CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
14
14
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
15
  s.add_runtime_dependency "httpclient", ">= 2.2.0.2"
16
16
  s.add_runtime_dependency "rack-oauth2", ">= 0.14.0"
17
+ s.add_runtime_dependency "tzinfo"
17
18
  s.add_development_dependency "rake", ">= 0.8"
18
19
  if RUBY_VERSION >= '1.9'
19
20
  s.add_development_dependency "cover_me", ">= 1.2.0"
@@ -24,7 +24,12 @@ module FbGraph
24
24
 
25
25
  # Check the WWW-Authenticate header, since it seems to be more standardized than the response
26
26
  # body error information.
27
- if www_authenticate = headers["WWW-Authenticate"]
27
+ # The complex lookup is needed to follow the HTTP spec - headers should be looked up
28
+ # without regard to case.
29
+ www_authenticate = headers.select do |name, value|
30
+ name.upcase == "WWW-Authenticate".upcase
31
+ end.to_a.flatten.second
32
+ if www_authenticate
28
33
  # Session expiration/invalidation is very common. Check for that first.
29
34
  if www_authenticate =~ /invalid_token/ && response[:error][:message] =~ /session has been invalidated/
30
35
  raise InvalidSession.new("#{response[:error][:type]} :: #{response[:error][:message]}")
@@ -94,7 +94,13 @@ module FbGraph
94
94
  date, index, mode = key.split('_')
95
95
  index = index.to_i - 1
96
96
  date, mode = date.to_sym, mode.to_sym
97
- time = Time.parse(value)
97
+ if value.class == Fixnum
98
+ # The Unix "time" returned is a weird approximation of the string value.
99
+ # Example: "20:00" might be represented as 446400, which is 1970-01-05T20:00:00-08:00
100
+ time = Time.at(value).in_time_zone("Pacific Time (US & Canada)")
101
+ else
102
+ time = Time.parse(value)
103
+ end
98
104
  time = Time.utc(1970, 1, 1, time.hour, time.min)
99
105
  @hours[date] ||= []
100
106
  @hours[date][index] ||= {}
@@ -109,4 +115,4 @@ module FbGraph
109
115
 
110
116
  include CategoryAttributes
111
117
  end
112
- end
118
+ end
@@ -91,6 +91,18 @@ describe FbGraph::Exception, ".handle_httpclient_error" do
91
91
  it "should raise an InvalidToken exception" do
92
92
  lambda {FbGraph::Exception.handle_httpclient_error(parsed_response, headers)}.should raise_exception(FbGraph::InvalidToken)
93
93
  end
94
+
95
+ context "with a variant capitalization of the header" do
96
+ let(:headers) do
97
+ {
98
+ "Www-Authenticate" => 'OAuth "Facebook Platform" "invalid_token" "Invalid OAuth access token."'
99
+ }
100
+ end
101
+
102
+ it "should raise an InvalidToken exception" do
103
+ lambda {FbGraph::Exception.handle_httpclient_error(parsed_response, headers)}.should raise_exception(FbGraph::InvalidToken)
104
+ end
105
+ end
94
106
  end
95
107
 
96
108
  context "with an invalid request" do
@@ -62,4 +62,27 @@ describe FbGraph::Page do
62
62
  )
63
63
  end
64
64
  end
65
- end
65
+
66
+ context 'for local_business category with hours as Fixnums' do
67
+ let :page do
68
+ mock_graph :get, 'local_business', 'pages/categories/local_business_fixnum' do
69
+ FbGraph::Page.new('local_business').fetch
70
+ end
71
+ end
72
+ subject { page }
73
+
74
+ its(:hours) { should be_instance_of Hash }
75
+ its(:hours) do
76
+ should == {
77
+ :mon => [{
78
+ :open => Time.parse('1970-01-01 10:00:00 UTC'),
79
+ :close => Time.parse('1970-01-01 20:00:00 UTC')
80
+ }],
81
+ :tue=>[{
82
+ :open => Time.parse('1970-01-01 10:00:00 UTC'),
83
+ :close => Time.parse('1970-01-01 20:00:00 UTC')
84
+ }]
85
+ }
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,56 @@
1
+ {
2
+ "id": "196723247025808",
3
+ "name": "Local Business Sample",
4
+ "picture": "http:\/\/profile.ak.fbcdn.net\/static-ak\/rsrc.php\/v1\/y0\/r\/XsEg9L6Ie5_.jpg",
5
+ "link": "http:\/\/www.facebook.com\/pages\/Local-Business-Sample\/196723247025808",
6
+ "category": "Bar",
7
+ "location": {
8
+ "street": "\u65b0\u7530\u8fba",
9
+ "city": "Kyoto",
10
+ "country": "Japan",
11
+ "zip": "513001"
12
+ },
13
+ "parking": {
14
+ "street": 1,
15
+ "lot": 0,
16
+ "valet": 1
17
+ },
18
+ "price_range": "$ (0-10)",
19
+ "public_transit": "30 min from Kyoto St.",
20
+ "hours": {
21
+ "mon_1_open": 64800,
22
+ "mon_1_close": 100800,
23
+ "tue_1_open": 64800,
24
+ "tue_1_close": 100800
25
+ },
26
+ "attire": "Casual",
27
+ "payment_options": {
28
+ "cash_only": 0,
29
+ "visa": 1,
30
+ "amex": 1,
31
+ "mastercard": 1,
32
+ "discover": 0
33
+ },
34
+ "culinary_team": "Team FbGraph!",
35
+ "general_manager": "Nov Matake",
36
+ "restaurant_services": {
37
+ "reserve": 1,
38
+ "walkins": 0,
39
+ "groups": 1,
40
+ "kids": 0,
41
+ "takeout": 0,
42
+ "delivery": 0,
43
+ "catering": 0,
44
+ "waiter": 0,
45
+ "outdoor": 0
46
+ },
47
+ "restaurant_specialties": {
48
+ "breakfast": 0,
49
+ "lunch": 0,
50
+ "dinner": 1,
51
+ "coffee": 0,
52
+ "drinks": 1
53
+ },
54
+ "phone": "1234567890",
55
+ "can_post": true
56
+ }
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.4.1
4
+ version: 2.4.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-22 00:00:00.000000000Z
12
+ date: 2012-02-23 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httpclient
16
- requirement: &70212658806840 !ruby/object:Gem::Requirement
16
+ requirement: &70278768617680 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.2.0.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70212658806840
24
+ version_requirements: *70278768617680
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rack-oauth2
27
- requirement: &70212658805880 !ruby/object:Gem::Requirement
27
+ requirement: &70278768615940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,21 @@ dependencies:
32
32
  version: 0.14.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70212658805880
35
+ version_requirements: *70278768615940
36
+ - !ruby/object:Gem::Dependency
37
+ name: tzinfo
38
+ requirement: &70278768614800 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70278768614800
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: rake
38
- requirement: &70212658804580 !ruby/object:Gem::Requirement
49
+ requirement: &70278768612440 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: '0.8'
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *70212658804580
57
+ version_requirements: *70278768612440
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: cover_me
49
- requirement: &70212658799880 !ruby/object:Gem::Requirement
60
+ requirement: &70278768608100 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: 1.2.0
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70212658799880
68
+ version_requirements: *70278768608100
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: rspec
60
- requirement: &70212658798420 !ruby/object:Gem::Requirement
71
+ requirement: &70278768605200 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,10 +76,10 @@ dependencies:
65
76
  version: '2'
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70212658798420
79
+ version_requirements: *70278768605200
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: webmock
71
- requirement: &70212658795800 !ruby/object:Gem::Requirement
82
+ requirement: &70278768602580 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ! '>='
@@ -76,10 +87,10 @@ dependencies:
76
87
  version: 1.6.2
77
88
  type: :development
78
89
  prerelease: false
79
- version_requirements: *70212658795800
90
+ version_requirements: *70278768602580
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: actionpack
82
- requirement: &70212658793320 !ruby/object:Gem::Requirement
93
+ requirement: &70278768601400 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ! '>='
@@ -87,7 +98,7 @@ dependencies:
87
98
  version: 3.0.6
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *70212658793320
101
+ version_requirements: *70278768601400
91
102
  description: A full-stack Facebook Graph API wrapper in Ruby.
92
103
  email: nov@matake.jp
93
104
  executables: []
@@ -472,6 +483,7 @@ files:
472
483
  - spec/mock_json/pages/blocked/show_blocked.json
473
484
  - spec/mock_json/pages/blocked/show_non_blocked.json
474
485
  - spec/mock_json/pages/categories/local_business.json
486
+ - spec/mock_json/pages/categories/local_business_fixnum.json
475
487
  - spec/mock_json/pages/categories/movie.json
476
488
  - spec/mock_json/pages/categories/music.json
477
489
  - spec/mock_json/pages/categories/person.json
@@ -835,6 +847,7 @@ test_files:
835
847
  - spec/mock_json/pages/blocked/show_blocked.json
836
848
  - spec/mock_json/pages/blocked/show_non_blocked.json
837
849
  - spec/mock_json/pages/categories/local_business.json
850
+ - spec/mock_json/pages/categories/local_business_fixnum.json
838
851
  - spec/mock_json/pages/categories/movie.json
839
852
  - spec/mock_json/pages/categories/music.json
840
853
  - spec/mock_json/pages/categories/person.json