utopia 0.9.28 → 0.9.29

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.
@@ -0,0 +1,38 @@
1
+ # This file is part of the "Utopia Framework" project, and is licensed under the GNU AGPLv3.
2
+ # Copyright 2010 Samuel Williams. All rights reserved.
3
+ # See <utopia.rb> for licensing details.
4
+
5
+ module Utopia
6
+
7
+ HTTP_STATUS_CODES = {
8
+ :success => 200,
9
+ :created => 201,
10
+ :accepted => 202,
11
+ :moved => 301,
12
+ :found => 302,
13
+ :see_other => 303,
14
+ :not_modified => 304,
15
+ :redirect => 307,
16
+ :bad_request => 400,
17
+ :unauthorized => 401,
18
+ :forbidden => 403,
19
+ :not_found => 404,
20
+ :unsupported_method => 405,
21
+ :gone => 410,
22
+ :teapot => 418,
23
+ :error => 500,
24
+ :unimplemented => 501,
25
+ :unavailable => 503
26
+ }
27
+
28
+ HTTP_STATUS_DESCRIPTIONS = {
29
+ 400 => "Bad Request",
30
+ 401 => "Permission Denied",
31
+ 403 => "Access Forbidden",
32
+ 404 => "Resource Not Found",
33
+ 405 => "Unsupported Method",
34
+ 500 => "Internal Server Error",
35
+ 501 => "Not Implemented",
36
+ 503 => "Service Unavailable"
37
+ }
38
+ end
@@ -141,7 +141,6 @@ module Utopia
141
141
  end
142
142
 
143
143
  def parent
144
- # @begin_tags[-2]
145
144
  end_tags[-2]
146
145
  end
147
146
 
@@ -281,7 +280,7 @@ module Utopia
281
280
  @controller.lookup_node(path)
282
281
  end
283
282
 
284
- def local_path(path, base = nil)
283
+ def local_path(path = ".", base = nil)
285
284
  path = Path.create(path)
286
285
  root = Pathname.new(@controller.root)
287
286
 
@@ -301,7 +300,7 @@ module Utopia
301
300
  uri_path.dirname
302
301
  end
303
302
 
304
- def links(path, options = {}, &block)
303
+ def links(path = ".", options = {}, &block)
305
304
  path = uri_path.dirname + Path.create(path)
306
305
  links = Links.index(@controller.root, path, options)
307
306
 
@@ -4,6 +4,7 @@
4
4
 
5
5
  require 'utopia/middleware'
6
6
  require 'utopia/path'
7
+ require 'utopia/http_status_codes'
7
8
 
8
9
  class Rack::Request
9
10
  def controller(&block)
@@ -75,29 +76,61 @@ module Utopia
75
76
  action = lookup(path)
76
77
 
77
78
  if action
78
- action.call(path, request)
79
- else
80
- return nil
79
+ return respond_with(action.call(path, request))
81
80
  end
82
- end
83
-
84
- def permission_denied
85
- [403, {}, ["Permission Denied!"]]
81
+
82
+ return nil
86
83
  end
87
84
 
88
85
  def call(env)
89
86
  @controller.app.call(env)
90
87
  end
91
88
 
92
- def redirect(target, status=302)
93
- Rack::Response.new([], status, "Location" => target.to_s).finish
89
+ def redirect(target, status = 302)
90
+ {:redirect => target, :status => status}
94
91
  end
95
92
 
96
- def permission_denied
97
- [403, {}, ["Permission Denied!"]]
93
+ def respond_with(*args)
94
+ return args[0] if args[0] == nil || Array === args[0]
95
+
96
+ status = 200
97
+ options = nil
98
+
99
+ if Numeric === args[0] || Symbol === args[0]
100
+ status = args[0]
101
+ options = args[1] || {}
102
+ else
103
+ options = args[0]
104
+ status = options[:status] || status
105
+ end
106
+
107
+ status = Utopia::HTTP_STATUS_CODES[status] || status
108
+ headers = options[:headers] || {}
109
+
110
+ if options[:type]
111
+ headers['Content-Type'] ||= options[:type]
112
+ end
113
+
114
+ body = []
115
+ if options[:body]
116
+ body = options[:body]
117
+ elsif options[:content]
118
+ body = [options[:content]]
119
+ elsif status >= 300
120
+ body = [Utopia::HTTP_STATUS_DESCRIPTIONS[status] || 'Status #{status}']
121
+ end
122
+
123
+ if options[:redirect]
124
+ headers["Location"] = options[:redirect]
125
+ status = 302 if status < 300 || status >= 400
126
+ end
127
+
128
+ # Utopia::LOG.debug([status, headers, body].inspect)
129
+ return [status, headers, body]
98
130
  end
99
131
 
100
132
  def process!(path, request)
133
+ passthrough(path, request)
101
134
  end
102
135
 
103
136
  def self.require_local(path)
@@ -112,7 +145,7 @@ module Utopia
112
145
  LOG.info "#{self.class.name}: Running in #{@root}"
113
146
 
114
147
  @controllers = {}
115
- @cache_controllers = true
148
+ @cache_controllers = (UTOPIA_ENV == :production)
116
149
 
117
150
  if options[:controller_file]
118
151
  @controller_file = options[:controller_file]
@@ -73,8 +73,6 @@ class Utopia::Tags::Gallery
73
73
  def initialize(node, path)
74
74
  @node = node
75
75
  @path = path
76
-
77
- Utopia::LOG.debug("node: #{node.inspect} path: #{path}")
78
76
  end
79
77
 
80
78
  def metadata
@@ -93,13 +91,9 @@ class Utopia::Tags::Gallery
93
91
  paths = []
94
92
  local_path = @node.local_path(@path)
95
93
 
96
- Utopia::LOG.debug("Scanning #{local_path}")
97
-
98
94
  Dir.entries(local_path).each do |filename|
99
95
  next unless filename.match(options[:filter])
100
96
 
101
- Utopia::LOG.debug("Filename #{filename} matched filter...")
102
-
103
97
  fullpath = File.join(local_path, filename)
104
98
 
105
99
  paths << ImagePath.new(@path + filename)
@@ -6,7 +6,7 @@ module Utopia
6
6
  module VERSION #:nodoc:
7
7
  MAJOR = 0
8
8
  MINOR = 9
9
- TINY = 28
9
+ TINY = 29
10
10
 
11
11
  STRING = [MAJOR, MINOR, TINY].join('.')
12
12
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 9
8
- - 28
9
- version: 0.9.28
8
+ - 29
9
+ version: 0.9.29
10
10
  platform: ruby
11
11
  authors:
12
12
  - Samuel Williams
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-20 00:00:00 +12:00
17
+ date: 2010-05-16 00:00:00 +12:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -102,6 +102,7 @@ files:
102
102
  - ext/utopia/xnode/fast_scanner/parser.c
103
103
  - lib/utopia/etanni.rb
104
104
  - lib/utopia/extensions.rb
105
+ - lib/utopia/http_status_codes.rb
105
106
  - lib/utopia/link.rb
106
107
  - lib/utopia/middleware/all.rb
107
108
  - lib/utopia/middleware/benchmark.rb
@@ -117,7 +118,6 @@ files:
117
118
  - lib/utopia/middleware/static.rb
118
119
  - lib/utopia/middleware.rb
119
120
  - lib/utopia/path.rb
120
- - lib/utopia/response_helper.rb
121
121
  - lib/utopia/session/encrypted_cookie.rb
122
122
  - lib/utopia/tag.rb
123
123
  - lib/utopia/tags/all.rb
@@ -1,11 +0,0 @@
1
- # This file is part of the "Utopia Framework" project, and is licensed under the GNU AGPLv3.
2
- # Copyright 2010 Samuel Williams. All rights reserved.
3
- # See <utopia.rb> for licensing details.
4
-
5
- module Rack
6
- class Response
7
- def self.create(response, &block)
8
- self.new(response[2], response[0], response[1], &block)
9
- end
10
- end
11
- end