diff options
author | Francisco Javier López <fjlopez@gitlab.com> | 2018-07-31 19:15:22 -0400 |
---|---|---|
committer | Francisco Javier López <fjlopez@gitlab.com> | 2018-07-31 19:15:22 -0400 |
commit | e00e7bd8a29cf5336c45ea33e26a515efbbfbd10 (patch) | |
tree | 96c7901e77b7c92ecdb15d1bf2a1513871bb7b78 | |
parent | 7758fdf1ad14d488fbbbe7c25d21d9d3bc0c82aa (diff) | |
download | gitlab-ce-fj-47229-fix-logo-lfs-tracked.tar.gz |
Fixed bug and extracted codefj-47229-fix-logo-lfs-tracked
-rw-r--r-- | app/controllers/projects/avatars_controller.rb | 7 | ||||
-rw-r--r-- | app/controllers/projects/raw_controller.rb | 32 | ||||
-rw-r--r-- | app/helpers/blob_helper.rb | 35 |
3 files changed, 38 insertions, 36 deletions
diff --git a/app/controllers/projects/avatars_controller.rb b/app/controllers/projects/avatars_controller.rb index a13d552dbd8..47e1550814f 100644 --- a/app/controllers/projects/avatars_controller.rb +++ b/app/controllers/projects/avatars_controller.rb @@ -5,12 +5,9 @@ class Projects::AvatarsController < Projects::ApplicationController def show @blob = @repository.blob_at_branch(@repository.root_ref, @project.avatar_in_git) - if @blob - headers['X-Content-Type-Options'] = 'nosniff' - - return if cached_blob? - send_git_blob @repository, @blob + if @blob + send_blob else render_404 end diff --git a/app/controllers/projects/raw_controller.rb b/app/controllers/projects/raw_controller.rb index 1cba0011304..0b3c331db0f 100644 --- a/app/controllers/projects/raw_controller.rb +++ b/app/controllers/projects/raw_controller.rb @@ -2,7 +2,6 @@ class Projects::RawController < Projects::ApplicationController include ExtractsPath include BlobHelper - include SendFileUpload before_action :require_non_empty_project before_action :assign_ref_vars @@ -11,38 +10,9 @@ class Projects::RawController < Projects::ApplicationController def show @blob = @repository.blob_at(@commit.id, @path) if @blob - headers['X-Content-Type-Options'] = 'nosniff' - - return if cached_blob? - - if @blob.stored_externally? - send_lfs_object - else - send_git_blob @repository, @blob, inline: (params[:inline] != 'false') - end + send_blob(inline: (params[:inline] != 'false')) else render_404 end end - - private - - def send_lfs_object - lfs_object = find_lfs_object - - if lfs_object && lfs_object.project_allowed_access?(@project) - send_upload(lfs_object.file, attachment: @blob.name) - else - render_404 - end - end - - def find_lfs_object - lfs_object = LfsObject.find_by_oid(@blob.lfs_oid) - if lfs_object && lfs_object.file.exists? - lfs_object - else - nil - end - end end diff --git a/app/helpers/blob_helper.rb b/app/helpers/blob_helper.rb index 7eb45ddd117..68c25ba3c5a 100644 --- a/app/helpers/blob_helper.rb +++ b/app/helpers/blob_helper.rb @@ -1,4 +1,6 @@ module BlobHelper + include SendFileUpload + def highlight(blob_name, blob_content, repository: nil, plain: false) plain ||= blob_content.length > Blob::MAXIMUM_TEXT_HIGHLIGHT_SIZE highlighted = Gitlab::Highlight.highlight(blob_name, blob_content, plain: plain, repository: repository) @@ -340,4 +342,37 @@ module BlobHelper edit_fork_button_tag(common_classes, project, text, edit_blob_fork_params(edit_path)) end end + + def send_blob(params = {}) + headers['X-Content-Type-Options'] = 'nosniff' + + return if cached_blob? + + if @blob.stored_externally? + send_lfs_object + else + send_git_blob @repository, @blob, params + end + end + + private + + def send_lfs_object + lfs_object = find_lfs_object + + if lfs_object && lfs_object.project_allowed_access?(@project) + send_upload(lfs_object.file, attachment: @blob.name) + else + render_404 + end + end + + def find_lfs_object + lfs_object = LfsObject.find_by_oid(@blob.lfs_oid) + if lfs_object && lfs_object.file.exists? + lfs_object + else + nil + end + end end |