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

package simcu::simapi.helpers

import soulsoft_web_http.*
import simcu::serialization.*
import simcu::simapi.communications.*

/**
 * 响应封装：对写操作（Unit）返回统一成功响应，对已有 SimApiBaseResponse 透传。
 * 在仓颉版中以中间件形式实现。
 */
public class SimApiResponseFilter {

    /**
     * 包装响应委托：捕获下一级写入的响应内容。
     * 说明：仓颉版约定各路由处理器直接返回 SimApiBaseResponse，
     * 由 SimApiExtensions 统一写入，本类保留供扩展使用。
     */
    public func wrap(next: RequestDelegate): RequestDelegate {
        return {
            context =>
                next(context)
                if (!context.response.hasStarted) {
                    context.response.contentType = "application/json; charset=utf-8"
                    SimApiResponseWriter.write(context, JsonSerializer.serialize(SimApiBaseResponse()))
                }
        }
    }
}
