termtap/internal/proxy/server.go
2026-04-15 12:33:08 -07:00

44 lines
862 B
Go

package proxy
import (
"context"
"fmt"
"net"
"net/http"
"time"
"termtap.dev/internal/model"
)
func NewProxyServer(addr string, ch chan<- model.Event) (*model.ProxyServer, error) {
listener, err := net.Listen("tcp", addr)
if err != nil {
return nil, err
}
url := fmt.Sprintf("http://%s", listener.Addr().String())
ps := &model.ProxyServer{
Listener: &listener,
Server: &http.Server{Handler: proxyHandler(ch)},
Url: url,
}
return ps, nil
}
// BUG: Not sure what all this does
func Destroy(ps *model.ProxyServer, ch chan<- model.Event) {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
if ps != nil && ps.Server != nil {
_ = ps.Server.Shutdown(ctx)
ch <- model.Event{
Time: time.Now().Local(),
Type: model.EventTypeProxyStarted,
Body: "proxy server was destroyed",
}
}
}