diff --git a/README.md b/README.md index 9a1196e..11ac560 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,15 @@ docker run --env-file .env -p 5000:5000 -v /tmp/Krankenkassenverzeichnis_DiGA.xm "message": "DigaCodeValidationResponseError(errorCode=REQUEST_OR_DATA_INVALID, errorText=Anfrage oder Datei ungültig)", "path": "/validate/77AAAAAAAAAAAGIS" } + + Example error response for diga test code when DISABLE_TESTCODES=true + { + "timestamp": "2021-08-23T09:38:32.385+00:00", + "status": 403, + "error": "Forbidden", + "message": "Testcodes are not allowed", + "path": "/validate/77AAAAAAAAAAAAAX" + } ``` * POST /bill diff --git a/src/main/kotlin/dev/gtuk/diga/AppExceptionHandler.kt b/src/main/kotlin/dev/gtuk/diga/AppExceptionHandler.kt index 9fdf5a6..9187b54 100644 --- a/src/main/kotlin/dev/gtuk/diga/AppExceptionHandler.kt +++ b/src/main/kotlin/dev/gtuk/diga/AppExceptionHandler.kt @@ -1,6 +1,7 @@ package dev.gtuk.diga import dev.gtuk.diga.exceptions.BillingException +import dev.gtuk.diga.exceptions.TestCodesDisabledException import dev.gtuk.diga.exceptions.ValidationException import javax.servlet.http.HttpServletResponse import org.springframework.http.HttpStatus @@ -19,4 +20,9 @@ class AppExceptionHandler { fun handleBillingException(e: BillingException, response: HttpServletResponse) { response.sendError(HttpStatus.BAD_REQUEST.value()) } + + @ExceptionHandler(TestCodesDisabledException::class) + fun handleCodeValidationException(e: TestCodesDisabledException, response: HttpServletResponse) { + response.sendError(HttpStatus.FORBIDDEN.value()) + } } diff --git a/src/main/kotlin/dev/gtuk/diga/DigaService.kt b/src/main/kotlin/dev/gtuk/diga/DigaService.kt index 6ab1168..8048233 100644 --- a/src/main/kotlin/dev/gtuk/diga/DigaService.kt +++ b/src/main/kotlin/dev/gtuk/diga/DigaService.kt @@ -12,6 +12,7 @@ import dev.gtuk.diga.dtos.BillingResponse import dev.gtuk.diga.dtos.ValidationResponse import dev.gtuk.diga.exceptions.BillingException import dev.gtuk.diga.exceptions.CodeValidationException +import dev.gtuk.diga.exceptions.TestCodesDisabledException import dev.gtuk.diga.exceptions.ValidationException import java.io.FileInputStream import kotlin.jvm.Throws @@ -64,18 +65,20 @@ class DigaService(private val appConfig: AppConfig) { this.apiClient = DigaApiClient(apiClientSettings, digaInformation) } - @Throws(ValidationException::class) + @Throws(ValidationException::class, TestCodesDisabledException::class) fun verify(code: String): ValidationResponse { val isTestCode = Utils.isTestCode(code) val response: DigaCodeValidationResponse = try { if (isTestCode && appConfig.disableTestcodes) { - throw CodeValidationException("Testcodes are not allowed") + throw TestCodesDisabledException("Testcodes are not allowed") } else if (isTestCode) { this.apiClient.sendTestCodeValidationRequest(Utils.getDigaTestCode(code), appConfig.testInsurance) } else { this.apiClient.validateDigaCode(code) } + } catch (e: TestCodesDisabledException) { + throw e } catch (e: Exception) { logger.error("Validation errors", e) diff --git a/src/main/kotlin/dev/gtuk/diga/exceptions/TestCodesDisabledException.kt b/src/main/kotlin/dev/gtuk/diga/exceptions/TestCodesDisabledException.kt new file mode 100644 index 0000000..0c970ff --- /dev/null +++ b/src/main/kotlin/dev/gtuk/diga/exceptions/TestCodesDisabledException.kt @@ -0,0 +1,3 @@ +package dev.gtuk.diga.exceptions + +class TestCodesDisabledException(message: String) : Exception(message)