http://jira.mfd.msk:8088/browse/CLS-301 swagger and validate common request

This commit is contained in:
akulikov 2023-05-30 20:36:39 +03:00
parent 587da25d0c
commit 24e9b4f548
3 changed files with 40 additions and 0 deletions

View file

@ -4,6 +4,8 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CommonsRequestLoggingFilter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@ -20,4 +22,18 @@ public class WebConfig implements WebMvcConfigurer {
return filter;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addRedirectViewController("", "/swagger-ui.html");
}
}

View file

@ -21,9 +21,14 @@ import ru.spcex.clearing.gatewayapi.request.CompaniesRequest;
import ru.spcex.clearing.gatewayapi.request.FondListingsRequest;
import ru.spcex.clearing.gatewayapi.request.MMListingsRequest;
import ru.spcex.clearing.gatewayapi.response.CommonResponse;
import ru.spcex.platform.enumeration.Section;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@Controller
@RequestMapping("/")
public class GatewayController {
@ -34,6 +39,8 @@ public class GatewayController {
private final Processor<MMListingsRequestParam> mmListingsRequestProcessor;
private final Processor<CompaniesRequestParam> companiesRequestProcessor;
private List<String> validTypes = Arrays.asList("DAY_START", "ON_DEMAND");
public GatewayController(
IMessageResolver messageResolver,
@Qualifier("fondListingsRequestProcessor")
@ -63,6 +70,7 @@ public class GatewayController {
)
@ResponseBody
public CommonResponse listingsFond(@RequestBody FondListingsRequest request) {
request.validate(validTypes, List.of(Section.FOND));
FondListingsRequestParam requestParam = new FondListingsRequestParam(request);
ProcessResult processResult = fondListingsRequestProcessor.process(requestParam);
if (processResult.getError() != null) throw new GatewayException(request, processResult.getError());
@ -83,6 +91,7 @@ public class GatewayController {
)
@ResponseBody
public CommonResponse listingsMM(@RequestBody MMListingsRequest request) {
request.validate(validTypes, List.of(Section.MKR));
MMListingsRequestParam requestParam = new MMListingsRequestParam(request);
ProcessResult processResult = mmListingsRequestProcessor.process(requestParam);
if (processResult.getError() != null) throw new GatewayException(request, processResult.getError());
@ -103,6 +112,7 @@ public class GatewayController {
)
@ResponseBody
public CommonResponse companies(@RequestBody CompaniesRequest request) {
request.validate(validTypes, Collections.emptyList());
CompaniesRequestParam requestParam = new CompaniesRequestParam(request);
ProcessResult processResult = companiesRequestProcessor.process(requestParam);
if (processResult.getError() != null) throw new GatewayException(request, processResult.getError());

View file

@ -4,8 +4,13 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.gatewayapi.config.deserializers.InstantDeserializer;
import ru.spcex.clearing.gatewayapi.errors.GatewayError;
import ru.spcex.clearing.gatewayapi.exception.GatewayException;
import ru.spcex.platform.enumeration.Section;
import ru.spcex.platform.utils.enumeration.IEnumKey;
import java.time.Instant;
import java.util.List;
import java.util.UUID;
public class CommonRequest {
@ -43,6 +48,15 @@ public class CommonRequest {
@ApiModelProperty(value = "Секция (FOND или MKR)", example = "FOND")
private String section;
public void validate(List<String> typeValidValues, List<Section> sectionValidValues) {
if (!typeValidValues.isEmpty() && !typeValidValues.contains(type.toUpperCase())) {
throw new GatewayException(this, GatewayError.WrongFieldValue, "type");
}
Section sectionEnum = IEnumKey.getEnumByKey(Section.class, section);
if (!sectionValidValues.isEmpty() && !sectionValidValues.contains(sectionEnum)) {
throw new GatewayException(this, GatewayError.WrongFieldValue, "section");
}
}
public UUID getId() {
return id;