Skip to content
Snippets Groups Projects
Commit 1e0f0de3 authored by Kia Mei Somabes's avatar Kia Mei Somabes
Browse files

Refactor code for single file download in repository

parent 9f57ae11
No related branches found
No related tags found
1 merge request!10495Merge Requests - Assignee
Loading
Loading
@@ -18,7 +18,7 @@ class Projects::RawController < Projects::ApplicationController
if @blob.stored_externally?
send_lfs_object
else
send_git_blob @repository, @blob, params[:inline]
send_git_blob @repository, @blob, inline: (params[:inline] != 'false')
end
else
render_404
Loading
Loading
Loading
Loading
@@ -114,22 +114,22 @@ module BlobHelper
icon("#{file_type_icon_class('file', mode, name)} fw")
end
 
def blob_raw_url(only_path: false, inline: nil)
def blob_raw_url(**kwargs)
if @build && @entry
raw_project_job_artifacts_url(@project, @build, path: @entry.path, only_path: only_path)
raw_project_job_artifacts_url(@project, @build, path: @entry.path, **kwargs)
elsif @snippet
if @snippet.project_id
raw_project_snippet_url(@project, @snippet, only_path: only_path)
raw_project_snippet_url(@project, @snippet, **kwargs)
else
raw_snippet_url(@snippet, only_path: only_path)
raw_snippet_url(@snippet, **kwargs)
end
elsif @blob
project_raw_url(@project, @id, only_path: only_path, inline: inline)
project_raw_url(@project, @id, **kwargs)
end
end
 
def blob_raw_path
blob_raw_url(only_path: true)
def blob_raw_path(**kwargs)
blob_raw_url(**kwargs, only_path: true)
end
 
# SVGs can contain malicious JavaScript; only include whitelisted
Loading
Loading
@@ -226,16 +226,15 @@ module BlobHelper
 
def open_raw_blob_button(blob)
return if blob.empty?
unless blob.raw_binary? || blob.stored_externally?
title = 'Open raw'
link_to icon('file-code-o'), blob_raw_url(:inline => true), class: 'btn btn-sm has-tooltip', target: '_blank', rel: 'noopener noreferrer', title: title, data: { container: 'body' }
end
return if blob.raw_binary? || blob.stored_externally?
title = 'Open raw'
link_to icon('file-code-o'), blob_raw_path, class: 'btn btn-sm has-tooltip', target: '_blank', rel: 'noopener noreferrer', title: title, data: { container: 'body' }
end
 
def download_blob_button(blob)
return if blob.empty?
title = 'Download'
link_to sprite_icon('download'), blob_raw_url, download: @path, class: 'btn btn-sm has-tooltip', target: '_blank', rel: 'noopener noreferrer', title: title, data: { container: 'body' }
link_to sprite_icon('download'), blob_raw_path(inline: false), download: @path, class: 'btn btn-sm has-tooltip', target: '_blank', rel: 'noopener noreferrer', title: title, data: { container: 'body' }
end
 
def blob_render_error_reason(viewer)
Loading
Loading
Loading
Loading
@@ -2,9 +2,9 @@
# Workhorse will also serve files when using `send_file`.
module WorkhorseHelper
# Send a Git blob through Workhorse
def send_git_blob(repository, blob, inline)
def send_git_blob(repository, blob, inline: true)
headers.store(*Gitlab::Workhorse.send_git_blob(repository, blob))
inline ? (headers['Content-Disposition'] = 'inline') : (headers['Content-Disposition'] = 'attachment')
headers['Content-Disposition'] = inline ? 'inline' : 'attachment'
headers['Content-Type'] = safe_content_type(blob)
render plain: ""
end
Loading
Loading
Loading
Loading
@@ -27,6 +27,6 @@
 
.btn-group{ role: "group" }<
= copy_blob_source_button(blob)
= open_raw_blob_button(blob)
= download_blob_button(blob)
 
= render 'projects/blob/content', blob: blob
---
title: Add download button for single file (including raw files) in repository
merge_request:
author:
merge_request: 20480
author: Kia Mei Somabes
type: added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment