summaryrefslogtreecommitdiff
path: root/lib/api
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2018-03-30 15:46:00 +0000
committerDouwe Maan <douwe@gitlab.com>2018-03-30 15:46:00 +0000
commit96cd05e65ef6b3b98734f041a43fc8cc81dba9b5 (patch)
treee2e1cff25e9e4ab67252b0402cb5df95fdc98d25 /lib/api
parent7c36e8561c60882e6b0b47c563f7d19f3d6b02a6 (diff)
parent22b05a1ff74d4f64490f93995259602b3d07c3cf (diff)
downloadgitlab-ce-96cd05e65ef6b3b98734f041a43fc8cc81dba9b5.tar.gz
Merge branch 'fj-42685-extend-project-export-endpoint' into 'master'
Extend API for exporting a project with direct upload URL Closes #42685 See merge request gitlab-org/gitlab-ce!17686
Diffstat (limited to 'lib/api')
-rw-r--r--lib/api/project_export.rb19
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/api/project_export.rb b/lib/api/project_export.rb
index efc4a33ae1b..5ef4e9d530c 100644
--- a/lib/api/project_export.rb
+++ b/lib/api/project_export.rb
@@ -33,11 +33,28 @@ module API
end
params do
optional :description, type: String, desc: 'Override the project description'
+ optional :upload, type: Hash do
+ optional :url, type: String, desc: 'The URL to upload the project'
+ optional :http_method, type: String, default: 'PUT', desc: 'HTTP method to upload the exported project'
+ end
end
post ':id/export' do
project_export_params = declared_params(include_missing: false)
+ after_export_params = project_export_params.delete(:upload) || {}
- user_project.add_export_job(current_user: current_user, params: project_export_params)
+ export_strategy = if after_export_params[:url].present?
+ params = after_export_params.slice(:url, :http_method).symbolize_keys
+
+ Gitlab::ImportExport::AfterExportStrategies::WebUploadStrategy.new(params)
+ end
+
+ if export_strategy&.invalid?
+ render_validation_error!(export_strategy)
+ else
+ user_project.add_export_job(current_user: current_user,
+ after_export_strategy: export_strategy,
+ params: project_export_params)
+ end
accepted!
end