sast接口
This commit is contained in:
parent
0ffda43a67
commit
36174afe65
@ -0,0 +1,66 @@
|
||||
package cd.casic.ci.api;
|
||||
|
||||
import cd.casic.ci.process.dto.req.sast.SastApplicationCreateReq;
|
||||
import cd.casic.ci.process.dto.req.sast.SastEngineConfigReq;
|
||||
import cd.casic.ci.process.dto.req.sast.SastIdentifiedLanguageTaskReq;
|
||||
import cd.casic.ci.process.dto.resp.sast.*;
|
||||
import cd.casic.ci.process.process.service.sast.SastService;
|
||||
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
|
||||
import cd.casic.framework.commons.pojo.CommonResult;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.constraints.Negative;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/sast")
|
||||
public class SastController {
|
||||
@Resource
|
||||
private SastService sastService;
|
||||
@GetMapping("/applicationExist")
|
||||
public CommonResult<Boolean> applicationExist(@RequestParam String applicationName){
|
||||
Boolean b = sastService.applicationExist(applicationName);
|
||||
return CommonResult.success(b);
|
||||
}
|
||||
@PostMapping("/uploadFile")
|
||||
public CommonResult<SastFileUploadResp> uploadFile(MultipartFile multipartFile){
|
||||
try {
|
||||
return CommonResult.success(sastService.uploadFile(multipartFile.getResource().getFile()));
|
||||
} catch (IOException e) {
|
||||
return CommonResult.error(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
@PostMapping("/createIdentifiedLanguageTask")
|
||||
public CommonResult<SastIdentifiedLanguageTaskResp> createIdentifiedLanguageTask(@RequestBody SastIdentifiedLanguageTaskReq req){
|
||||
SastIdentifiedLanguageTaskResp identifiedLanguageTask = sastService.createIdentifiedLanguageTask(req);
|
||||
return CommonResult.success(identifiedLanguageTask);
|
||||
}
|
||||
@GetMapping("/getIdentifiedLanguageTaskStatus/{taskId}")
|
||||
public CommonResult<SastIdentifiedLanguageTaskResp> getIdentifiedLanguageTaskStatus(@PathVariable String taskId){
|
||||
SastIdentifiedLanguageTaskResp identifiedLanguageTaskStatus = sastService.getIdentifiedLanguageTaskStatus(taskId);
|
||||
return CommonResult.success(identifiedLanguageTaskStatus);
|
||||
}
|
||||
@PostMapping("/engineConfig")
|
||||
public CommonResult<List<SastEngineConfigResp>> engineConfig(@RequestBody SastEngineConfigReq req){
|
||||
return CommonResult.success(sastService.engineConfig(req.getLanguageIdList()));
|
||||
}
|
||||
@GetMapping("/detectionConfig/{languageId}")
|
||||
public CommonResult<SastDetectionConfigResp> detectionConfig(@PathVariable String languageId){
|
||||
SastDetectionConfigResp sastDetectionConfigResp = sastService.detectionConfig(languageId);
|
||||
return CommonResult.success(sastDetectionConfigResp);
|
||||
}
|
||||
@PostMapping("/applicationCreateOrUpdate")
|
||||
public CommonResult<SastApplicationCreateResp> applicationCreateOrUpdate(@RequestBody SastApplicationCreateReq req){
|
||||
SastApplicationCreateResp sastApplicationCreateResp = sastService.applicationCreate(req);
|
||||
return CommonResult.success(sastApplicationCreateResp);
|
||||
}
|
||||
@GetMapping("/getApplicationEcho/{applicationId}")
|
||||
public CommonResult<SastApplicationEchoResp> getApplicationEcho(@PathVariable String applicationId){
|
||||
SastApplicationEchoResp applicationEcho = sastService.getApplicationEcho(applicationId);
|
||||
return CommonResult.success(applicationEcho);
|
||||
}
|
||||
}
|
@ -13,4 +13,6 @@ public class SastUrlConstant {
|
||||
public static final String getIdentifiedLanguageTaskStatus = "/invoke/file/getIdentifiedLanguageTaskStatus";
|
||||
public static final String engineConfig = "/invoke/engine/config";
|
||||
public static final String detectionConfig = "/invoke/project/setting/getDetectionConfig";
|
||||
public static final String applicationCreate = "/invoke/application/create";
|
||||
public static final String getApplicationEcho = "/invoke/application/getApplicationEcho";
|
||||
}
|
||||
|
@ -0,0 +1,63 @@
|
||||
package cd.casic.ci.process.dto.req.sast;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
@Data
|
||||
public class SastApplicationCreateReq {
|
||||
/**
|
||||
* 项目Id
|
||||
* */
|
||||
private String projectId;
|
||||
/**
|
||||
* 应用名称
|
||||
* */
|
||||
private String applicationName;
|
||||
/**
|
||||
* 源代码ONLINE 或者字节码COMPRESS_FILE
|
||||
* */
|
||||
private String codeSourceFrom;
|
||||
/**
|
||||
* GITLAB,GITEE,GITHUB,LOCAL (本地)
|
||||
* */
|
||||
private String codeRepoType;
|
||||
/**
|
||||
* git连接状态 目前不用git 固定传false
|
||||
* */
|
||||
private Boolean connectionStatus;
|
||||
/**
|
||||
* 语言和模板配置,是否开启编译模式(目前不开启传false)
|
||||
* */
|
||||
private List<SastApplicationConfig> config;
|
||||
/**
|
||||
* 传接口获取到的引擎id
|
||||
* */
|
||||
private List<String> openEngine;
|
||||
/**
|
||||
* 传上传文件接口返回的文件id
|
||||
* */
|
||||
private List<String> fileId;
|
||||
/**
|
||||
* 编辑时使用 applicationId
|
||||
* */
|
||||
private String applicationId;
|
||||
/**
|
||||
* 是否开启缺陷自动研判
|
||||
* */
|
||||
private Boolean autoAudit;
|
||||
/**
|
||||
* 函数过滤内容
|
||||
* */
|
||||
private String functionFilter;
|
||||
|
||||
@Data
|
||||
public static class SastApplicationConfig{
|
||||
private String languageId;
|
||||
private String templateId;
|
||||
private String version;
|
||||
private String compileTool;
|
||||
private String compileCommand;
|
||||
private boolean compile;
|
||||
private boolean isCompile;
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package cd.casic.ci.process.dto.req.sast;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
@Data
|
||||
public class SastEngineConfigReq {
|
||||
private List<String> languageIdList;
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package cd.casic.ci.process.dto.resp.sast;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SastApplicationCreateResp {
|
||||
private String applicationId;
|
||||
private String applicationName;
|
||||
private String taskId;
|
||||
private String fileId;
|
||||
private String jobAddBy;
|
||||
private String jobStatus;
|
||||
private String checkStartTime;
|
||||
private String checkEndTime;
|
||||
private String codeQualityMetric;
|
||||
private String engineType;
|
||||
private String progress;
|
||||
private String type;
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package cd.casic.ci.process.dto.resp.sast;
|
||||
|
||||
import cd.casic.ci.process.dto.req.sast.SastApplicationCreateReq;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class SastApplicationEchoResp {
|
||||
private String projectId;
|
||||
private List<LodeFile> lodeFiles;
|
||||
private String applicationName;
|
||||
private String applicationId;
|
||||
private String codeSourceFrom;
|
||||
private String codeRepoType;
|
||||
private String codeRepoUrl;
|
||||
private boolean selfCodeRepo;
|
||||
private String codeRepoCertId;
|
||||
private boolean connectionStatus;
|
||||
private String branchName;
|
||||
private String branchKey;
|
||||
private List<SastApplicationCreateReq.SastApplicationConfig> config;
|
||||
private List<String> openEngine;
|
||||
private boolean autoAudit;
|
||||
private String functionFilter; // 如有具体结构可进一步细化
|
||||
|
||||
@Data
|
||||
public static class LodeFile {
|
||||
private String fileId;
|
||||
private String fileName;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package cd.casic.ci.process.process.converter;
|
||||
|
||||
import cd.casic.ci.process.dto.req.sast.SastApplicationCreateReq;
|
||||
import cd.casic.ci.process.dto.resp.sast.SastApplicationEchoResp;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface SastConverter {
|
||||
SastConverter INSTANCE = Mappers.getMapper(SastConverter.class);
|
||||
SastApplicationCreateReq converter(SastApplicationEchoResp echoResp);
|
||||
|
||||
}
|
@ -1,10 +1,8 @@
|
||||
package cd.casic.ci.process.process.service.sast;
|
||||
|
||||
import cd.casic.ci.process.dto.req.sast.SastApplicationCreateReq;
|
||||
import cd.casic.ci.process.dto.req.sast.SastIdentifiedLanguageTaskReq;
|
||||
import cd.casic.ci.process.dto.resp.sast.SastDetectionConfigResp;
|
||||
import cd.casic.ci.process.dto.resp.sast.SastEngineConfigResp;
|
||||
import cd.casic.ci.process.dto.resp.sast.SastFileUploadResp;
|
||||
import cd.casic.ci.process.dto.resp.sast.SastIdentifiedLanguageTaskResp;
|
||||
import cd.casic.ci.process.dto.resp.sast.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
@ -17,4 +15,6 @@ public interface SastService {
|
||||
public SastIdentifiedLanguageTaskResp getIdentifiedLanguageTaskStatus(String taskId);
|
||||
List<SastEngineConfigResp> engineConfig(List<String> languageIdList);
|
||||
SastDetectionConfigResp detectionConfig(String languageId);
|
||||
SastApplicationCreateResp applicationCreate(SastApplicationCreateReq req);
|
||||
SastApplicationEchoResp getApplicationEcho(String applicationId);
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package cd.casic.ci.process.process.service.sast.impl;
|
||||
|
||||
import cd.casic.ci.process.dto.req.sast.SastApplicationCreateReq;
|
||||
import cd.casic.ci.process.dto.req.sast.SastIdentifiedLanguageTaskReq;
|
||||
import cd.casic.ci.process.dto.resp.sast.*;
|
||||
import cd.casic.ci.process.process.service.sast.SastService;
|
||||
@ -110,6 +111,7 @@ public class SastServiceImpl implements SastService {
|
||||
ResponseEntity<SastIdentifiedLanguageTaskResp> exchange = restTemplate.exchange(baseUrl+createIdentifiedLanguageTask, HttpMethod.POST,entity,SastIdentifiedLanguageTaskResp.class,new HashMap<>());
|
||||
return exchange.getBody();
|
||||
}
|
||||
@Override
|
||||
|
||||
public SastIdentifiedLanguageTaskResp getIdentifiedLanguageTaskStatus(String taskId){
|
||||
HttpHeaders httpHeaders = getHeaders();
|
||||
@ -122,18 +124,17 @@ public class SastServiceImpl implements SastService {
|
||||
ResponseEntity<SastIdentifiedLanguageTaskResp> exchange = restTemplate.exchange(uriString, HttpMethod.GET,entity,SastIdentifiedLanguageTaskResp.class,new HashMap<>());
|
||||
return exchange.getBody();
|
||||
}
|
||||
@Override
|
||||
public List<SastEngineConfigResp> engineConfig(List<String> languageIdList){
|
||||
HttpHeaders httpHeaders = getHeaders();
|
||||
Map<String, String> entityMap = new HashMap<>();
|
||||
HttpEntity<Map<String, String>> entity = new HttpEntity<>(entityMap,httpHeaders);
|
||||
String uriString = UriComponentsBuilder.fromHttpUrl(baseUrl + engineConfig).queryParam("languageIds", StringUtils.joinWith(",", languageIdList.toArray())).toUriString();
|
||||
|
||||
// 别问我为啥要解码。坑爹的不支持Uri encode识别
|
||||
String decode = URLDecoder.decode(uriString, StandardCharsets.UTF_8);
|
||||
System.out.println(decode);
|
||||
ResponseEntity<String> exchange = restTemplate.exchange(decode, HttpMethod.GET,entity, String.class,new HashMap<>());
|
||||
ResponseEntity<String> exchange = restTemplate.exchange(uriString, HttpMethod.GET,entity, String.class,new HashMap<>());
|
||||
return JSON.parseArray(exchange.getBody(), SastEngineConfigResp.class);
|
||||
}
|
||||
@Override
|
||||
public SastDetectionConfigResp detectionConfig(String languageId){
|
||||
HttpHeaders httpHeaders = getHeaders();
|
||||
Map<String, String> entityMap = new HashMap<>();
|
||||
@ -145,6 +146,26 @@ public class SastServiceImpl implements SastService {
|
||||
return exchange.getBody();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SastApplicationCreateResp applicationCreate(SastApplicationCreateReq req) {
|
||||
HttpHeaders httpHeaders = getHeaders();
|
||||
HttpEntity<SastApplicationCreateReq> entity = new HttpEntity<>(req,httpHeaders);
|
||||
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
|
||||
ResponseEntity<SastApplicationCreateResp> exchange = restTemplate.exchange(baseUrl+applicationCreate, HttpMethod.POST,entity,SastApplicationCreateResp.class,new HashMap<>());
|
||||
SastApplicationCreateResp body = exchange.getBody();
|
||||
return body;
|
||||
}
|
||||
@Override
|
||||
public SastApplicationEchoResp getApplicationEcho(String applicationId){
|
||||
HttpHeaders httpHeaders = getHeaders();
|
||||
Map<String, String> entityMap = new HashMap<>();
|
||||
HttpEntity<Map<String, String>> entity = new HttpEntity<>(entityMap,httpHeaders);
|
||||
String uriString = UriComponentsBuilder.fromHttpUrl(baseUrl + getApplicationEcho).queryParam("applicationId", applicationId).toUriString();
|
||||
System.out.println(uriString);
|
||||
ResponseEntity<SastApplicationEchoResp> exchange = restTemplate.exchange(uriString, HttpMethod.GET,entity,SastApplicationEchoResp.class,new HashMap<>());
|
||||
return exchange.getBody();
|
||||
}
|
||||
|
||||
private HttpHeaders getHeaders(){
|
||||
HttpHeaders httpHeaders = new HttpHeaders();
|
||||
httpHeaders.set(TOKEN_HEADER_KEY,TOKEN_PREFIX+getToken());
|
||||
|
@ -1,9 +1,9 @@
|
||||
package cd.casic.server;
|
||||
|
||||
import cd.casic.ci.process.dto.req.sast.SastApplicationCreateReq;
|
||||
import cd.casic.ci.process.dto.req.sast.SastIdentifiedLanguageTaskReq;
|
||||
import cd.casic.ci.process.dto.resp.sast.SastDetectionConfigResp;
|
||||
import cd.casic.ci.process.dto.resp.sast.SastEngineConfigResp;
|
||||
import cd.casic.ci.process.dto.resp.sast.SastIdentifiedLanguageTaskResp;
|
||||
import cd.casic.ci.process.dto.resp.sast.*;
|
||||
import cd.casic.ci.process.process.converter.SastConverter;
|
||||
import cd.casic.ci.process.process.service.sast.SastService;
|
||||
import cd.casic.ci.process.properties.SastProperties;
|
||||
import cd.casic.framework.redis.core.RedisTemplateUtils;
|
||||
@ -11,6 +11,8 @@ import com.alibaba.fastjson.JSON;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.BeanFactoryUtils;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
@ -111,4 +113,23 @@ public class SastTest {
|
||||
SastDetectionConfigResp resp = sastService.detectionConfig("17417989-2c50-11ee-a171-e2d048d4b7ce");
|
||||
System.out.println(resp);
|
||||
}
|
||||
@Test
|
||||
public void applicationEcho(){
|
||||
System.out.println(sastService.getApplicationEcho("98776c27-0f8b-4884-abed-26b384008968"));
|
||||
}
|
||||
@Resource
|
||||
private SastConverter converter;
|
||||
@Test
|
||||
public void applicationCreate(){
|
||||
SastApplicationEchoResp applicationEcho = sastService.getApplicationEcho("98776c27-0f8b-4884-abed-26b384008968");
|
||||
System.out.println(JSON.toJSONString(applicationEcho));
|
||||
|
||||
SastApplicationCreateReq sastApplicationCreateReq = converter.converter(applicationEcho);
|
||||
List<String> list = applicationEcho.getLodeFiles().stream().map(SastApplicationEchoResp.LodeFile::getFileId).toList();
|
||||
sastApplicationCreateReq.setFileId(list);
|
||||
sastApplicationCreateReq.setApplicationId("98776c27-0f8b-4884-abed-26b384008968");
|
||||
System.out.println(JSON.toJSONString(sastApplicationCreateReq));
|
||||
SastApplicationCreateResp sastApplicationCreateResp = sastService.applicationCreate(sastApplicationCreateReq);
|
||||
System.out.println(JSON.toJSONString(sastApplicationCreateResp));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user