add: trace controller and router

This commit is contained in:
yystopf 2022-05-09 18:12:27 +08:00
parent f5efbcfc04
commit 12cc37443e
6 changed files with 112 additions and 6 deletions

View File

@ -0,0 +1,18 @@
class Trace::BaseController < ApplicationController
helper_method :observed_logged_user?, :observed_user
def observed_user
@_observed_user ||= (User.find_by_login(params[:user_id]) || User.find_by_id(params[:user_id]))
end
def observed_logged_user?
observed_user.id == User.current&.id
end
protected
def check_auth
return render_forbidden unless current_user.admin? || observed_logged_user?
end
end

View File

@ -0,0 +1,60 @@
class Trace::ProjectsController < Trace::BaseController
before_action :require_login
before_action :load_project
def tasks
branch_name = params[:branch_name]
[code, data, error] = Trace::CheckService.call(current_user.trace_token, @project, "1", branch_name)
if code == 200
render_ok
else
render_error(-1, "检测失败 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
render :json => {data: data}
else
render_error(-1, "获取检测记录失败 Error:#{error}")
end
rescue Exception => exception
puts exception.message
normal_status(-1, exception.message)
end
def reload_task
render_error(-1, "project_id错误") if params[:project_id].blank?
[code, data, error] = Trace::ReloadCheckService.call(current_user.trace_token, params[:project_id])
if code == 200
render_ok
else
render_error(-1, "重新检测失败 Error:#{error}")
end
rescue Exception => exception
puts exception.message
normal_status(-1, exception.message)
end
def task_pdf
render_error(-1, "task_id错误") if params[:task_id].blank?
[code, data, error] = Trace::PdfReportService.call(current_user.trace_token, params[:task_id])
if code == 200
render_ok
else
render_error(-1, "下载报告失败 Error:#{error}")
end
rescue Exception => exception
puts exception.message
normal_status(-1, exception.message)
end
end

View File

@ -0,0 +1,14 @@
class Trace::TraceUsersController < Trace::BaseController
before_action :require_auth
def create
if current_user.trace_token.present?
render_ok
else
render_error(-1, "代码溯源用户初始化失败")
end
rescue Exception => exception
puts exception.message
normal_status(-1, exception.message)
end
end

View File

@ -1,11 +1,11 @@
# 代码溯源 查询检测结果
class Trace::CheckResultService < Trace::ClientService
attr_accessor :token, :project_name, :file_name, :page_num, :page_size
attr_accessor :token, :project, :file_name, :page_num, :page_size
def initialize(token, project_name=nil, file_name=nil, page_num=1, page_size=15)
def initialize(token, project, file_name=nil, page_num=1, page_size=15)
@token = token
@project_name = project_name
@project = project
@file_name = file_name
@page_num = page_num
@page_size = page_size
@ -19,7 +19,7 @@ class Trace::CheckResultService < Trace::ClientService
private
def request_params
{
product_name: project_name,
product_name: "#{project&.owner&.login}-#{project.identifier}",
file_name: file_name,
pageNum: page_num,
pageSize: page_size,

View File

@ -17,9 +17,9 @@ class Trace::CheckService < Trace::ClientService
private
def request_params
repo = Gitea::Repository::GetService.call(project&.owner&.login, project&.identifier)
repo = Gitea::Repository::GetService.call(project&.owner, project&.identifier)
{
product_name: project&.name,
product_name: "#{project&.owner&.login}-#{project&.identifier}",
product_type: project&.category&.name,
code_type: project&.language&.name,
product_desc: project&.description,

View File

@ -677,6 +677,20 @@ Rails.application.routes.draw do
end
# Project Area END
namespace :trace do
resources :trace_users, only: [:create]
scope "/:owner/:repo" do
resource :projects, path: '/', only: [:index] do
member do
post :tasks
get :task_results
get :reload_task
get :task_pdf
end
end
end
end
scope module: :helps do
resources :faqs, only: [:index]
end