gitlink-forgeplus/app/controllers/traces/projects_controller.rb

70 lines
2.6 KiB
Ruby

class Traces::ProjectsController < Traces::BaseController
include OperateProjectAbilityAble
before_action :require_login
before_action :load_project
before_action :authorizate_user_can_edit_project!
def tasks
branch_name = params[:branch_name]
return render_error("无可用检测次数") if @project&.trace_tasks_count >= 5
return render_error("分支名不能为空!") if branch_name.blank?
@all_branches = Gitea::Repository::Branches::ListNameService.call(@project&.owner, @project.identifier)
return render_error("请输入正确的分支名!") unless @all_branches["branch_name"].include?(branch_name)
code, data, error = Trace::CheckService.call(current_user.trace_token, @project, "1", branch_name)
if code == 200
@project.increment!(:trace_tasks_count, 1)
render_ok
else
render_error("检测失败 Error:#{error}")
end
rescue Exception => exception
puts exception.message
normal_status(-1, exception.message)
end
def task_results
limit = params[:limit] || params[:per_page]
limit = (limit.to_i.zero? || limit.to_i > 15) ? 15 : limit.to_i
page = params[:page].to_i.zero? ? 1 : params[:page].to_i
code, data, error = Trace::CheckResultService.call(current_user.trace_token, @project, nil, page, limit)
if code == 200
@project.update_column(:trace_tasks_count, data[0]["totalsize"]) if data.is_a?(Array) && data.size > 0
render :json => {data: data}
else
render_error("获取检测记录失败 Error:#{error}")
end
rescue Exception => exception
puts exception.message
normal_status(-1, exception.message)
end
def reload_task
return render_error("project_id错误") if params[:project_id].blank?
code, data, error = Trace::ReloadCheckService.call(current_user.trace_token, params[:project_id])
if code == 200
@project.increment!(:trace_tasks_count, 1)
render_ok
else
render_error("重新检测失败 Error:#{error}")
end
rescue Exception => exception
puts exception.message
normal_status(-1, exception.message)
end
def task_pdf
return render_error("task_id错误") if params[:task_id].blank?
code, data, error = Trace::PdfReportService.call(current_user.trace_token, params[:task_id])
domain = Trace.trace_config[:domain]
base_url = Trace.trace_config[:base_url]
url = "/user/pdfreport?task_id=#{params[:task_id]}"
file_path = [domain, api_url, url].join
request.headers["Authorization"] = current_user.trace_token
redirect_to file_path
rescue Exception => exception
puts exception.message
normal_status(-1, exception.message)
end
end