80 lines
1.6 KiB
Go
80 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"html/template"
|
|
"io/ioutil"
|
|
"log"
|
|
"net"
|
|
"net/http"
|
|
"os"
|
|
|
|
"./api"
|
|
"github.com/julienschmidt/httprouter"
|
|
)
|
|
|
|
const sockPath = "/srv/kumori.moe/sock/meikan.sock"
|
|
|
|
var tmpl = template.Must(template.ParseGlob("templates/*.gohtml"))
|
|
|
|
func init() {
|
|
l, _ := ioutil.ReadDir("components")
|
|
for _, v := range l {
|
|
c, _ := ioutil.ReadFile(`components/` + v.Name())
|
|
tmpl, _ = tmpl.Parse(string(c))
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
os.Remove(sockPath)
|
|
sock, err := net.Listen("unix", sockPath)
|
|
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
return
|
|
}
|
|
|
|
router := httprouter.New()
|
|
|
|
router.GET("/", getIndex)
|
|
router.GET("/anime", getAnime)
|
|
router.GET("/reload", reload)
|
|
|
|
router.ServeFiles("/static/*filepath", http.Dir("static/"))
|
|
|
|
err = os.Chmod(sockPath, 0770)
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
|
|
log.Fatal(http.Serve(sock, router))
|
|
}
|
|
|
|
func getIndex(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
|
err := tmpl.ExecuteTemplate(w, "home.gohtml", nil)
|
|
if err != nil {
|
|
println(err)
|
|
}
|
|
}
|
|
|
|
func getAnime(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
|
animeList, err := api.SearchAnime("tsukaima")
|
|
if err != nil {
|
|
fmt.Fprint(w, err)
|
|
return
|
|
}
|
|
err = tmpl.ExecuteTemplate(w, "anime.gohtml", &animeList)
|
|
if err != nil {
|
|
println(err)
|
|
}
|
|
}
|
|
|
|
func reload(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
|
tmpl = template.Must(template.ParseGlob("templates/*.gohtml"))
|
|
l, _ := ioutil.ReadDir("components")
|
|
for _, v := range l {
|
|
c, _ := ioutil.ReadFile(`components/` + v.Name())
|
|
tmpl, _ = tmpl.Parse(string(c))
|
|
}
|
|
}
|