mirror of
https://github.com/sinatra/sinatra
synced 2023-03-27 23:18:01 -04:00
add :status option to send_file. fixes #429.
This commit is contained in:
parent
5eb65ef9b0
commit
df195cdd22
4 changed files with 12 additions and 1 deletions
2
CHANGES
2
CHANGES
|
@ -3,6 +3,8 @@
|
||||||
* No longer include Sinatra::Delegator in Object, instead extend the main
|
* No longer include Sinatra::Delegator in Object, instead extend the main
|
||||||
object only. (Konstantin Haase)
|
object only. (Konstantin Haase)
|
||||||
|
|
||||||
|
* Add :status option support to send_file. (Konstantin Haase)
|
||||||
|
|
||||||
* Exception#code is only used when :use_code is enabled and displays a warning.
|
* Exception#code is only used when :use_code is enabled and displays a warning.
|
||||||
Moreover, it will be ignored if the value is not between 400 and 599. You
|
Moreover, it will be ignored if the value is not between 400 and 599. You
|
||||||
should use Exception#http_status instead. (Konstantin Haase)
|
should use Exception#http_status instead. (Konstantin Haase)
|
||||||
|
|
|
@ -1070,6 +1070,9 @@ The options are:
|
||||||
[length]
|
[length]
|
||||||
Content-Length header, defaults to file size.
|
Content-Length header, defaults to file size.
|
||||||
|
|
||||||
|
[status]
|
||||||
|
Status code to be send. Useful when sending a static file as an error page.
|
||||||
|
|
||||||
If supported by the Rack handler, other means than streaming from the Ruby
|
If supported by the Rack handler, other means than streaming from the Ruby
|
||||||
process will be used. If you use this helper method, Sinatra will automatically
|
process will be used. If you use this helper method, Sinatra will automatically
|
||||||
handle range requests.
|
handle range requests.
|
||||||
|
|
|
@ -229,7 +229,7 @@ module Sinatra
|
||||||
file.path = path
|
file.path = path
|
||||||
result = file.serving env
|
result = file.serving env
|
||||||
result[1].each { |k,v| headers[k] ||= v }
|
result[1].each { |k,v| headers[k] ||= v }
|
||||||
halt result[0], result[2]
|
halt opts[:status] || result[0], result[2]
|
||||||
rescue Errno::ENOENT
|
rescue Errno::ENOENT
|
||||||
not_found
|
not_found
|
||||||
end
|
end
|
||||||
|
|
|
@ -729,6 +729,12 @@ class HelpersTest < Test::Unit::TestCase
|
||||||
assert_equal 'attachment; filename="foo.txt"', response['Content-Disposition']
|
assert_equal 'attachment; filename="foo.txt"', response['Content-Disposition']
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'allows setting a custom status code' do
|
||||||
|
send_file_app :status => 201
|
||||||
|
get '/file.txt'
|
||||||
|
assert_status 201
|
||||||
|
end
|
||||||
|
|
||||||
it "is able to send files with unkown mime type" do
|
it "is able to send files with unkown mime type" do
|
||||||
@file = File.dirname(__FILE__) + '/file.foobar'
|
@file = File.dirname(__FILE__) + '/file.foobar'
|
||||||
File.open(@file, 'wb') { |io| io.write('Hello World') }
|
File.open(@file, 'wb') { |io| io.write('Hello World') }
|
||||||
|
|
Loading…
Reference in a new issue