summaryrefslogtreecommitdiff
path: root/app/controllers/concerns/snippets_actions.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/concerns/snippets_actions.rb')
-rw-r--r--app/controllers/concerns/snippets_actions.rb31
1 files changed, 23 insertions, 8 deletions
diff --git a/app/controllers/concerns/snippets_actions.rb b/app/controllers/concerns/snippets_actions.rb
index 749afb71923..b12aee346ed 100644
--- a/app/controllers/concerns/snippets_actions.rb
+++ b/app/controllers/concerns/snippets_actions.rb
@@ -2,6 +2,7 @@
module SnippetsActions
extend ActiveSupport::Concern
+ include SendsBlob
def edit
# We need to load some info from the existing blob
@@ -12,16 +13,26 @@ module SnippetsActions
end
def raw
- disposition = params[:inline] == 'false' ? 'attachment' : 'inline'
-
workhorse_set_content_type!
- send_data(
- convert_line_endings(blob.data),
- type: 'text/plain; charset=utf-8',
- disposition: disposition,
- filename: Snippet.sanitized_file_name(blob.name)
- )
+ # Until we don't migrate all snippets to version
+ # snippets we need to support old `SnippetBlob`
+ # blobs
+ if defined?(blob.snippet)
+ send_data(
+ convert_line_endings(blob.data),
+ type: 'text/plain; charset=utf-8',
+ disposition: content_disposition,
+ filename: Snippet.sanitized_file_name(blob.name)
+ )
+ else
+ send_blob(
+ snippet.repository,
+ blob,
+ inline: content_disposition == 'inline',
+ allow_caching: snippet.public?
+ )
+ end
end
def js_request?
@@ -30,6 +41,10 @@ module SnippetsActions
private
+ def content_disposition
+ @disposition ||= params[:inline] == 'false' ? 'attachment' : 'inline'
+ end
+
# rubocop:disable Gitlab/ModuleWithInstanceVariables
def blob
return unless snippet