通过API的GitLab存档在拉链内创建无限的拉链

时间:2016-03-19 07:49:17

标签: ruby-on-rails ruby gitlab

我正在使用GitLab API创建存储库存档,当我这样做时会创建一个zip文件,里面有一个zip,里面有一个zip等。

以下是发出请求的代码:

def self.get_archive(project_id, branch)
    request = Typhoeus::Request.new(
        BASE_URL + "/projects/#{project_id}/repository/archive?sha=#{branch}",
        method: :get,
        params: nil,
        headers: {
            "PRIVATE-TOKEN": ADMIN_TOKEN
        }
    )

    request.run

    response = request.response

    if response.success?
        file_name = "archive-#{SecureRandom.hex(5)}.zip"

        File.open(Rails.root + "public/archives/" + file_name, "wb") do |file|
            file.write(response.body)
        end

        return {
            success: true,
            file_path: "/archives/" + file_name
        }
    else
        return {
            success: false,
            response_raw: response
        }
    end
end

对于出了什么问题的想法?我在这里想的是拿回我得到的二进制文件并将其写入zip文件。

1 个答案:

答案 0 :(得分:0)

事实证明,GitLab默认发回tar.gz文件。要接收Zip文件,您必须在请求结束时明确指定.zip扩展名。像这样:

"/projects/#{project_id}/repository/archive.zip?sha=#{branch}"

"存档"结束时的.zip是重要的因素。