summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/projects_controller.rb23
-rw-r--r--app/services/create_project_service.rb30
2 files changed, 31 insertions, 22 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index b17ba6b..1d676f9 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -45,28 +45,7 @@ class ProjectsController < ApplicationController
end
def create
- @project = Project.parse(params[:project])
-
- Project.transaction do
- # Send emails only on broken builds be default
- @project.email_all_broken_builds = true
-
- # Disable committer notification by defualt to prevent spamming
- @project.email_add_committer = false
-
- @project.save!
-
- opts = {
- token: @project.token,
- project_url: project_url(@project),
- }
-
- if Network.new.enable_ci(current_user.url, @project.gitlab_id, opts, current_user.private_token)
- true
- else
- raise ActiveRecord::Rollback
- end
- end
+ @project = CreateProjectService.new.execute(current_user, params[:project], project_url(":project_id"))
if @project.persisted?
redirect_to project_path(@project, show_guide: true), notice: 'Project was successfully created.'
diff --git a/app/services/create_project_service.rb b/app/services/create_project_service.rb
new file mode 100644
index 0000000..f21796f
--- /dev/null
+++ b/app/services/create_project_service.rb
@@ -0,0 +1,30 @@
+class CreateProjectService
+ include Rails.application.routes.url_helpers
+
+ def execute(current_user, params, project_route)
+ @project = Project.parse(params)
+
+ Project.transaction do
+ # Send emails only on broken builds be default
+ @project.email_all_broken_builds = true
+
+ # Disable committer notification by defualt to prevent spamming
+ @project.email_add_committer = false
+
+ @project.save!
+
+ opts = {
+ token: @project.token,
+ project_url: project_route.gsub(":project_id", @project.id.to_s),
+ }
+
+ if Network.new.enable_ci(current_user.url, @project.gitlab_id, opts, current_user.private_token)
+ true
+ else
+ raise ActiveRecord::Rollback
+ end
+ end
+
+ @project
+ end
+end