|
|
|
@ -4,19 +4,36 @@ import ( |
|
|
|
"log" |
|
|
|
"os" |
|
|
|
"os/signal" |
|
|
|
"strconv" |
|
|
|
|
|
|
|
"github.com/maxibanki/golang-url-shorter/handlers" |
|
|
|
"github.com/maxibanki/golang-url-shorter/store" |
|
|
|
) |
|
|
|
|
|
|
|
func main() { |
|
|
|
dbPath := "main.db" |
|
|
|
listenAddr := ":8080" |
|
|
|
idLength := uint(4) |
|
|
|
if os.Getenv("SHORTER_DB_PATH") != "" { |
|
|
|
dbPath = os.Getenv("SHORTER_DB_PATH") |
|
|
|
} |
|
|
|
if os.Getenv("SHORTER_LISTEN_ADDR") != "" { |
|
|
|
listenAddr = os.Getenv("SHORTER_LISTEN_ADDR") |
|
|
|
} |
|
|
|
if os.Getenv("SHORTER_ID_LENGTH") != "" { |
|
|
|
length, err := strconv.ParseUint(os.Getenv("SHORTER_ID_LENGTH"), 10, 32) |
|
|
|
if err != nil { |
|
|
|
log.Fatalf("could not convert ID length into an uint: %v", err) |
|
|
|
} |
|
|
|
idLength = uint(length) |
|
|
|
} |
|
|
|
stop := make(chan os.Signal, 1) |
|
|
|
signal.Notify(stop, os.Interrupt) |
|
|
|
store, err := store.New("main.db", 4) |
|
|
|
store, err := store.New(dbPath, idLength) |
|
|
|
if err != nil { |
|
|
|
log.Fatalf("could not create store: %v", err) |
|
|
|
} |
|
|
|
handler := handlers.New(":8080", *store) |
|
|
|
handler := handlers.New(listenAddr, *store) |
|
|
|
go func() { |
|
|
|
err := handler.Listen() |
|
|
|
if err != nil { |
|
|
|
|