forked from Gitlink/forgeplus
156 lines
6.1 KiB
Ruby
156 lines
6.1 KiB
Ruby
require 'rest-client'
|
|
require 'json'
|
|
require 'redis'
|
|
|
|
module HuaweiCloud
|
|
class CodeCheck
|
|
CONFIG = Rails.application.config_for(:configuration)['huawei_code_check']
|
|
PROJECT_ID = CONFIG['product_id']
|
|
REGION = CONFIG['region']
|
|
|
|
def initialize
|
|
@region = REGION
|
|
@project_id = PROJECT_ID
|
|
@token = HuaweiCloud::ImaAccount.new.token
|
|
@headers = {
|
|
"Content-Type" => "application/json;charset=utf8",
|
|
"X-Auth-Token" => @token
|
|
}
|
|
end
|
|
|
|
|
|
# 创建检查任务
|
|
# params: git_url, git_branch, languages (array), optional rule_sets etc
|
|
def create_task(git_url:, git_branch:, languages: nil, rule_sets: nil, task_type: "full", endpoint_id: nil, username: nil, access_token: nil, resource_pool_id: nil)
|
|
url = "https://codecheck-ext.#{@region}.myhuaweicloud.com/v2/#{@project_id}/task"
|
|
Rails.logger.info "################### create_task url #{url}"
|
|
|
|
|
|
body = {
|
|
git_url: git_url,
|
|
git_branch: git_branch,
|
|
task_type:task_type
|
|
}
|
|
body[:language] = languages if languages
|
|
body[:rule_sets] = rule_sets if rule_sets
|
|
body[:endpoint_id] = endpoint_id if endpoint_id
|
|
body[:username] = username if username
|
|
body[:access_token] = access_token if access_token
|
|
body[:resource_pool_id] = resource_pool_id if resource_pool_id
|
|
Rails.logger.info body.to_json
|
|
resp = RestClient.post(url, body.to_json, @headers)
|
|
JSON.parse(resp.body)
|
|
rescue RestClient::ExceptionWithResponse => e
|
|
# 你可以根据 e.response.code 处理 401 (Token失效) 或其它错误
|
|
raise "CodeCheck create_task failed: #{e.response}"
|
|
end
|
|
|
|
def run_task(task_id)
|
|
url = "https://codecheck-ext.#{@region}.myhuaweicloud.com/v2/tasks/#{task_id}/run"
|
|
body = {
|
|
}
|
|
resp = RestClient.post(url, body.to_json, @headers)
|
|
JSON.parse(resp.body)
|
|
rescue RestClient::ExceptionWithResponse => e
|
|
# 你可以根据 e.response.code 处理 401 (Token失效) 或其它错误
|
|
raise "CodeCheck create_task failed: #{e.response}"
|
|
end
|
|
|
|
def query_task(task_id)
|
|
url = "https://codecheck-ext.#{@region}.myhuaweicloud.com/v2/tasks/#{task_id}/progress"
|
|
resp = RestClient.get(url, @headers)
|
|
JSON.parse(resp.body)
|
|
rescue RestClient::ExceptionWithResponse => e
|
|
# 你可以根据 e.response.code 处理 401 (Token失效) 或其它错误
|
|
raise "CodeCheck create_task failed: #{e.response}"
|
|
end
|
|
|
|
def defects_summary(task_id,query)
|
|
url = "https://codecheck-ext.#{@region}.myhuaweicloud.com/v2/tasks/#{task_id}/defects-summary?#{query}"
|
|
resp = RestClient.get(url, @headers)
|
|
JSON.parse(resp.body)
|
|
rescue RestClient::ExceptionWithResponse => e
|
|
# 你可以根据 e.response.code 处理 401 (Token失效) 或其它错误
|
|
raise "CodeCheck create_task failed: #{e.response}"
|
|
end
|
|
|
|
|
|
def defects_detail(task_id,query)
|
|
url = "https://codecheck-ext.#{@region}.myhuaweicloud.com/v2/tasks/#{task_id}/defects-detail?#{query}"
|
|
Rails.logger.info "################### defects_detail params: #{query} ,url:#{url} "
|
|
|
|
resp = RestClient.get(url, @headers)
|
|
JSON.parse(resp.body)
|
|
rescue RestClient::ExceptionWithResponse => e
|
|
# 你可以根据 e.response.code 处理 401 (Token失效) 或其它错误
|
|
raise "CodeCheck create_task failed: #{e.response}"
|
|
end
|
|
|
|
def defects_statistic(task_id)
|
|
url = "https://codecheck-ext.#{@region}.myhuaweicloud.com/v2/tasks/#{task_id}/defects-statistic"
|
|
resp = RestClient.get(url, @headers)
|
|
JSON.parse(resp.body)
|
|
rescue RestClient::ExceptionWithResponse => e
|
|
# 你可以根据 e.response.code 处理 401 (Token失效) 或其它错误
|
|
raise "CodeCheck create_task failed: #{e.response}"
|
|
end
|
|
|
|
def metrics_summary(task_id)
|
|
url = "https://codecheck-ext.#{@region}.myhuaweicloud.com/v2/#{@project_id}/tasks/#{task_id}/metrics-summary"
|
|
resp = RestClient.get(url, @headers)
|
|
JSON.parse(resp.body)
|
|
rescue RestClient::ExceptionWithResponse => e
|
|
# 你可以根据 e.response.code 处理 401 (Token失效) 或其它错误
|
|
raise "CodeCheck create_task failed: #{e.response}"
|
|
end
|
|
|
|
def defect_status(task_id,body)
|
|
url = "https://codecheck-ext.#{@region}.myhuaweicloud.com/v2/tasks/#{task_id}/defect-status"
|
|
resp = RestClient.put(url, body.to_json, @headers)
|
|
JSON.parse(resp.body)
|
|
end
|
|
|
|
def issue_status(task_id,body)
|
|
url = "ttps://codecheck-ext.#{@region}.myhuaweicloud.com/v1/defect/issue-status"
|
|
body["taskId"] = task_id
|
|
resp = RestClient.post(url, body.to_json, @headers)
|
|
JSON.parse(resp.body)
|
|
rescue RestClient::ExceptionWithResponse => e
|
|
# 你可以根据 e.response.code 处理 401 (Token失效) 或其它错误
|
|
raise "CodeCheck create_task failed: #{e.response}"
|
|
end
|
|
|
|
def issue_list_by_filter(task_id,body)
|
|
url = "ttps://codecheck-ext.#{@region}.myhuaweicloud.com/v1/defect/issue-list-by-filter"
|
|
body["taskId"] = task_id
|
|
resp = RestClient.post(url, body.to_json, @headers)
|
|
JSON.parse(resp.body)
|
|
rescue RestClient::ExceptionWithResponse => e
|
|
# 你可以根据 e.response.code 处理 401 (Token失效) 或其它错误
|
|
raise "CodeCheck create_task failed: #{e.response}"
|
|
end
|
|
|
|
def issue_filter(task_id,body)
|
|
url = "ttps://codecheck-ext.#{@region}.myhuaweicloud.com/v1/defect/issue-filter"
|
|
body["taskId"] = task_id
|
|
resp = RestClient.post(url, body.to_json, @headers)
|
|
JSON.parse(resp.body)
|
|
rescue RestClient::ExceptionWithResponse => e
|
|
# 你可以根据 e.response.code 处理 401 (Token失效) 或其它错误
|
|
raise "CodeCheck create_task failed: #{e.response}"
|
|
end
|
|
|
|
def defect_metric_trend(task_id,query)
|
|
query += "&taskId=#{task_id}"
|
|
url = "https://codecheck-ext.#{@region}.myhuaweicloud.com/v1/history/defect-metric-trend?#{query}"
|
|
resp = RestClient.get(url, @headers)
|
|
JSON.parse(resp.body)
|
|
rescue RestClient::ExceptionWithResponse => e
|
|
# 你可以根据 e.response.code 处理 401 (Token失效) 或其它错误
|
|
raise "CodeCheck create_task failed: #{e.response}"
|
|
end
|
|
|
|
|
|
end
|
|
end
|