rack-oauth2 0.2.2.1 → 0.2.3

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
@@ -17,5 +17,6 @@ tmtags
17
17
  coverage
18
18
  rdoc
19
19
  pkg
20
+ Gemfile.lock
20
21
 
21
22
  ## PROJECT::SPECIFIC
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 nov matake
1
+ Copyright (c) 2010 nov matake
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ RSpec::Core::RakeTask.new(:spec)
6
6
 
7
7
  RSpec::Core::RakeTask.new(:rcov) do |spec|
8
8
  spec.rcov = true
9
- spec.rcov_opts = ['--exclude spec,gems']
9
+ spec.rcov_opts = ['-Ilib -Ispec --exclude spec,gems']
10
10
  end
11
11
 
12
12
  task :default => :spec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2.1
1
+ 0.2.3
data/lib/rack/oauth2.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'rack'
2
2
  require 'json'
3
3
  require 'active_support/core_ext'
4
+ require 'attr_required'
5
+ require 'attr_optional'
4
6
  require 'rack/oauth2/server'
5
7
 
6
8
  module Rack
@@ -3,33 +3,25 @@ module Rack
3
3
  module Server
4
4
  module Abstract
5
5
  class Request < Rack::Request
6
- attr_accessor :client_id, :scope
6
+ include AttrRequired, AttrOptional
7
+ attr_required :client_id
8
+ attr_optional :scope
7
9
 
8
10
  def initialize(env)
9
11
  super
10
- missing_params = verify_required_params
11
12
  @client_id ||= params['client_id']
12
13
  @scope = Array(params['scope'].to_s.split(' '))
13
- missing_params << :client_id if @client_id.blank?
14
- unless missing_params.blank?
15
- invalid_request!("'#{missing_params.join('\', \'')}' required.", :state => @state, :redirect_uri => @redirect_uri)
16
- end
17
- if params['client_id'].present? && @client_id != params['client_id']
18
- invalid_client!("Multiple client credentials are provided.")
19
- end
20
14
  end
21
15
 
22
- def required_params
23
- []
24
- end
25
-
26
- def verify_required_params
27
- missing_params = []
28
- required_params.each do |key|
29
- missing_params << key unless params[key.to_s]
16
+ def attr_missing_with_error_handling!
17
+ if params['client_id'].present? && @client_id != params['client_id']
18
+ invalid_client!("Multiple client credentials are provided.")
30
19
  end
31
- missing_params
20
+ attr_missing_without_error_handling!
21
+ rescue AttrRequired::AttrMissing => e
22
+ invalid_request!(e.message, :state => @state, :redirect_uri => @redirect_uri)
32
23
  end
24
+ alias_method_chain :attr_missing!, :error_handling
33
25
 
34
26
  end
35
27
  end
@@ -3,26 +3,14 @@ module Rack
3
3
  module Server
4
4
  module Abstract
5
5
  class Response < Rack::Response
6
+ include AttrRequired, AttrOptional
7
+
6
8
  def initialize(request)
7
9
  super([], 200, {})
8
10
  end
9
11
 
10
- def required_params
11
- []
12
- end
13
-
14
- def verify_required_params!
15
- missing_params = []
16
- required_params.each do |key|
17
- missing_params << key unless self.send(key)
18
- end
19
- unless missing_params.blank?
20
- raise "Setup '#{missing_params.join('\', \'')}' first!"
21
- end
22
- end
23
-
24
12
  def finish
25
- verify_required_params!
13
+ attr_missing!
26
14
  super
27
15
  end
28
16
  end
@@ -12,26 +12,25 @@ module Rack
12
12
 
13
13
  class Request < Abstract::Request
14
14
  include Error::Authorize
15
- attr_accessor :response_type, :redirect_uri, :state
15
+ attr_required :response_type
16
+ attr_optional :redirect_uri, :state
16
17
 
17
18
  def initialize(env)
18
19
  super
19
- @state = params['state']
20
20
  @redirect_uri = Util.parse_uri(params['redirect_uri']) if params['redirect_uri']
21
- end
22
-
23
- def required_params
24
- super + [:response_type]
21
+ @state = params['state']
25
22
  end
26
23
 
27
24
  def profile
28
- case params['response_type']
25
+ case params['response_type'].to_s
29
26
  when 'code'
30
27
  Code
31
28
  when 'token'
32
29
  Token
33
30
  when 'code_and_token'
34
31
  CodeAndToken
32
+ when ''
33
+ attr_missing!
35
34
  else
36
35
  unsupported_response_type!("'#{params['response_type']}' isn't supported.")
37
36
  end
@@ -40,7 +39,8 @@ module Rack
40
39
  end
41
40
 
42
41
  class Response < Abstract::Response
43
- attr_accessor :redirect_uri, :state, :approved
42
+ attr_required :redirect_uri
43
+ attr_optional :state, :approved
44
44
 
45
45
  def initialize(request)
46
46
  @state = request.state
@@ -14,15 +14,12 @@ module Rack
14
14
  def initialize(env)
15
15
  super
16
16
  @response_type = :code
17
+ attr_missing!
17
18
  end
18
19
  end
19
20
 
20
21
  class Response < Authorize::Response
21
- attr_accessor :code
22
-
23
- def required_params
24
- super + [:code]
25
- end
22
+ attr_required :code
26
23
 
27
24
  def finish
28
25
  if approved?
@@ -14,15 +14,13 @@ module Rack
14
14
  def initialize(env)
15
15
  super
16
16
  @response_type = :code_and_token
17
+ attr_missing!
17
18
  end
18
19
  end
19
20
 
20
21
  class Response < Authorize::Response
21
- attr_accessor :code, :access_token, :expires_in, :scope
22
-
23
- def required_params
24
- super + [:code, :access_token]
25
- end
22
+ attr_required :code, :access_token
23
+ attr_optional :expires_in, :scope
26
24
 
27
25
  def finish
28
26
  if approved?
@@ -14,15 +14,13 @@ module Rack
14
14
  def initialize(env)
15
15
  super
16
16
  @response_type = :token
17
+ attr_missing!
17
18
  end
18
19
  end
19
20
 
20
21
  class Response < Authorize::Response
21
- attr_accessor :access_token, :expires_in, :scope
22
-
23
- def required_params
24
- super + [:access_token]
25
- end
22
+ attr_required :access_token
23
+ attr_optional :expires_in, :scope
26
24
 
27
25
  def finish
28
26
  if approved?
@@ -15,7 +15,9 @@ module Rack
15
15
  class Request < Abstract::Request
16
16
  include Error::Token
17
17
 
18
- attr_accessor :grant_type, :client_secret, :via_authorization_header
18
+ attr_required :grant_type
19
+ attr_optional :client_secret
20
+ attr_accessor :via_authorization_header
19
21
 
20
22
  def initialize(env)
21
23
  auth = Rack::Auth::Basic::Request.new(env)
@@ -30,12 +32,8 @@ module Rack
30
32
  @grant_type = params['grant_type']
31
33
  end
32
34
 
33
- def required_params
34
- super + [:grant_type]
35
- end
36
-
37
35
  def profile(allow_no_profile = false)
38
- case params['grant_type']
36
+ case params['grant_type'].to_s
39
37
  when 'authorization_code'
40
38
  AuthorizationCode
41
39
  when 'password'
@@ -44,6 +42,8 @@ module Rack
44
42
  Assertion
45
43
  when 'refresh_token'
46
44
  RefreshToken
45
+ when ''
46
+ attr_missing!
47
47
  else
48
48
  unsupported_grant_type!("'#{params['grant_type']}' isn't supported.")
49
49
  end
@@ -52,11 +52,8 @@ module Rack
52
52
  end
53
53
 
54
54
  class Response < Abstract::Response
55
- attr_accessor :access_token, :expires_in, :refresh_token, :scope
56
-
57
- def required_params
58
- super + [:access_token]
59
- end
55
+ attr_required :access_token
56
+ attr_optional :expires_in, :refresh_token, :scope
60
57
 
61
58
  def finish
62
59
  params = {
@@ -11,17 +11,14 @@ module Rack
11
11
  end
12
12
 
13
13
  class Request < Token::Request
14
- attr_accessor :assertion_type, :assertion
14
+ attr_required :assertion_type, :assertion
15
15
 
16
16
  def initialize(env)
17
17
  super
18
18
  @grant_type = 'assertion'
19
19
  @assertion_type = params['assertion_type']
20
20
  @assertion = params['assertion']
21
- end
22
-
23
- def required_params
24
- super + [:assertion_type, :assertion]
21
+ attr_missing!
25
22
  end
26
23
  end
27
24
 
@@ -11,16 +11,13 @@ module Rack
11
11
  end
12
12
 
13
13
  class Request < Token::Request
14
- attr_accessor :code
14
+ attr_required :code
15
15
 
16
16
  def initialize(env)
17
17
  super
18
18
  @grant_type = :authorization_code
19
19
  @code = params['code']
20
- end
21
-
22
- def required_params
23
- super + [:code]
20
+ attr_missing!
24
21
  end
25
22
  end
26
23
 
@@ -11,17 +11,14 @@ module Rack
11
11
  end
12
12
 
13
13
  class Request < Token::Request
14
- attr_reader :username, :password
14
+ attr_required :username, :password
15
15
 
16
16
  def initialize(env)
17
17
  super
18
18
  @grant_type = :password
19
19
  @username = params['username']
20
20
  @password = params['password']
21
- end
22
-
23
- def required_params
24
- super + [:username, :password]
21
+ attr_missing!
25
22
  end
26
23
  end
27
24
 
@@ -11,16 +11,13 @@ module Rack
11
11
  end
12
12
 
13
13
  class Request < Token::Request
14
- attr_reader :refresh_token
14
+ attr_required :refresh_token
15
15
 
16
16
  def initialize(env)
17
17
  super
18
18
  @grant_type = 'refresh_token'
19
19
  @refresh_token = params['refresh_token']
20
- end
21
-
22
- def required_params
23
- super + [:refresh_token]
20
+ attr_missing!
24
21
  end
25
22
  end
26
23
 
data/rack-oauth2.gemspec CHANGED
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.add_runtime_dependency "json", ">= 1.4.3"
18
18
  s.add_runtime_dependency "activesupport", ">= 2.3"
19
19
  s.add_runtime_dependency "i18n"
20
+ s.add_runtime_dependency "attr_required", ">= 0.0.2"
20
21
  s.add_development_dependency "rake", ">= 0.8"
21
22
  s.add_development_dependency "rcov", ">= 0.9"
22
23
  s.add_development_dependency "rspec", ">= 2"
@@ -12,6 +12,7 @@ describe Rack::OAuth2::Server::Authorize::Request do
12
12
  before do
13
13
  @app = Rack::OAuth2::Server::Authorize.new(simple_app) do |request, response|
14
14
  response.code = "authorization_code"
15
+ response.redirect_uri ||= "http://client.example.com/callback/pre-registered"
15
16
  end
16
17
  @request = Rack::MockRequest.new @app
17
18
  end
@@ -1,3 +1,5 @@
1
+ require 'spec_helper.rb'
2
+
1
3
  describe Rack::OAuth2::Server::Util, ".parse_uri" do
2
4
 
3
5
  context "when String is given" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-oauth2
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 17
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 2
8
- - 2
9
- - 1
10
- version: 0.2.2.1
9
+ - 3
10
+ version: 0.2.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - nov matake
@@ -15,16 +15,18 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-29 00:00:00 +09:00
18
+ date: 2010-12-05 00:00:00 +09:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: rack
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
25
26
  requirements:
26
27
  - - ">="
27
28
  - !ruby/object:Gem::Version
29
+ hash: 13
28
30
  segments:
29
31
  - 1
30
32
  - 1
@@ -35,9 +37,11 @@ dependencies:
35
37
  name: json
36
38
  prerelease: false
37
39
  requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
38
41
  requirements:
39
42
  - - ">="
40
43
  - !ruby/object:Gem::Version
44
+ hash: 1
41
45
  segments:
42
46
  - 1
43
47
  - 4
@@ -49,9 +53,11 @@ dependencies:
49
53
  name: activesupport
50
54
  prerelease: false
51
55
  requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
52
57
  requirements:
53
58
  - - ">="
54
59
  - !ruby/object:Gem::Version
60
+ hash: 5
55
61
  segments:
56
62
  - 2
57
63
  - 3
@@ -62,52 +68,76 @@ dependencies:
62
68
  name: i18n
63
69
  prerelease: false
64
70
  requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
65
72
  requirements:
66
73
  - - ">="
67
74
  - !ruby/object:Gem::Version
75
+ hash: 3
68
76
  segments:
69
77
  - 0
70
78
  version: "0"
71
79
  type: :runtime
72
80
  version_requirements: *id004
73
81
  - !ruby/object:Gem::Dependency
74
- name: rake
82
+ name: attr_required
75
83
  prerelease: false
76
84
  requirement: &id005 !ruby/object:Gem::Requirement
85
+ none: false
77
86
  requirements:
78
87
  - - ">="
79
88
  - !ruby/object:Gem::Version
89
+ hash: 27
90
+ segments:
91
+ - 0
92
+ - 0
93
+ - 2
94
+ version: 0.0.2
95
+ type: :runtime
96
+ version_requirements: *id005
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ prerelease: false
100
+ requirement: &id006 !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ hash: 27
80
106
  segments:
81
107
  - 0
82
108
  - 8
83
109
  version: "0.8"
84
110
  type: :development
85
- version_requirements: *id005
111
+ version_requirements: *id006
86
112
  - !ruby/object:Gem::Dependency
87
113
  name: rcov
88
114
  prerelease: false
89
- requirement: &id006 !ruby/object:Gem::Requirement
115
+ requirement: &id007 !ruby/object:Gem::Requirement
116
+ none: false
90
117
  requirements:
91
118
  - - ">="
92
119
  - !ruby/object:Gem::Version
120
+ hash: 25
93
121
  segments:
94
122
  - 0
95
123
  - 9
96
124
  version: "0.9"
97
125
  type: :development
98
- version_requirements: *id006
126
+ version_requirements: *id007
99
127
  - !ruby/object:Gem::Dependency
100
128
  name: rspec
101
129
  prerelease: false
102
- requirement: &id007 !ruby/object:Gem::Requirement
130
+ requirement: &id008 !ruby/object:Gem::Requirement
131
+ none: false
103
132
  requirements:
104
133
  - - ">="
105
134
  - !ruby/object:Gem::Version
135
+ hash: 7
106
136
  segments:
107
137
  - 2
108
138
  version: "2"
109
139
  type: :development
110
- version_requirements: *id007
140
+ version_requirements: *id008
111
141
  description: Rack Middleware for OAuth2 server
112
142
  email: nov@matake.jp
113
143
  executables: []
@@ -122,7 +152,6 @@ files:
122
152
  - .gitignore
123
153
  - .rspec
124
154
  - Gemfile
125
- - Gemfile.lock
126
155
  - LICENSE
127
156
  - README.rdoc
128
157
  - Rakefile
@@ -175,16 +204,20 @@ rdoc_options:
175
204
  require_paths:
176
205
  - lib
177
206
  required_ruby_version: !ruby/object:Gem::Requirement
207
+ none: false
178
208
  requirements:
179
209
  - - ">="
180
210
  - !ruby/object:Gem::Version
211
+ hash: 3
181
212
  segments:
182
213
  - 0
183
214
  version: "0"
184
215
  required_rubygems_version: !ruby/object:Gem::Requirement
216
+ none: false
185
217
  requirements:
186
218
  - - ">="
187
219
  - !ruby/object:Gem::Version
220
+ hash: 23
188
221
  segments:
189
222
  - 1
190
223
  - 3
@@ -193,7 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
226
  requirements: []
194
227
 
195
228
  rubyforge_project:
196
- rubygems_version: 1.3.6
229
+ rubygems_version: 1.3.7
197
230
  signing_key:
198
231
  specification_version: 3
199
232
  summary: Rack Middleware for OAuth2 server
data/Gemfile.lock DELETED
@@ -1,41 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- rack-oauth2 (0.2.1)
5
- activesupport (>= 2.3)
6
- i18n
7
- json (= 1.4.3)
8
- rack (= 1.1)
9
-
10
- GEM
11
- specs:
12
- activesupport (3.0.1)
13
- diff-lcs (1.1.2)
14
- i18n (0.4.2)
15
- json (1.4.3)
16
- rack (1.1.0)
17
- rake (0.8.7)
18
- rcov (0.9.9)
19
- rspec (2.0.0)
20
- rspec-core (= 2.0.0)
21
- rspec-expectations (= 2.0.0)
22
- rspec-mocks (= 2.0.0)
23
- rspec-core (2.0.0)
24
- rspec-expectations (2.0.0)
25
- diff-lcs (>= 1.1.2)
26
- rspec-mocks (2.0.0)
27
- rspec-core (= 2.0.0)
28
- rspec-expectations (= 2.0.0)
29
-
30
- PLATFORMS
31
- ruby
32
-
33
- DEPENDENCIES
34
- activesupport (>= 2.3)
35
- i18n
36
- json (= 1.4.3)
37
- rack (= 1.1)
38
- rack-oauth2!
39
- rake (>= 0.8)
40
- rcov (>= 0.9)
41
- rspec (>= 2.0)