From a00c534c4c7921e40f58f714291a2bb09ad02225 Mon Sep 17 00:00:00 2001 From: Izaak Alpert Date: Wed, 2 Oct 2013 10:47:23 -0400 Subject: [PATCH] Fix a bug where the tgz returned got encoded utf8 Conflicts: doc/api/repositories.md Change-Id: I7ebc39b47ff860813d9622ba6776583536e6e384 --- doc/api/repositories.md | 2 +- lib/api/repositories.rb | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/doc/api/repositories.md b/doc/api/repositories.md index 1792d2b5edf..2769c22d6aa 100644 --- a/doc/api/repositories.md +++ b/doc/api/repositories.md @@ -368,4 +368,4 @@ GET /projects/:id/repository/archive Parameters: + `id` (required) - The ID of a project -+ `sha` (optional) - The commit or branch name ++ `sha` (optional) - The commit sha to download defaults to the tip of the default branch \ No newline at end of file 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!