/*
 * Copyright (c) 2025 SimcuTeam. All rights reserved.
 * 遵循 MIT 许可证。
 */

package simcu::simapi.helpers

import soulsoft_web_http.*

/**
 * 响应写出工具：写出响应体并缓存文本，供请求日志中间件读取。
 *
 * 背景：soulsoft 的 HttpResponse.body 为只写流（read 抛 UnsupportedException），
 * 无法像原版那样用 MemoryStream 替换 Body 捕获响应内容；
 * 故在统一写出入口缓存文本，请求日志中间件直接从 context.items 读取。
 */
public class SimApiResponseWriter {
    private init() {}

    /**
     * 响应体缓存键（写入 HttpContext.items）。
     */
    public static let responseBodyCacheKey: String = "SimApi:ResponseBodyCache"

    /**
     * 写出响应文本并缓存（供请求日志中间件读取）。
     * @param context HTTP 上下文。
     * @param text 响应正文文本。
     */
    public static func write(context: HttpContext, text: String): Unit {
        context.items[responseBodyCacheKey] = text
        context.response.write(text)
    }
}
