summaryrefslogtreecommitdiff
path: root/lib/api
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api')
-rw-r--r--lib/api/repositories.rb14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/api/repositories.rb b/lib/api/repositories.rb
index ac17aeabb13..c9422fdb165 100644
--- a/lib/api/repositories.rb
+++ b/lib/api/repositories.rb
@@ -181,7 +181,7 @@ module API
#
# Parameters:
# id (required) - The ID of a project
- # sha (optional) - the commit sha to download defaults to head
+ # sha (optional) - the commit sha to download defaults to the tip of the default branch
# Example Request:
# GET /projects/:id/repository/archive
get ":id/repository/archive" do
@@ -190,11 +190,15 @@ module API
ref = params[:sha]
storage_path = Rails.root.join("tmp", "repositories")
- file_path = repo.archive_repo(ref || 'HEAD', storage_path)
- if file_path
- data = File.open(file_path).read
+ file_path = repo.archive_repo(ref, storage_path)
+ if file_path && File.exists?(file_path)
+ data = File.open(file_path, 'rb').read
+
+ header "Content-Disposition:", " infile; filename=\"#{File.basename(file_path)}\""
content_type 'application/x-gzip'
- header "Content-Disposition:"," infile; filename=\"#{File.basename(file_path)}\""
+
+ env['api.format'] = :binary
+
present data
else
not_found!