From f5145c970dd41d4b2ffb5553a15ec1015f791c07 Mon Sep 17 00:00:00 2001 From: Eugene Zadyra Date: Sat, 2 Dec 2023 19:03:13 +0100 Subject: [PATCH] better handle server errors --- .../main/scala/com/lbs/api/http/package.scala | 1 + .../com/lbs/api/json/model/LuxmedError.scala | 13 +++++++++++- .../lbs/api/json/model/LuxmedErrorsList.scala | 21 +++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 api/src/main/scala/com/lbs/api/json/model/LuxmedErrorsList.scala diff --git a/api/src/main/scala/com/lbs/api/http/package.scala b/api/src/main/scala/com/lbs/api/http/package.scala index 6a49f77..6ac2216 100644 --- a/api/src/main/scala/com/lbs/api/http/package.scala +++ b/api/src/main/scala/com/lbs/api/http/package.scala @@ -81,6 +81,7 @@ package object http extends StrictLogging { case _ => Try(body.as[LuxmedErrorsMap]) .orElse(Try(body.as[LuxmedError])) + .orElse(Try(body.as[LuxmedErrorsList])) .map(error => luxmedErrorToApiException(code, error)) .toOption } diff --git a/api/src/main/scala/com/lbs/api/json/model/LuxmedError.scala b/api/src/main/scala/com/lbs/api/json/model/LuxmedError.scala index 273adc2..dcd86f8 100644 --- a/api/src/main/scala/com/lbs/api/json/model/LuxmedError.scala +++ b/api/src/main/scala/com/lbs/api/json/model/LuxmedError.scala @@ -1,3 +1,14 @@ package com.lbs.api.json.model -case class LuxmedError(message: String) extends SerializableJsonObject with LuxmedBaseError +/** + * { + "ErrorCode": 301, + "Message": "Obecnie zainstalowana wersja aplikacji nie jest wspierana przez nowy system Portalu Pacjenta. Zaktualizuj aplikację do najnowszej wersji, aby móc z niej korzystać.", + "AdditionalData": { + "ShopUrl": "itms-apps://apps.apple.com/pl/app/id552592684", + "FallbackUrl": "itms-apps://apps.apple.com/pl/app/id552592684", + "Title": "Zaktualizuj aplikację" + } + } + */ +case class LuxmedError(errorCode: Int, message: String) extends SerializableJsonObject with LuxmedBaseError diff --git a/api/src/main/scala/com/lbs/api/json/model/LuxmedErrorsList.scala b/api/src/main/scala/com/lbs/api/json/model/LuxmedErrorsList.scala new file mode 100644 index 0000000..0db1ad3 --- /dev/null +++ b/api/src/main/scala/com/lbs/api/json/model/LuxmedErrorsList.scala @@ -0,0 +1,21 @@ +package com.lbs.api.json.model + +/** + * { + "Errors": [ + { + "ErrorCode": 301, + "Message": "Obecnie zainstalowana wersja aplikacji nie jest wspierana przez nowy system Portalu Pacjenta. Zaktualizuj aplikację do najnowszej wersji, aby móc z niej korzystać.", + "AdditionalData": { + "ShopUrl": "itms-apps://apps.apple.com/pl/app/id552592684", + "FallbackUrl": "itms-apps://apps.apple.com/pl/app/id552592684", + "Title": "Zaktualizuj aplikację" + } + } + ] +} + */ + +case class LuxmedErrorsList(errors: List[LuxmedError]) extends SerializableJsonObject with LuxmedBaseError { + override def message: String = errors.map(e => s"ErrorCode: ${e.errorCode}. Message: ${e.message}").mkString("; ") +}