diff options
-rw-r--r-- | app/controllers/projects_controller.rb | 23 | ||||
-rw-r--r-- | app/services/create_project_service.rb | 30 |
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 |