public suspend fun deserialize()

in aws-runtime/protocols/aws-json-protocols/common/src/aws/sdk/kotlin/runtime/protocol/json/RestJsonErrorDeserializer.kt [48:73]


    public suspend fun deserialize(headers: Headers, payload: ByteArray?): ErrorDetails {
        var code: String? = headers[X_AMZN_ERROR_TYPE_HEADER_NAME]
        var message: String? = headers[X_AMZN_ERROR_MESSAGE_HEADER_NAME]
        if (message == null) {
            message = headers[X_AMZN_EVENT_ERROR_MESSAGE_HEADER_NAME]
        }

        if (payload != null) {
            val deserializer = JsonDeserializer(payload)
            deserializer.deserializeStruct(OBJ_DESCRIPTOR) {
                loop@while (true) {
                    when (findNextFieldIndex()) {
                        ERR_CODE_ALT1_DESCRIPTOR.index,
                        ERR_CODE_ALT2_DESCRIPTOR.index -> code = deserializeString()
                        MESSAGE_ALT1_DESCRIPTOR.index,
                        MESSAGE_ALT2_DESCRIPTOR.index,
                        MESSAGE_ALT3_DESCRIPTOR.index -> message = deserializeString()
                        null -> break@loop
                        else -> skipValue()
                    }
                }
            }
        }

        return ErrorDetails(sanitize(code), message, requestId = null)
    }