51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package httpServer
|
|
|
|
import (
|
|
"log"
|
|
"net/http"
|
|
|
|
"git.gnous.eu/gnouseu/plakken/internal/constant"
|
|
"git.gnous.eu/gnouseu/plakken/internal/web/plak"
|
|
"git.gnous.eu/gnouseu/plakken/internal/web/static"
|
|
"github.com/redis/go-redis/v9"
|
|
)
|
|
|
|
type ServerConfig struct {
|
|
HTTPServer *http.Server
|
|
UrlLength uint8
|
|
DB *redis.Client
|
|
}
|
|
|
|
// Configure HTTP router
|
|
func (config ServerConfig) router(_ http.ResponseWriter, _ *http.Request) {
|
|
WebConfig := plak.WebConfig{
|
|
DB: config.DB,
|
|
UrlLength: config.UrlLength,
|
|
}
|
|
|
|
http.HandleFunc("GET /{$}", static.Home)
|
|
http.HandleFunc("GET /{key}/{settings...}", WebConfig.View)
|
|
http.HandleFunc("GET /static/{file}", static.ServeStatic)
|
|
http.HandleFunc("POST /{$}", WebConfig.Create)
|
|
http.HandleFunc("DELETE /{key}", WebConfig.Delete)
|
|
}
|
|
|
|
// Config Configure HTTP server
|
|
func Config(listenAddress string) *http.Server {
|
|
server := &http.Server{
|
|
Addr: listenAddress,
|
|
ReadTimeout: constant.HTTPTimeout,
|
|
WriteTimeout: constant.HTTPTimeout,
|
|
}
|
|
|
|
return server
|
|
}
|
|
|
|
// Server Start HTTP server
|
|
func (config ServerConfig) Server() {
|
|
log.Println("Listening on " + config.HTTPServer.Addr)
|
|
|
|
http.HandleFunc("/", config.router)
|
|
|
|
log.Fatal(config.HTTPServer.ListenAndServe())
|
|
}
|