roy 0.3.0 → 0.3.1
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 +1 -1
- data/Rakefile +1 -1
- data/lib/roy/plugin/after.rb +12 -0
- data/lib/roy/plugin/basic_auth.rb +23 -0
- data/lib/roy/plugin/before.rb +10 -0
- data/lib/roy/plugin/render.rb +23 -0
- data/lib/roy/plugins.rb +4 -2
- data/lib/roy/version.rb +1 -1
- data/lib/roy.rb +1 -0
- data/test/{after_test.rb → plugins/after_test.rb} +3 -3
- data/test/plugins/basic_auth_test.rb +49 -0
- data/test/{before_test.rb → plugins/before_test.rb} +3 -3
- data/test/{plugins_test.rb → plugins/plugins_test.rb} +3 -3
- data/test/{render_test.rb → plugins/render_test.rb} +3 -3
- metadata +24 -21
- data/lib/roy/after.rb +0 -10
- data/lib/roy/before.rb +0 -8
- data/lib/roy/render.rb +0 -21
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
module Roy
|
2
|
+
module Plugin
|
3
|
+
module BasicAuth
|
4
|
+
def protected!
|
5
|
+
unless authorized?
|
6
|
+
realm = roy.conf.auth && roy.conf.auth[:realm] || 'Realm'
|
7
|
+
roy.response['WWW-Authenticate'] = %(Basic realm="#{realm}")
|
8
|
+
halt 401
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def authorized?
|
13
|
+
@auth ||= Rack::Auth::Basic::Request.new(roy.request.env)
|
14
|
+
(roy.conf.auth ||= {})[:credentials] ||= {'admin' => 'password'}
|
15
|
+
|
16
|
+
@auth.provided? && @auth.basic? && @auth.credentials &&
|
17
|
+
roy.conf.auth[:credentials].any? do |user, password|
|
18
|
+
[user, password] == @auth.credentials
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'tilt'
|
2
|
+
|
3
|
+
module Roy
|
4
|
+
module Plugin
|
5
|
+
module Render
|
6
|
+
|
7
|
+
def render(engine, view_or_string, params={}, &block)
|
8
|
+
options = roy.conf.render || {}
|
9
|
+
template = case view_or_string
|
10
|
+
when Symbol
|
11
|
+
file = [view_or_string.to_s, engine].map(&:to_s).join('.')
|
12
|
+
dir = roy.conf.views || 'views'
|
13
|
+
Tilt.new(File.join(dir, file), nil, options)
|
14
|
+
else
|
15
|
+
Tilt[engine].new(nil, nil, options) { view_or_string.to_s }
|
16
|
+
end
|
17
|
+
|
18
|
+
template.render(self, params, &block)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/roy/plugins.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
module Roy
|
2
|
+
module Plugin; end
|
3
|
+
|
2
4
|
def self.Plugins(*names)
|
3
5
|
return Module.new.tap do |mod|
|
4
6
|
names.each do |name|
|
5
7
|
if name.is_a?(Symbol)
|
6
|
-
require "roy/#{name}"
|
7
|
-
name = Roy.const_get("#{name}".capitalize.to_sym)
|
8
|
+
require "roy/plugin/#{name}"
|
9
|
+
name = Roy::Plugin.const_get("#{name}".capitalize.to_sym)
|
8
10
|
end
|
9
11
|
mod.send(:include, name)
|
10
12
|
end
|
data/lib/roy/version.rb
CHANGED
data/lib/roy.rb
CHANGED
@@ -0,0 +1,49 @@
|
|
1
|
+
require_relative '../helper'
|
2
|
+
require 'roy/plugin/basic_auth'
|
3
|
+
|
4
|
+
class BasicAuthTestObject
|
5
|
+
include Roy
|
6
|
+
include Roy::Plugin::BasicAuth
|
7
|
+
|
8
|
+
roy allow: [:get],
|
9
|
+
auth: {
|
10
|
+
realm: "Custom",
|
11
|
+
credentials: {'user' => 'password'}
|
12
|
+
}
|
13
|
+
|
14
|
+
def get(path)
|
15
|
+
protected!
|
16
|
+
'success'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class BasicAuthTest < MiniTest::Unit::TestCase
|
21
|
+
include Rack::Test::Methods
|
22
|
+
|
23
|
+
def app
|
24
|
+
BasicAuthTestObject.new
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_basic_auth_realm
|
28
|
+
get '/'
|
29
|
+
assert_match /Custom/, last_response['WWW-Authenticate']
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_basic_auth_protected
|
33
|
+
get '/'
|
34
|
+
assert_equal 401, last_response.status
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_basic_auth_authorized
|
38
|
+
authorize 'user', 'password'
|
39
|
+
get '/'
|
40
|
+
ok!
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_basic_auth_unauthorized
|
44
|
+
authorize 'foo', 'bar'
|
45
|
+
get '/'
|
46
|
+
fail!
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require_relative 'helper'
|
1
|
+
require_relative '../helper'
|
2
2
|
require 'roy/plugins'
|
3
|
-
require 'roy/before'
|
3
|
+
require 'roy/plugin/before'
|
4
4
|
|
5
5
|
class PluginsTestObject
|
6
6
|
include Roy
|
7
|
-
include Roy::Plugins(Before, :after)
|
7
|
+
include Roy::Plugins(Plugin::Before, :after)
|
8
8
|
|
9
9
|
roy allow: [:get],
|
10
10
|
before: lambda { |env|
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require_relative 'helper'
|
2
|
-
require 'roy/render'
|
1
|
+
require_relative '../helper'
|
2
|
+
require 'roy/plugin/render'
|
3
3
|
|
4
4
|
Templates = {
|
5
5
|
simple: %q(<%= "Hello world!" %>),
|
@@ -10,7 +10,7 @@ Templates = {
|
|
10
10
|
|
11
11
|
class RenderTestObject
|
12
12
|
include Roy
|
13
|
-
include Roy::Render
|
13
|
+
include Roy::Plugin::Render
|
14
14
|
|
15
15
|
roy allow: [:get],
|
16
16
|
views: 'test/views'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
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: 2011-11-
|
12
|
+
date: 2011-11-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
16
|
-
requirement: &
|
16
|
+
requirement: &19902600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *19902600
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: minitest
|
27
|
-
requirement: &
|
27
|
+
requirement: &19902080 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *19902080
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rack-test
|
38
|
-
requirement: &
|
38
|
+
requirement: &19901580 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *19901580
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: tilt
|
49
|
-
requirement: &
|
49
|
+
requirement: &19901080 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *19901080
|
58
58
|
description: ! 'roy is a small library which allows every Ruby object to be used
|
59
59
|
|
60
60
|
as a Rack application.'
|
@@ -70,21 +70,23 @@ files:
|
|
70
70
|
- README.md
|
71
71
|
- Rakefile
|
72
72
|
- lib/roy.rb
|
73
|
-
- lib/roy/after.rb
|
74
|
-
- lib/roy/
|
73
|
+
- lib/roy/plugin/after.rb
|
74
|
+
- lib/roy/plugin/basic_auth.rb
|
75
|
+
- lib/roy/plugin/before.rb
|
76
|
+
- lib/roy/plugin/render.rb
|
75
77
|
- lib/roy/plugins.rb
|
76
|
-
- lib/roy/render.rb
|
77
78
|
- lib/roy/version.rb
|
78
79
|
- roy.gemspec
|
79
|
-
- test/after_test.rb
|
80
80
|
- test/base_test.rb
|
81
|
-
- test/before_test.rb
|
82
81
|
- test/custom_options_test.rb
|
83
82
|
- test/defaults_test.rb
|
84
83
|
- test/helper.rb
|
85
|
-
- test/
|
84
|
+
- test/plugins/after_test.rb
|
85
|
+
- test/plugins/basic_auth_test.rb
|
86
|
+
- test/plugins/before_test.rb
|
87
|
+
- test/plugins/plugins_test.rb
|
88
|
+
- test/plugins/render_test.rb
|
86
89
|
- test/prefix_test.rb
|
87
|
-
- test/render_test.rb
|
88
90
|
- test/views/layout.erb
|
89
91
|
- test/views/test.erb
|
90
92
|
homepage: https://github.com/madx/roy
|
@@ -112,14 +114,15 @@ signing_key:
|
|
112
114
|
specification_version: 3
|
113
115
|
summary: make your objects REST-friendly
|
114
116
|
test_files:
|
115
|
-
- test/after_test.rb
|
116
117
|
- test/base_test.rb
|
117
|
-
- test/before_test.rb
|
118
118
|
- test/custom_options_test.rb
|
119
119
|
- test/defaults_test.rb
|
120
120
|
- test/helper.rb
|
121
|
-
- test/
|
121
|
+
- test/plugins/after_test.rb
|
122
|
+
- test/plugins/basic_auth_test.rb
|
123
|
+
- test/plugins/before_test.rb
|
124
|
+
- test/plugins/plugins_test.rb
|
125
|
+
- test/plugins/render_test.rb
|
122
126
|
- test/prefix_test.rb
|
123
|
-
- test/render_test.rb
|
124
127
|
- test/views/layout.erb
|
125
128
|
- test/views/test.erb
|
data/lib/roy/after.rb
DELETED
data/lib/roy/before.rb
DELETED
data/lib/roy/render.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'tilt'
|
2
|
-
|
3
|
-
module Roy
|
4
|
-
module Render
|
5
|
-
|
6
|
-
def render(engine, view_or_string, params={}, &block)
|
7
|
-
options = roy.conf.render || {}
|
8
|
-
template = case view_or_string
|
9
|
-
when Symbol
|
10
|
-
file = [view_or_string.to_s, engine].map(&:to_s).join('.')
|
11
|
-
dir = roy.conf.views || 'views'
|
12
|
-
Tilt.new(File.join(dir, file), nil, options)
|
13
|
-
else
|
14
|
-
Tilt[engine].new(nil, nil, options) { view_or_string.to_s }
|
15
|
-
end
|
16
|
-
|
17
|
-
template.render(self, params, &block)
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|