Files
cellbot/internal/adapter/milky/webhook_server.go

61 lines
1.3 KiB
Go
Raw Normal View History

package milky
import (
"cellbot/pkg/net"
"fmt"
"go.uber.org/zap"
)
// WebhookServer Webhook 服务器
// 使用 pkg/net.SimpleWebhookServer 实现,避免重复的 fasthttp 代码
type WebhookServer struct {
server *net.SimpleWebhookServer
logger *zap.Logger
addr string
}
// NewWebhookServer 创建 Webhook 服务器
func NewWebhookServer(addr string, accessToken string, logger *zap.Logger) *WebhookServer {
eventChan := make(chan []byte, 100)
config := net.SimpleWebhookConfig{
Addr: addr,
AccessToken: accessToken,
EventChannel: eventChan,
}
return &WebhookServer{
server: net.NewSimpleWebhookServer(config, logger),
logger: logger.Named("webhook-server"),
addr: addr,
}
}
// Start 启动服务器
func (s *WebhookServer) Start() error {
s.logger.Info("Starting webhook server", zap.String("addr", s.addr))
if err := s.server.Start(); err != nil {
return fmt.Errorf("failed to start webhook server: %w", err)
}
return nil
}
// Events 获取事件通道
func (s *WebhookServer) Events() <-chan []byte {
return s.server.Events()
}
// Stop 停止服务器
func (s *WebhookServer) Stop() error {
s.logger.Info("Stopping webhook server")
if err := s.server.Stop(); err != nil {
return fmt.Errorf("failed to stop webhook server: %w", err)
}
return nil
}