package transport import ( "io" "net/http" "git.huangwc.com/pig/pig-farm-controller/internal/infra/logs" ) // ChirpStackListener 是一个监听器, 用于监听ChirpStack反馈的设备上行事件 type ChirpStackListener struct { logger *logs.Logger } func NewChirpStackListener(logger *logs.Logger) *ChirpStackListener { return &ChirpStackListener{ logger: logger, } } func (c *ChirpStackListener) Handler() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { b, err := io.ReadAll(r.Body) if err != nil { c.logger.Errorf("读取请求体失败: %v", err) // TODO 直接崩溃不太合适 panic(err) } event := r.URL.Query().Get("event") switch event { case "up": // 链路上行事件 err = c.up(b) if err != nil { c.logger.Errorf("处理链路上行事件失败: %v", err) // TODO 直接崩溃不太合适 panic(err) } default: c.logger.Errorf("未知的ChirpStack事件: %s", event) } } } // up 处理链路上行事件 func (c *ChirpStackListener) up(data []byte) error { // TODO implement me panic("implement me") }