Add specific alteration error management.
This commit is contained in:
parent
6213d5ac15
commit
f94a530621
48 changed files with 606 additions and 511 deletions
|
|
@ -1,8 +1,14 @@
|
|||
package com.pixelized.server.lwa.model.alteration
|
||||
|
||||
import com.pixelized.server.lwa.server.exception.BusinessException
|
||||
import com.pixelized.server.lwa.server.exception.FileReadException
|
||||
import com.pixelized.server.lwa.server.exception.FileWriteException
|
||||
import com.pixelized.server.lwa.server.exception.JsonCodingException
|
||||
import com.pixelized.server.lwa.server.exception.JsonConversionException
|
||||
import com.pixelized.shared.lwa.model.alteration.Alteration
|
||||
import com.pixelized.shared.lwa.model.alteration.AlterationJson
|
||||
import com.pixelized.shared.lwa.model.alteration.AlterationJsonFactory
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.utils.PathProvider
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
|
@ -93,8 +99,9 @@ class AlterationStore(
|
|||
val file = alterationFile(id = json.id)
|
||||
// Guard case on update alteration
|
||||
if (create && file.exists()) {
|
||||
val root = Exception("Alteration already exist, creation is impossible.")
|
||||
throw BusinessException(root = root)
|
||||
throw BusinessException(
|
||||
message = "Alteration already exist, creation is impossible.",
|
||||
)
|
||||
}
|
||||
// Transform the json into the model.
|
||||
val alteration = try {
|
||||
|
|
@ -102,6 +109,18 @@ class AlterationStore(
|
|||
} catch (exception: Exception) {
|
||||
throw JsonConversionException(root = exception)
|
||||
}
|
||||
if (alteration.id.isEmpty()) {
|
||||
throw BusinessException(
|
||||
message = "Alteration 'id' is a mandatory field.",
|
||||
code = APIResponse.ErrorCode.AlterationId,
|
||||
)
|
||||
}
|
||||
if (alteration.metadata.name.isEmpty()) {
|
||||
throw BusinessException(
|
||||
message = "Alteration 'name' is a mandatory field.",
|
||||
code = APIResponse.ErrorCode.AlterationName,
|
||||
)
|
||||
}
|
||||
// Encode the json into a string.
|
||||
val data = try {
|
||||
this.json.encodeToString(json)
|
||||
|
|
@ -139,13 +158,15 @@ class AlterationStore(
|
|||
val file = alterationFile(id = id)
|
||||
// Guard case on the file existence.
|
||||
if (file.exists().not()) {
|
||||
val root = Exception("Alteration doesn't not exist, deletion is impossible.")
|
||||
throw BusinessException(root = root)
|
||||
throw BusinessException(
|
||||
message = "Alteration doesn't not exist, deletion is impossible.",
|
||||
)
|
||||
}
|
||||
// Guard case on the file deletion
|
||||
if (file.delete().not()) {
|
||||
val root = Exception("Alteration file have not been deleted for unknown reason.")
|
||||
throw BusinessException(root = root)
|
||||
throw BusinessException(
|
||||
message = "Alteration file have not been deleted for unknown reason.",
|
||||
)
|
||||
}
|
||||
// Update the data model with the deleted alteration.
|
||||
alterationFlow.update { alterations ->
|
||||
|
|
@ -162,11 +183,4 @@ class AlterationStore(
|
|||
private fun alterationFile(id: String): File {
|
||||
return File("${pathProvider.alterationsPath()}${id}.json")
|
||||
}
|
||||
|
||||
sealed class AlterationStoreException(root: Exception) : Exception(root)
|
||||
class JsonConversionException(root: Exception) : AlterationStoreException(root)
|
||||
class JsonCodingException(root: Exception) : AlterationStoreException(root)
|
||||
class BusinessException(root: Exception) : AlterationStoreException(root)
|
||||
class FileWriteException(root: Exception) : AlterationStoreException(root)
|
||||
class FileReadException(root: Exception) : AlterationStoreException(root)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.pixelized.server.lwa.model.campaign
|
||||
|
||||
import com.pixelized.server.lwa.server.exception.BusinessException
|
||||
import com.pixelized.shared.lwa.model.campaign.Campaign
|
||||
import com.pixelized.shared.lwa.model.campaign.CampaignJson
|
||||
import com.pixelized.shared.lwa.model.campaign.factory.CampaignJsonFactory
|
||||
|
|
@ -43,8 +44,7 @@ class CampaignService(
|
|||
) {
|
||||
// Check if the character is already in the campaign.
|
||||
if (campaign.instances.contains(characterSheetId)) {
|
||||
val root = Exception("Character with id:$characterSheetId is already in the campaign.")
|
||||
throw CampaignStore.BusinessException(root = root)
|
||||
throw BusinessException(message = "Character with id:$characterSheetId is already in the campaign.")
|
||||
}
|
||||
// Update the corresponding instance
|
||||
val characters = campaign.characters.toMutableSet().also {
|
||||
|
|
@ -62,8 +62,7 @@ class CampaignService(
|
|||
) {
|
||||
// Check if the character is already in the campaign.
|
||||
if (campaign.instances.contains(characterSheetId)) {
|
||||
val root = Exception("Character with id:$characterSheetId is already in the campaign.")
|
||||
throw CampaignStore.BusinessException(root = root)
|
||||
throw BusinessException(message = "Character with id:$characterSheetId is already in the campaign.")
|
||||
}
|
||||
// Update the corresponding instance
|
||||
val characters = campaign.npcs.toMutableSet().also {
|
||||
|
|
@ -81,8 +80,7 @@ class CampaignService(
|
|||
) {
|
||||
// Check if the character is in the campaign.
|
||||
if (campaign.characters.contains(characterSheetId).not()) {
|
||||
val root = Exception("Character with id:$characterSheetId is not in the party.")
|
||||
throw CampaignStore.BusinessException(root = root)
|
||||
throw BusinessException(message = "Character with id:$characterSheetId is not in the party.")
|
||||
}
|
||||
// Update the corresponding instance
|
||||
val characters = campaign.characters.toMutableSet().also {
|
||||
|
|
@ -100,8 +98,7 @@ class CampaignService(
|
|||
) {
|
||||
// Check if the character is in the campaign.
|
||||
if (campaign.npcs.contains(characterSheetId).not()) {
|
||||
val root = Exception("Character with id:$characterSheetId is not in the npcs.")
|
||||
throw CampaignStore.BusinessException(root = root)
|
||||
throw BusinessException(message = "Character with id:$characterSheetId is not in the npcs.")
|
||||
}
|
||||
// Update the corresponding instance
|
||||
val characters = campaign.npcs.toMutableSet().also {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
package com.pixelized.server.lwa.model.campaign
|
||||
|
||||
import com.pixelized.server.lwa.server.exception.FileReadException
|
||||
import com.pixelized.server.lwa.server.exception.FileWriteException
|
||||
import com.pixelized.server.lwa.server.exception.JsonCodingException
|
||||
import com.pixelized.server.lwa.server.exception.JsonConversionException
|
||||
import com.pixelized.shared.lwa.model.campaign.Campaign
|
||||
import com.pixelized.shared.lwa.model.campaign.CampaignJson
|
||||
import com.pixelized.shared.lwa.model.campaign.factory.CampaignJsonFactory
|
||||
|
|
@ -108,11 +112,4 @@ class CampaignStore(
|
|||
private fun campaignFile(): File {
|
||||
return File("${pathProvider.campaignPath()}campaign.json")
|
||||
}
|
||||
|
||||
sealed class CampaignStoreException(root: Exception) : Exception(root)
|
||||
class JsonConversionException(root: Exception) : CampaignStoreException(root)
|
||||
class JsonCodingException(root: Exception) : CampaignStoreException(root)
|
||||
class BusinessException(root: Exception) : CampaignStoreException(root)
|
||||
class FileWriteException(root: Exception) : CampaignStoreException(root)
|
||||
class FileReadException(root: Exception) : CampaignStoreException(root)
|
||||
}
|
||||
|
|
@ -1,8 +1,14 @@
|
|||
package com.pixelized.server.lwa.model.character
|
||||
|
||||
import com.pixelized.server.lwa.server.exception.BusinessException
|
||||
import com.pixelized.server.lwa.server.exception.FileReadException
|
||||
import com.pixelized.server.lwa.server.exception.FileWriteException
|
||||
import com.pixelized.server.lwa.server.exception.JsonCodingException
|
||||
import com.pixelized.server.lwa.server.exception.JsonConversionException
|
||||
import com.pixelized.shared.lwa.model.characterSheet.CharacterSheet
|
||||
import com.pixelized.shared.lwa.model.characterSheet.CharacterSheetJson
|
||||
import com.pixelized.shared.lwa.model.characterSheet.factory.CharacterSheetJsonFactory
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.utils.PathProvider
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
|
@ -93,8 +99,7 @@ class CharacterSheetStore(
|
|||
val file = characterSheetFile(id = sheet.id)
|
||||
// Guard case on update alteration
|
||||
if (create && file.exists()) {
|
||||
val root = Exception("Character already exist, creation is impossible.")
|
||||
throw BusinessException(root = root)
|
||||
throw BusinessException(message = "Character already exist, creation is impossible.")
|
||||
}
|
||||
// Transform the json into the model.
|
||||
val json = try {
|
||||
|
|
@ -139,13 +144,16 @@ class CharacterSheetStore(
|
|||
val file = characterSheetFile(id = characterSheetId)
|
||||
// Guard case on the file existence.
|
||||
if (file.exists().not()) {
|
||||
val root = Exception("Character file with id:$characterSheetId doesn't not exist.")
|
||||
throw BusinessException(root = root)
|
||||
throw BusinessException(
|
||||
message = "Character file with id:$characterSheetId doesn't not exist.",
|
||||
code = APIResponse.ErrorCode.CharacterSheetId
|
||||
)
|
||||
}
|
||||
// Guard case on the file deletion
|
||||
if (file.delete().not()) {
|
||||
val root = Exception("Character file have not been deleted for unknown reason.")
|
||||
throw BusinessException(root = root)
|
||||
throw BusinessException(
|
||||
message = "Character file have not been deleted for unknown reason.",
|
||||
)
|
||||
}
|
||||
// Update the data model with the deleted character.
|
||||
characterSheetsFlow.update { characters ->
|
||||
|
|
@ -158,11 +166,4 @@ class CharacterSheetStore(
|
|||
private fun characterSheetFile(id: String): File {
|
||||
return File("${pathProvider.characterStorePath()}${id}.json")
|
||||
}
|
||||
|
||||
sealed class CharacterSheetStoreException(root: Exception) : Exception(root)
|
||||
class JsonConversionException(root: Exception) : CharacterSheetStoreException(root)
|
||||
class JsonCodingException(root: Exception) : CharacterSheetStoreException(root)
|
||||
class BusinessException(root: Exception) : CharacterSheetStoreException(root)
|
||||
class FileWriteException(root: Exception) : CharacterSheetStoreException(root)
|
||||
class FileReadException(root: Exception) : CharacterSheetStoreException(root)
|
||||
}
|
||||
|
|
@ -1,5 +1,8 @@
|
|||
package com.pixelized.server.lwa.model.tag
|
||||
|
||||
import com.pixelized.server.lwa.server.exception.FileReadException
|
||||
import com.pixelized.server.lwa.server.exception.FileWriteException
|
||||
import com.pixelized.server.lwa.server.exception.JsonConversionException
|
||||
import com.pixelized.shared.lwa.model.tag.TagJson
|
||||
import com.pixelized.shared.lwa.utils.PathProvider
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
|
|
@ -100,9 +103,4 @@ class TagStore(
|
|||
private fun characterFile() = File("${pathProvider.tagsPath()}$CHARACTER.json")
|
||||
|
||||
private fun alterationFile() = File("${pathProvider.tagsPath()}$ALTERATION.json")
|
||||
|
||||
sealed class TagStoreException(root: Exception) : Exception(root)
|
||||
class JsonConversionException(root: Exception) : TagStoreException(root)
|
||||
class FileWriteException(root: Exception) : TagStoreException(root)
|
||||
class FileReadException(root: Exception) : TagStoreException(root)
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package com.pixelized.server.lwa.server.exception
|
||||
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
|
||||
class BusinessException(
|
||||
message: String,
|
||||
val code: APIResponse.ErrorCode? = null,
|
||||
) : ServerException(
|
||||
root = Exception(message)
|
||||
)
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package com.pixelized.server.lwa.server.exception
|
||||
|
||||
class FileReadException(root: Exception) : ServerException(root)
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package com.pixelized.server.lwa.server.exception
|
||||
|
||||
class FileWriteException(root: Exception) : ServerException(root)
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package com.pixelized.server.lwa.server.exception
|
||||
|
||||
class JsonCodingException(root: Exception) : ServerException(root)
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package com.pixelized.server.lwa.server.exception
|
||||
|
||||
class JsonConversionException(root: Exception) : ServerException(root)
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
package com.pixelized.server.lwa.server.exception
|
||||
|
||||
class MissingParameterException(name: String) :
|
||||
ServerException(root = Exception("Missing '$name' parameter."))
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package com.pixelized.server.lwa.server.exception
|
||||
|
||||
sealed class ServerException(root: Exception) : Exception(root)
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package com.pixelized.server.lwa.server.rest.alteration
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.alterationId
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.ApiSynchronisation
|
||||
import io.ktor.server.response.respond
|
||||
|
|
@ -27,19 +27,9 @@ fun Engine.deleteAlteration(): suspend RoutingContext.() -> Unit {
|
|||
alterationId = alterationId,
|
||||
),
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.pixelized.server.lwa.server.rest.alteration
|
|||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.alterationId
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import io.ktor.server.response.respond
|
||||
import io.ktor.server.routing.RoutingContext
|
||||
|
|
@ -22,11 +23,8 @@ fun Engine.getAlteration(): suspend RoutingContext.() -> Unit {
|
|||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.pixelized.server.lwa.server.rest.alteration
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import io.ktor.server.response.respond
|
||||
import io.ktor.server.routing.RoutingContext
|
||||
|
|
@ -14,11 +15,8 @@ fun Engine.getAlterationTags(): suspend RoutingContext.() -> Unit {
|
|||
),
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.pixelized.server.lwa.server.rest.alteration
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import io.ktor.server.response.respond
|
||||
import io.ktor.server.routing.RoutingContext
|
||||
|
|
@ -14,11 +15,8 @@ fun Engine.getAlterations(): suspend RoutingContext.() -> Unit {
|
|||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package com.pixelized.server.lwa.server.rest.alteration
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.create
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.model.alteration.AlterationJson
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.ApiSynchronisation
|
||||
|
|
@ -29,19 +29,9 @@ fun Engine.putAlteration(): suspend RoutingContext.() -> Unit {
|
|||
alterationId = form.id,
|
||||
),
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package com.pixelized.server.lwa.server.rest.campaign
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.characterSheetId
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.CampaignEvent
|
||||
import io.ktor.server.response.respond
|
||||
|
|
@ -27,19 +27,9 @@ fun Engine.removeCampaignCharacter(): suspend RoutingContext.() -> Unit {
|
|||
characterSheetId = characterSheetId,
|
||||
)
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package com.pixelized.server.lwa.server.rest.campaign
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.characterSheetId
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.CampaignEvent
|
||||
import io.ktor.server.response.respond
|
||||
|
|
@ -27,19 +27,9 @@ fun Engine.removeCampaignNpc(): suspend RoutingContext.() -> Unit {
|
|||
characterSheetId = characterSheetId,
|
||||
)
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.pixelized.server.lwa.server.rest.campaign
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import io.ktor.server.response.respond
|
||||
import io.ktor.server.routing.RoutingContext
|
||||
|
|
@ -14,11 +15,8 @@ fun Engine.getCampaign(): suspend RoutingContext.() -> Unit {
|
|||
),
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package com.pixelized.server.lwa.server.rest.campaign
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.characterSheetId
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.CampaignEvent
|
||||
import io.ktor.server.response.respond
|
||||
|
|
@ -27,19 +27,9 @@ fun Engine.putCampaignCharacter(): suspend RoutingContext.() -> Unit {
|
|||
characterSheetId = characterSheetId,
|
||||
)
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package com.pixelized.server.lwa.server.rest.campaign
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.characterSheetId
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.CampaignEvent
|
||||
import io.ktor.server.response.respond
|
||||
|
|
@ -27,19 +27,9 @@ fun Engine.putCampaignNpc(): suspend RoutingContext.() -> Unit {
|
|||
characterSheetId = characterSheetId,
|
||||
)
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.pixelized.server.lwa.server.rest.campaign
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.model.campaign.CampaignJsonV2
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.CampaignEvent
|
||||
|
|
@ -30,19 +30,9 @@ fun Engine.putCampaignScene(): suspend RoutingContext.() -> Unit {
|
|||
name = scene.name,
|
||||
)
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package com.pixelized.server.lwa.server.rest.character
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.characterSheetId
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.ApiSynchronisation
|
||||
import io.ktor.server.response.respond
|
||||
|
|
@ -27,19 +27,9 @@ fun Engine.deleteCharacter(): suspend RoutingContext.() -> Unit {
|
|||
characterSheetId = characterSheetId,
|
||||
),
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package com.pixelized.server.lwa.server.rest.character
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.characterSheetId
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import io.ktor.server.response.respond
|
||||
import io.ktor.server.routing.RoutingContext
|
||||
|
|
@ -22,19 +22,9 @@ fun Engine.getCharacter(): suspend RoutingContext.() -> Unit {
|
|||
data = characterSheet,
|
||||
),
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.pixelized.server.lwa.server.rest.character
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import io.ktor.server.response.respond
|
||||
import io.ktor.server.routing.RoutingContext
|
||||
|
|
@ -14,11 +15,8 @@ fun Engine.getCharacterTags(): suspend RoutingContext.() -> Unit {
|
|||
),
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.pixelized.server.lwa.server.rest.character
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import io.ktor.server.response.respond
|
||||
import io.ktor.server.routing.RoutingContext
|
||||
|
|
@ -14,11 +15,8 @@ fun Engine.getCharacters(): suspend RoutingContext.() -> Unit {
|
|||
),
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package com.pixelized.server.lwa.server.rest.character
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.create
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.model.characterSheet.CharacterSheetJson
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.ApiSynchronisation
|
||||
|
|
@ -28,19 +28,9 @@ fun Engine.putCharacter(): suspend RoutingContext.() -> Unit {
|
|||
characterSheetId = form.id,
|
||||
),
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
package com.pixelized.server.lwa.server.rest.character
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.active
|
||||
import com.pixelized.server.lwa.utils.extentions.alterationId
|
||||
import com.pixelized.server.lwa.utils.extentions.characterSheetId
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.CharacterSheetEvent
|
||||
import io.ktor.server.response.respond
|
||||
|
|
@ -35,19 +35,9 @@ fun Engine.putCharacterAlteration(): suspend RoutingContext.() -> Unit {
|
|||
active = active,
|
||||
)
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
package com.pixelized.server.lwa.server.rest.character
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.server.exception.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.characterSheetId
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.CharacterSheetEvent
|
||||
import io.ktor.server.response.respond
|
||||
|
|
@ -14,10 +15,7 @@ fun Engine.putCharacterDamage(): suspend RoutingContext.() -> Unit {
|
|||
// get the query parameter
|
||||
val characterSheetId = call.queryParameters.characterSheetId
|
||||
val damage = call.queryParameters["damage"]?.toIntOrNull()
|
||||
?: throw MissingParameterException(
|
||||
name = "damage",
|
||||
errorCode = APIResponse.MISSING_DAMAGE
|
||||
)
|
||||
?: throw MissingParameterException(name = "damage")
|
||||
// fetch the character sheet
|
||||
val characterSheet = characterService.character(characterSheetId)
|
||||
?: error("CharacterSheet with id:$characterSheetId not found.")
|
||||
|
|
@ -38,19 +36,9 @@ fun Engine.putCharacterDamage(): suspend RoutingContext.() -> Unit {
|
|||
damage = damage,
|
||||
)
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
package com.pixelized.server.lwa.server.rest.character
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.server.exception.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.characterSheetId
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.CharacterSheetEvent
|
||||
import io.ktor.server.response.respond
|
||||
|
|
@ -14,10 +15,7 @@ fun Engine.putCharacterDiminished(): suspend RoutingContext.() -> Unit {
|
|||
// get the query parameter
|
||||
val characterSheetId = call.queryParameters.characterSheetId
|
||||
val diminished = call.queryParameters["diminished"]?.toIntOrNull()
|
||||
?: throw MissingParameterException(
|
||||
name = "diminished",
|
||||
errorCode = APIResponse.MISSING_DIMINISHED
|
||||
)
|
||||
?: throw MissingParameterException(name = "diminished")
|
||||
// Update the character damage
|
||||
characterService.updateDiminished(
|
||||
characterSheetId = characterSheetId,
|
||||
|
|
@ -34,19 +32,9 @@ fun Engine.putCharacterDiminished(): suspend RoutingContext.() -> Unit {
|
|||
diminished = diminished,
|
||||
)
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
package com.pixelized.server.lwa.server.rest.character
|
||||
|
||||
import com.pixelized.server.lwa.server.Engine
|
||||
import com.pixelized.server.lwa.utils.extentions.MissingParameterException
|
||||
import com.pixelized.server.lwa.server.exception.MissingParameterException
|
||||
import com.pixelized.server.lwa.utils.extentions.characterSheetId
|
||||
import com.pixelized.server.lwa.utils.extentions.exception
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.shared.lwa.protocol.websocket.CharacterSheetEvent
|
||||
import io.ktor.server.response.respond
|
||||
|
|
@ -14,10 +15,7 @@ fun Engine.putCharacterFatigue(): suspend RoutingContext.() -> Unit {
|
|||
// get the query parameter
|
||||
val characterSheetId = call.queryParameters.characterSheetId
|
||||
val fatigue = call.queryParameters["fatigue"]?.toIntOrNull()
|
||||
?: throw MissingParameterException(
|
||||
name = "fatigue",
|
||||
errorCode = APIResponse.MISSING_FATIGUE
|
||||
)
|
||||
?: throw MissingParameterException(name = "fatigue")
|
||||
// fetch the character sheet
|
||||
val characterSheet = characterService.character(characterSheetId)
|
||||
?: error("CharacterSheet with id:$characterSheetId not found.")
|
||||
|
|
@ -38,19 +36,9 @@ fun Engine.putCharacterFatigue(): suspend RoutingContext.() -> Unit {
|
|||
fatigue = fatigue,
|
||||
)
|
||||
)
|
||||
} catch (exception: MissingParameterException) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = exception.errorCode,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
} catch (exception: Exception) {
|
||||
call.respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.GENERIC,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
call.exception(
|
||||
exception = exception
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,41 +1,24 @@
|
|||
package com.pixelized.server.lwa.utils.extentions
|
||||
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import com.pixelized.server.lwa.server.exception.MissingParameterException
|
||||
import io.ktor.http.Parameters
|
||||
|
||||
val Parameters.characterSheetId
|
||||
get() = "characterSheetId".let { param ->
|
||||
this[param] ?: throw MissingParameterException(
|
||||
name = param,
|
||||
errorCode = APIResponse.MISSING_CHARACTER_SHEET_ID,
|
||||
)
|
||||
this[param] ?: throw MissingParameterException(name = param)
|
||||
}
|
||||
|
||||
val Parameters.alterationId
|
||||
get() = "alterationId".let { param ->
|
||||
this[param] ?: throw MissingParameterException(
|
||||
name = param,
|
||||
errorCode = APIResponse.MISSING_ALTERATION_ID,
|
||||
)
|
||||
this[param] ?: throw MissingParameterException(name = param)
|
||||
}
|
||||
|
||||
val Parameters.create
|
||||
get() = "create".let { param ->
|
||||
this[param]?.toBooleanStrictOrNull() ?: throw MissingParameterException(
|
||||
name = param,
|
||||
errorCode = APIResponse.MISSING_CREATE
|
||||
)
|
||||
this[param]?.toBooleanStrictOrNull() ?: throw MissingParameterException(name = param)
|
||||
}
|
||||
|
||||
val Parameters.active
|
||||
get() = "active".let { param ->
|
||||
this[param]?.toBooleanStrictOrNull() ?: throw MissingParameterException(
|
||||
name = param,
|
||||
errorCode = APIResponse.MISSING_ACTIVE
|
||||
)
|
||||
this[param]?.toBooleanStrictOrNull() ?: throw MissingParameterException(name = param)
|
||||
}
|
||||
|
||||
class MissingParameterException(
|
||||
name: String,
|
||||
val errorCode: Int,
|
||||
) : Exception("Missing $name parameter.")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
package com.pixelized.server.lwa.utils.extentions
|
||||
|
||||
import com.pixelized.server.lwa.server.exception.BusinessException
|
||||
import com.pixelized.server.lwa.server.exception.MissingParameterException
|
||||
import com.pixelized.shared.lwa.protocol.rest.APIResponse
|
||||
import io.ktor.server.response.respond
|
||||
import io.ktor.server.routing.RoutingCall
|
||||
|
||||
|
||||
suspend inline fun <reified T : Exception> RoutingCall.exception(exception: T) {
|
||||
when (exception) {
|
||||
|
||||
is MissingParameterException -> {
|
||||
respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.BAD_REQUEST,
|
||||
message = exception.message ?: "?",
|
||||
code = APIResponse.ErrorCode.AlterationName,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
is BusinessException -> {
|
||||
respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.INTERNAL_ERROR,
|
||||
message = exception.message ?: "?",
|
||||
code = exception.code,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
else -> respond(
|
||||
message = APIResponse.error(
|
||||
status = APIResponse.INTERNAL_ERROR,
|
||||
message = exception.message ?: "?",
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue