2016-03-19 8 views
0

ich die Gitlab API bin mit Repository-Archive zu erstellen und wenn ich es erstellt eine Zip-Datei, die einen Reißverschluss nach innen hat, die ein Reißverschluss-Innen hat usw.Gitlab Archiv über API endlose Reißverschluss innen zu schaffen Reißverschluss

Hier der Code, der die Anforderung macht:

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 

Irgendwelche Gedanken darüber, was schief gegangen? Mein Gedanke hier war, die Binärdatei, die ich zurückbekomme, in eine Zip-Datei zu schreiben.

Antwort

0

So stellt sich heraus, dass GitLab standardmäßig eine tar.gz-Datei zurücksendet. Um stattdessen die Zip-Datei zu erhalten, müssen Sie am Ende der Anfrage explizit die Erweiterung .zip angeben. Wie so:

Die .zip am Ende des "Archivs" war der wichtige Faktor.

Verwandte Themen