package chirp_stack

import (
	"context"
	"net/http"

	"git.huangwc.com/pig/pig-farm-controller/internal/app/listener"
	"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
)

// PlaceholderListener 是一个占位符, 用于在非 LoRaWAN 配置下满足 ListenHandler 接口
type PlaceholderListener struct {
	ctx context.Context
}

// NewPlaceholderListener 创建一个新的 PlaceholderListener 实例
// 它只打印一条日志, 表明 ChirpStack listener 未被激活
func NewPlaceholderListener(ctx context.Context) listener.ListenHandler {
	return &PlaceholderListener{
		ctx: ctx,
	}
}

// Handler 返回一个不执行任何操作的 http.HandlerFunc
// 理论上, 在占位符生效的模式下, 这个 Handler 不应该被调用
func (p *PlaceholderListener) Handler() http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		logger := logs.TraceLogger(r.Context(), p.ctx, "PlaceholderListener")
		logger.Warn("PlaceholderListener 的 Handler 被调用, 这通常是意料之外的。")
		w.WriteHeader(http.StatusNotImplemented)
	}
}
