fb_graph 2.4.1 → 2.4.2

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 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