123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package org.ssssssss.magicapi.swagger;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.ssssssss.magicapi.config.ApiInfo;
- import org.ssssssss.magicapi.config.MappingHandlerMapping;
- import java.io.IOException;
- import java.util.List;
- import java.util.Map;
- import java.util.Objects;
- import java.util.Set;
- public class SwaggerProvider {
- private MappingHandlerMapping mappingHandlerMapping;
- private String description;
- private String title;
- private String version;
- public void setMappingHandlerMapping(MappingHandlerMapping mappingHandlerMapping) {
- this.mappingHandlerMapping = mappingHandlerMapping;
- }
- public void setDescription(String description) {
- this.description = description;
- }
- public void setTitle(String title) {
- this.title = title;
- }
- public void setVersion(String version) {
- this.version = version;
- }
- @ResponseBody
- public SwaggerEntity swaggerJson(){
- List<ApiInfo> infos = mappingHandlerMapping.getApiInfos();
- SwaggerEntity swaggerEntity = new SwaggerEntity();
- SwaggerEntity.License license = new SwaggerEntity.License("MIT", "https://gitee.com/ssssssss-team/magic-api/blob/master/LICENSE");
- swaggerEntity.setInfo(new SwaggerEntity.Info(this.description, this.version, this.title, license));
- ObjectMapper mapper = new ObjectMapper();
- for (ApiInfo info : infos) {
- swaggerEntity.addTag(info.getGroupName(),info.getGroupPrefix());
- SwaggerEntity.Path path = new SwaggerEntity.Path();
- path.addTag(info.getGroupName());
- try {
- path.addResponse("200",mapper.readValue(Objects.toString(info.getOutput(),"{}"),Object.class));
- } catch (IOException ignored) {
- }
- path.addConsume("*/*");
- path.addProduce("application/json");
- path.setSummary(info.getName());
- try {
- Map map = mapper.readValue(Objects.toString(info.getParameter(),"{}"),Map.class);
- Object request = map.get("request");
- if(request instanceof Map){
- Map requestMap = (Map) request;
- Set keys = requestMap.keySet();
- for (Object key : keys) {
- path.addParameter(new SwaggerEntity.Parameter(key.toString(),"query","string", requestMap.getOrDefault(key,"")));
- }
- }
- Object header = map.get("header");
- if(header instanceof Map){
- Map headers = (Map) header;
- Set keys = headers.keySet();
- for (Object key : keys) {
- path.addParameter(new SwaggerEntity.Parameter(key.toString(),"header","string", headers.getOrDefault(key,"")));
- }
- }
- if(map.containsKey("body")){
- path.addParameter(new SwaggerEntity.Parameter("body","body",null,map.get("body")));
- }
- } catch (IOException ignored) {
- }
- swaggerEntity.addPath(mappingHandlerMapping.getRequestPath(info.getGroupPrefix(),info.getPath()),info.getMethod(),path);
- }
- return swaggerEntity;
- }
- }
|