|
- class ObRepositorySyncsController < ApplicationController
- before_action :require_login
- before_action :load_project
- before_action :load_ob_repository_sync, except: [:create]
- before_action :authenticate_user!
-
- def index
- render_ok(data: @ob_repository_sync)
- end
-
-
- def create
- tip_exception "参数错误" if params[:github_address].blank? && params[:gitee_address].blank?
- project_name ="#{@project.owner.name}:#{@project.identifier}"
- service = ObRepositorySync::ApiService.new(project_name)
- project_params = params.merge({ "gitlink_address": @project.repository.url })
- res = service.create_projects(project_params)
- tip_exception "保存失败: #{res["msg"]}" if res["code"].to_s != "200"
- sync_id = res["data"]["id"]
- ob_repository_sync = ObRepositorySync.find_or_initialize_by(project_id: @project.id)
- ob_repository_sync.project_id = @project.id
- ob_repository_sync.user_id = current_user.id
- ob_repository_sync.name = project_name
- ob_repository_sync.github_address = "#{params[:github_address]}"
- ob_repository_sync.gitee_address = "#{params[:gitee_address]}"
- ob_repository_sync.gitlink_address = @project.repository.url
- ob_repository_sync.github_token = "#{params[:github_token]}"
- ob_repository_sync.gitee_token = "#{params[:gitee_token]}"
- ob_repository_sync.sync_id = sync_id
- ob_repository_sync.save!
- render_ok
- end
-
- def delete
- service = ObRepositorySync::ApiService.new(@ob_repository_sync.name)
- res = service.delete_project @ob_repository_sync.sync_id
- tip_exception "保存失败: #{res["msg"]}" if res["code"].to_s != "200"
- if res["code"].to_s == "200"
- @ob_repository_sync.destroy!
- end
- end
-
- def jobs
- tip_exception "该项目未创建同步任务" if @ob_repository_sync.blank?
- service = ObRepositorySync::ApiService.new(@ob_repository_sync.name)
- res = service.get_projects_jobs
- render_ok(count: res["data"]["total"], data: res["data"]["list"])
- end
-
- def create_jobs
- service = ObRepositorySync::ApiService.new(@ob_repository_sync.name)
- res = service.create_projects_jobs(params)
- tip_exception "保存失败: #{res["msg"]}" if res["code"].to_s != "200"
- job_id = res["data"]["id"]
- job = ObRepositorySyncJob.new
- job.ob_repository_sync_id = @ob_repository_sync.id
- job.github_branch = "#{params[:github_branch]}"
- job.gitee_branch = "#{params[:gitee_branch]}"
- job.gitlink_branch = "#{params[:gitlink_branch]}"
- job.job_type = "#{params[:type]}"
- job.base = "#{params[:base]}"
- job.job_id = job_id
- job.save
- render_ok
- end
-
-
- def delete_job
- tip_exception "缺少参数job_id" if params[:job_id].blank?
- service = ObRepositorySync::ApiService.new(@ob_repository_sync.name)
- res = service.delete_job params[:job_id]
- tip_exception "保存失败: #{res["msg"]}" if res["code"].to_s != "200"
- @ob_repository_sync.destroy!
- render_ok
- end
-
- def start_job
- tip_exception "缺少参数job_id" if params[:job_id].blank?
- service = ObRepositorySync::ApiService.new(@ob_repository_sync.name)
- res = service.start_job params[:job_id]
- tip_exception "启动错误: #{res["msg"]}" if res["code"].to_s != "200"
- render_ok
- end
-
- def stop_job
- tip_exception "缺少参数job_id" if params[:job_id].blank?
- service = ObRepositorySync::ApiService.new(@ob_repository_sync.name)
- res = service.stop_job params[:job_id]
- tip_exception "停止错误: #{res["msg"]}" if res["code"].to_s != "200"
- render_ok
- end
-
- def job_logs
- tip_exception "该项目未创建同步任务" if @ob_repository_sync.blank?
- tip_exception "缺少参数job_id" if params[:job_id].blank?
- service = ObRepositorySync::ApiService.new(@ob_repository_sync.name)
- @data = service.job_logs params[:job_id]
- tip_exception "请求错误: #{res["msg"]}" if res["code"].to_s != "200"
- render_ok(count: res["data"]["total"], data: res["data"]["list"])
- end
-
- private
-
- def load_ob_repository_sync
- @ob_repository_sync = ObRepositorySync.find_by(project_id: @project.id)
- end
-
- def authenticate_user!
- return if @project.member?(current_user) || current_user.admin?
- render_forbidden('你没有权限操作')
- end
- end
|