diff --git a/photo-service/src/main/java/kr/mafoo/photo/config/WebExceptionHandler.java b/photo-service/src/main/java/kr/mafoo/photo/config/WebExceptionHandler.java index fa97269..ad014e4 100644 --- a/photo-service/src/main/java/kr/mafoo/photo/config/WebExceptionHandler.java +++ b/photo-service/src/main/java/kr/mafoo/photo/config/WebExceptionHandler.java @@ -4,6 +4,7 @@ import kr.mafoo.photo.controller.dto.response.ErrorResponse; import kr.mafoo.photo.exception.DomainException; import kr.mafoo.photo.exception.ErrorCode; +import kr.mafoo.photo.exception.PhotoBrandNotExistsException; import kr.mafoo.photo.service.SlackService; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; @@ -61,6 +62,26 @@ public ResponseEntity validException(Exception ex) { .body(response); } + @ExceptionHandler(PhotoBrandNotExistsException.class) + public Mono> handlePhotoBrandNotExistsException(ServerWebExchange exchange, PhotoBrandNotExistsException exception) { + String method = extractMethod(exchange); + String userAgent = extractUserAgent(exchange); + String fullPath = extractURI(exchange); + String originIp = extractOriginIp(exchange); + + return extractRequestBody(exchange).flatMap(requestBody -> { + logException(method, fullPath, originIp, userAgent, exception); + + return slackService.sendQrRelatedErrorNotification( + method, fullPath, requestBody, originIp, userAgent, exception.getMessage() + ).then(Mono.just( + ResponseEntity + .badRequest() + .body(ErrorResponse.fromErrorCode(exception.getErrorCode())) + )); + }); + } + @ExceptionHandler(ResponseStatusException.class) public Mono> handleResponseStatusException(ServerWebExchange exchange, ResponseStatusException exception) { return handleExceptionInternal(exchange, exception, (HttpStatus) exception.getStatusCode()); diff --git a/photo-service/src/main/resources/application.yaml b/photo-service/src/main/resources/application.yaml index 6e8f1c6..ec38138 100644 --- a/photo-service/src/main/resources/application.yaml +++ b/photo-service/src/main/resources/application.yaml @@ -46,4 +46,5 @@ slack: webhook: token: ${SLACK_TOKEN} channel: - error: ${SLACK_ERROR_CHANNEL} \ No newline at end of file + error: ${SLACK_ERROR_CHANNEL} + qr: ${SLACK_QR_ERROR_CHANNEL} \ No newline at end of file