projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
3616: Use "ensure" to close response stream.
[arvados.git]
/
apps
/
workbench
/
app
/
controllers
/
collections_controller.rb
diff --git
a/apps/workbench/app/controllers/collections_controller.rb
b/apps/workbench/app/controllers/collections_controller.rb
index 41b4771e4e87dd1012ec0bd9da9b91dad2c8171e..9882fa6a34a38f97e6615804038d107290604e4a 100644
(file)
--- a/
apps/workbench/app/controllers/collections_controller.rb
+++ b/
apps/workbench/app/controllers/collections_controller.rb
@@
-1,4
+1,6
@@
class CollectionsController < ApplicationController
class CollectionsController < ApplicationController
+ include ActionController::Live
+
skip_around_filter(:require_thread_api_token,
only: [:show_file, :show_file_links])
skip_before_filter(:find_object_by_uuid,
skip_around_filter(:require_thread_api_token,
only: [:show_file, :show_file_links])
skip_before_filter(:find_object_by_uuid,
@@
-145,7
+147,7
@@
class CollectionsController < ApplicationController
end
if usable_token.nil?
return # Response already rendered.
end
if usable_token.nil?
return # Response already rendered.
- elsif params[:file].nil? or not
file_in_collection?(coll,
params[:file])
+ elsif params[:file].nil? or not
coll.manifest.has_file?(
params[:file])
return render_not_found
end
opts = params.merge(arvados_api_token: usable_token)
return render_not_found
end
opts = params.merge(arvados_api_token: usable_token)
@@
-154,7
+156,13
@@
class CollectionsController < ApplicationController
Rack::Mime::MIME_TYPES[ext] || 'application/octet-stream'
self.response.headers['Content-Length'] = params[:size] if params[:size]
self.response.headers['Content-Disposition'] = params[:disposition] if params[:disposition]
Rack::Mime::MIME_TYPES[ext] || 'application/octet-stream'
self.response.headers['Content-Length'] = params[:size] if params[:size]
self.response.headers['Content-Disposition'] = params[:disposition] if params[:disposition]
- self.response_body = file_enumerator opts
+ begin
+ file_enumerator(opts).each do |bytes|
+ response.stream.write bytes
+ end
+ ensure
+ response.stream.close
+ end
end
def sharing_scopes
end
def sharing_scopes
@@
-277,13
+285,6
@@
class CollectionsController < ApplicationController
return nil
end
return nil
end
- def file_in_collection?(collection, filename)
- target = CollectionsHelper.file_path(File.split(filename))
- collection.manifest.each_file.any? do |file_spec|
- CollectionsHelper.file_path(file_spec) == target
- end
- end
-
def file_enumerator(opts)
FileStreamer.new opts
end
def file_enumerator(opts)
FileStreamer.new opts
end