diff --git a/lib/gitlab/client/projects.rb b/lib/gitlab/client/projects.rb index 36cc245a9..b47643c13 100644 --- a/lib/gitlab/client/projects.rb +++ b/lib/gitlab/client/projects.rb @@ -704,5 +704,26 @@ def delete_project_custom_attribute(key, project_id = nil) def project_deploy_tokens(project, options = {}) get("/projects/#{url_encode project}/deploy_tokens", query: options) end + + def export_project(id, options = {}) + post("/projects/#{url_encode id}/export", query: options) + end + + def export_project_status(id) + get("/projects/#{url_encode id}/export") + end + + def exported_project_download(id) + get("/projects/#{url_encode id}/export/download", + format: nil, + headers: { Accept: 'application/octet-stream' }, + parser: proc { |body, _| + if body.encoding == Encoding::ASCII_8BIT # binary response + ::Gitlab::FileResponse.new StringIO.new(body, 'rb+') + else # error with json response + ::Gitlab::Request.parse(body) + end + }) + end end end