mirror of
https://github.com/rramiachraf/dumb.git
synced 2025-04-04 21:37:38 +03:00
Serves a page including the album name, artist, track list, and credits. Each of the tracks have links to the lyrics page, provided there is one available.
64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"net/http"
|
|
"os"
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/allegro/bigcache/v3"
|
|
"github.com/gorilla/mux"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var logger = logrus.New()
|
|
|
|
func main() {
|
|
c, err := bigcache.NewBigCache(bigcache.DefaultConfig(time.Hour * 24))
|
|
if err != nil {
|
|
logger.Fatalln("can't initialize caching")
|
|
}
|
|
cache = c
|
|
|
|
r := mux.NewRouter()
|
|
|
|
r.Use(securityHeaders)
|
|
|
|
r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { render("home", w, nil) })
|
|
r.HandleFunc("/search", searchHandler).Methods("GET")
|
|
r.HandleFunc("/{id}-lyrics", lyricsHandler)
|
|
r.HandleFunc("/images/{filename}.{ext}", proxyHandler)
|
|
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
|
|
r.HandleFunc("/albums/{artist}/{albumName}", albumHandler)
|
|
r.NotFoundHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(http.StatusNotFound)
|
|
render("error", w, map[string]string{
|
|
"Status": "404",
|
|
"Error": "page not found",
|
|
})
|
|
|
|
})
|
|
|
|
server := &http.Server{
|
|
Handler: r,
|
|
WriteTimeout: 25 * time.Second,
|
|
ReadTimeout: 25 * time.Second,
|
|
}
|
|
|
|
port, _ := strconv.Atoi(os.Getenv("PORT"))
|
|
|
|
if port == 0 {
|
|
port = 5555
|
|
}
|
|
|
|
l, err := net.Listen("tcp", fmt.Sprintf(":%d", port))
|
|
if err != nil {
|
|
logger.Fatalln(err)
|
|
}
|
|
|
|
logger.Infof("server is listening on port %d\n", port)
|
|
|
|
logger.Fatalln(server.Serve(l))
|
|
}
|