RELL-1 add controller and handler
This commit is contained in:
parent
094f73b277
commit
40358c8066
35
pom.xml
35
pom.xml
|
@ -26,6 +26,11 @@
|
|||
<spring.boot.version>3.2.2</spring.boot.version>
|
||||
<jacoco.version>0.8.11</jacoco.version>
|
||||
<junit.version>5.10.1</junit.version>
|
||||
<swagger-annotations.version>2.2.2</swagger-annotations.version>
|
||||
<jackson-databind-nullable.version>0.2.2</jackson-databind-nullable.version>
|
||||
<validation-api.version>2.0.1.Final</validation-api.version>
|
||||
<javax-annotation-api.version>1.3.2</javax-annotation-api.version>
|
||||
<springfox-swagger2.version>3.0.0</springfox-swagger2.version>
|
||||
</properties>
|
||||
|
||||
<developers>
|
||||
|
@ -53,6 +58,7 @@
|
|||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
<version>${spring.boot.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-hateoas</artifactId>
|
||||
|
@ -91,6 +97,33 @@
|
|||
<version>${version.mapstruct}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.swagger.core.v3</groupId>
|
||||
<artifactId>swagger-annotations</artifactId>
|
||||
<version>${swagger-annotations.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.openapitools</groupId>
|
||||
<artifactId>jackson-databind-nullable</artifactId>
|
||||
<version>${jackson-databind-nullable.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.validation</groupId>
|
||||
<artifactId>validation-api</artifactId>
|
||||
<version>${validation-api.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.annotation</groupId>
|
||||
<artifactId>javax.annotation-api</artifactId>
|
||||
<version>${javax-annotation-api.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-swagger2</artifactId>
|
||||
<version>${springfox-swagger2.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- test -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
|
@ -105,7 +138,6 @@
|
|||
<version>${junit.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -162,7 +194,6 @@
|
|||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,46 @@
|
|||
package ru.rell.controller;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestPart;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import ru.rell.handler.exception.CustomException;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("api/v1/recognize")
|
||||
@RequiredArgsConstructor
|
||||
public class RecognizeController {
|
||||
|
||||
@Operation(
|
||||
summary = "Распознование текста из фаила вернет txt; attachment; filename= имя фаила",
|
||||
description = "Распознование текста из фаила вернет txt; attachment; filename= имя фаила"
|
||||
)
|
||||
@PostMapping(produces = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||
public ResponseEntity<Resource> recognize(@RequestPart("file") MultipartFile file){
|
||||
if (file.isEmpty()) {
|
||||
return ResponseEntity.badRequest().build();
|
||||
}
|
||||
|
||||
ByteArrayResource resource = null;
|
||||
try {
|
||||
resource = new ByteArrayResource(file.getBytes());
|
||||
} catch (IOException e) {
|
||||
throw new CustomException(e.getMessage(),e);
|
||||
}
|
||||
resource.getFilename();
|
||||
|
||||
return ResponseEntity.ok()
|
||||
.contentType(MediaType.APPLICATION_OCTET_STREAM)
|
||||
.header("Content-Disposition", "attachment; filename=\"" + file.getOriginalFilename() + "\"")
|
||||
.body(resource);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package ru.rell.handler;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||
import org.springframework.boot.actuate.cache.NonUniqueCacheException;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import ru.rell.handler.exception.CustomException;
|
||||
|
||||
@ControllerAdvice
|
||||
@Slf4j
|
||||
public class GlobalExceptionHandler {
|
||||
|
||||
@ExceptionHandler(Exception.class)
|
||||
public ResponseEntity<Object> handleGlobalException(Exception ex) {
|
||||
log.error(ex.getMessage(), ExceptionUtils.getStackTrace(ex));
|
||||
return ResponseEntity
|
||||
.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
.body("Сервис временно не доступен");
|
||||
}
|
||||
|
||||
@ExceptionHandler(CustomException.class)
|
||||
public ResponseEntity<Object> handleCustomException(CustomException ex) {
|
||||
log.error(ex.getMessage(), ExceptionUtils.getStackTrace(ex));
|
||||
return ResponseEntity
|
||||
.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
.body("Возникла ошибка при работе с сервисом");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package ru.rell.handler.exception;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public class CustomException extends RuntimeException {
|
||||
public CustomException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue