summaryrefslogtreecommitdiff
path: root/lib/api/files.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-09-20 13:18:24 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-09-20 13:18:24 +0000
commit0653e08efd039a5905f3fa4f6e9cef9f5d2f799c (patch)
tree4dcc884cf6d81db44adae4aa99f8ec1233a41f55 /lib/api/files.rb
parent744144d28e3e7fddc117924fef88de5d9674fe4c (diff)
downloadgitlab-ce-0653e08efd039a5905f3fa4f6e9cef9f5d2f799c.tar.gz
Add latest changes from gitlab-org/gitlab@14-3-stable-eev14.3.0-rc42
Diffstat (limited to 'lib/api/files.rb')
-rw-r--r--lib/api/files.rb15
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/api/files.rb b/lib/api/files.rb
index f3de7fbe96b..9d2b7cce837 100644
--- a/lib/api/files.rb
+++ b/lib/api/files.rb
@@ -35,10 +35,9 @@ module API
not_found!('Commit') unless @commit
@repo = user_project.repository
- @blob = @repo.blob_at(@commit.sha, params[:file_path])
+ @blob = @repo.blob_at(@commit.sha, params[:file_path], limit: Gitlab::Git::Blob::LFS_POINTER_MAX_SIZE)
not_found!('File') unless @blob
- @blob.load_all_data!
end
def commit_response(attrs)
@@ -48,13 +47,21 @@ module API
}
end
+ def content_sha
+ Rails.cache.fetch("blob_content_sha256:#{user_project.full_path}:#{@blob.id}") do
+ @blob.load_all_data!
+
+ Digest::SHA256.hexdigest(@blob.data)
+ end
+ end
+
def blob_data
{
file_name: @blob.name,
file_path: @blob.path,
size: @blob.size,
encoding: "base64",
- content_sha256: Digest::SHA256.hexdigest(@blob.data),
+ content_sha256: content_sha,
ref: params[:ref],
blob_id: @blob.id,
commit_id: @commit.id,
@@ -154,6 +161,8 @@ module API
get ":id/repository/files/:file_path", requirements: FILE_ENDPOINT_REQUIREMENTS do
assign_file_vars!
+ @blob.load_all_data!
+
data = blob_data
set_http_headers(data)