Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,7 @@ import kotlinx.serialization.Serializable
@Serializable
data class ErrorMessageDto(
val message: String?,
val stacktrace: String
val exception: String,
val stacktraceBase64: String,
val stacktraceLines: List<String>
)
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import zio.json.{DeriveJsonEncoder, JsonEncoder}

case class ErrorMessageDto(
message: Option[String],
stacktrace: String
exception: String,
stacktraceBase64: String,
stacktraceLines: List[String]
)

object ErrorMessageDto {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@ package com.github.ai.split.utils
import com.github.ai.split.api.ErrorMessageDto
import com.github.ai.split.entity.exception.DomainError
import com.github.ai.split.utils.*
import zio.http.{Response, Status}
import zio.http.{Body, Response, Status}
import zio.json.*

import java.nio.charset.StandardCharsets.UTF_8
import java.nio.charset.{Charset, StandardCharsets}
import java.util.Base64
import scala.annotation.tailrec

extension (exception: DomainError) {
Expand All @@ -21,14 +24,22 @@ extension (exception: DomainError) {
}

val stacktrace = exceptionToPrint.stackTraceToString()
val encodedStacktrace = Base64.getEncoder.encodeToString(stacktrace.getBytes(UTF_8))
val stacktraceLines = stacktrace
.split("\n")
.map(_.replaceAll("\t", " "))
.toList

val response = ErrorMessageDto(
message = if (hasMessage) exception.message else None,
stacktrace = stacktrace
message = if (hasMessage) exception.message.map(_.trim) else None,
exception = exceptionToPrint.toString.trim,
stacktraceBase64 = encodedStacktrace,
stacktraceLines = stacktraceLines
)

Response.error(
status = Status.BadRequest,
message = response.toJsonPretty + "\n"
body = Body.fromString(response.toJsonPretty, UTF_8)
)
}

Expand Down