Files
ultrashorty/main.go
T

52 lines
1.0 KiB
Go
Raw Normal View History

2026-03-30 17:38:09 +01:00
package main
import (
"net"
"net/http"
"github.com/alecthomas/kong"
"github.com/rs/zerolog"
)
type CLI struct {
File string `arg:"" name:"file" short:"f" help:"Path to CSV redirects file." type:"path"`
Host string `name:"host" help:"HTTP listen host." default:"${host}"`
Port string `name:"port" short:"p" help:"HTTP listen port." default:"${port}"`
}
type HttpServer struct {
CLI *CLI
Log zerolog.Logger
}
func (srv *HttpServer) ServeHTTP(w http.ResponseWriter, req *http.Request) {
statusCode := 404
srv.Log.Trace().Int("result", statusCode).Msg(req.URL.Path)
w.WriteHeader(statusCode)
}
func main() {
vars := kong.Vars{
"host": "localhost",
"port": "4000",
}
cli := &CLI{}
kong.Parse(cli, vars)
srv := &HttpServer{
CLI: cli,
Log: zerolog.New(zerolog.NewConsoleWriter()).With().Timestamp().Logger(),
}
addr := net.JoinHostPort(cli.Host, cli.Port)
errc := make(chan error)
go func() {
errc <- http.ListenAndServe(addr, srv)
}()
srv.Log.Info().Msgf("Listening at %s", addr)
err := <-errc
panic(err)
}