better handle server errors

This commit is contained in:
Eugene Zadyra
2023-12-02 19:03:13 +01:00
parent efc1c40193
commit f5145c970d
3 changed files with 34 additions and 1 deletions

View File

@@ -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
}

View File

@@ -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

View File

@@ -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("; ")
}