Split site to separate files

This commit is contained in:
nxshock 2021-09-25 12:38:27 +05:00
parent a0e0b7b1cc
commit b0f9ea1f49
7 changed files with 108 additions and 10 deletions

View File

@ -7,7 +7,7 @@ import (
func handleGenres(w http.ResponseWriter, r *http.Request) {
if r.RequestURI != "/" {
http.Error(w, "not found", http.StatusNotFound)
http.FileServer(http.FS(stripSiteFS)).ServeHTTP(w, r)
return
}
@ -18,7 +18,7 @@ func handleGenres(w http.ResponseWriter, r *http.Request) {
Domain: r.Host,
Genres: Genres}
err := templates.Lookup("genres.html").Execute(w, data)
err := templates.Lookup("index.htm").Execute(w, data)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}

View File

@ -1,19 +1,13 @@
package main
import (
"embed"
"html/template"
"log"
"net/http"
"os"
"time"
_ "embed"
)
//go:embed templates/genres.html
var templateBytes embed.FS
var templates *template.Template
func init() {
@ -45,7 +39,7 @@ func init() {
func initTepmplates() error {
var err error
templates, err = template.ParseFS(templateBytes, "templates/*.html")
templates, err = template.ParseFS(siteFS, "site/*.htm")
if err != nil {
return err
}

15
site.go Normal file
View File

@ -0,0 +1,15 @@
package main
import (
"embed"
"io/fs"
)
//go:embed site/*
var siteFS embed.FS
var stripSiteFS fs.FS
func init() {
stripSiteFS, _ = fs.Sub(siteFS, "site")
}

1
site/favicon.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" stroke="none" viewBox="0 0 30 30"><path d="M 10,25 0,20 v 10 l 10,-5" fill="#8abeb7"/><path d="M 10,15 0,10 v 10 l 10,-5" fill="#8abeb7"/><path d="m 0,20 10,5 V 15 L 0,20" fill="#b5bd68"/><path d="M 20,20 10,15 v 10 l 10,-5" fill="#f0c674"/><path d="M 30,15 20,10 v 10 l 10,-5" fill="#cc6666"/><path d="m 10,15 10,5 V 10 l -10,5" fill="#de935f"/><path d="M 20,10 10,5 v 10 l 10,-5" fill="#f0c674"/><path d="m 0,10 10,5 V 5 L 0,10" fill="#b5bd68"/><path d="M 10,5 0,0 V 10 L 10,5" fill="#8abeb7"/></svg>

After

Width:  |  Height:  |  Size: 557 B

24
site/index.htm Normal file
View File

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Список жанров</title>
<link rel="stylesheet" href="/style.css">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
</head>
<body>
<header>
<img src="/favicon.svg">
{{.Domain}}
</header>
<main>
<h1>Список жанров</h1>
<ul id="genres-list">
{{range .Genres}}
<li><a href="/getm3u?genre={{.Code}}">{{.Name}}</a></li>
{{end}}
</ul>
</main>
</body>
</html>

65
site/style.css Normal file
View File

@ -0,0 +1,65 @@
* {
font-family: Verdana;
font-size: 16px;
color: #abb2bf;
margin: .5em;
padding: 0;
}
html {
margin: 0;
padding: 0;
height: 100%
}
body {
background-color: #282c34;
display: flex;
justify-content: space-between;
flex-wrap: nowrap;
flex-direction: column;
height: 100%;
margin: 0;
padding: 0;
}
a {
text-decoration: none;
color: #61afef;
}
svg, img {
vertical-align: middle;
width: 1em;
height: 1em;
}
header {
flex-grow: 0;
background-color: #353b45;
border-bottom: 1px solid #3e4451;
padding: .5em;
margin: 0;
}
h1 {
margin-top: 1em;
font-size: 150%;
}
ul {
list-style-type: none;
}
form {
width: calc(100% - 1em);
}
form>input {
width: calc(100% - 2em);
padding: .5em;
}
main {
flex-grow: 1;
}

View File

@ -1 +0,0 @@
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><title>Список жанров</title><style>*{font-family: Verdana;font-size: 16px;color: #abb2bf;margin: .5em;padding: 0;}html{margin: 0;padding: 0;height: 100%}body{background-color: #282c34;display: flex;justify-content: space-between;flex-wrap: nowrap;flex-direction: column;height: 100%;margin: 0;padding: 0;}a{text-decoration: none;color: #61afef;}svg, img{vertical-align: middle;width: 1em;height: 1em;}header{flex-grow: 0;background-color: #353b45;border-bottom: 1px solid #3e4451;padding: .5em;margin: 0;}h1{margin-top: 1em;font-size: 150%;}ul{list-style-type: none;}form{width: calc(100% - 1em);}form > input{width: calc(100% - 2em);padding: .5em;}main{flex-grow: 1;}</style></head><body><header><svg xmlns="http://www.w3.org/2000/svg" version="1.1" stroke="none" viewBox="0 0 30 30"><path d="M 10,25 0,20 v 10 l 10,-5" fill="#8abeb7"/><path d="M 10,15 0,10 v 10 l 10,-5" fill="#8abeb7"/><path d="m 0,20 10,5 V 15 L 0,20" fill="#b5bd68"/><path d="M 20,20 10,15 v 10 l 10,-5" fill="#f0c674"/><path d="M 30,15 20,10 v 10 l 10,-5" fill="#cc6666"/><path d="m 10,15 10,5 V 10 l -10,5" fill="#de935f"/><path d="M 20,10 10,5 v 10 l 10,-5" fill="#f0c674"/><path d="m 0,10 10,5 V 5 L 0,10" fill="#b5bd68"/><path d="M 10,5 0,0 V 10 L 10,5" fill="#8abeb7"/></svg>{{.Domain}}</header><main><h1>Список жанров</h1><ul id="genres-list">{{range .Genres}}<li><a href="/getm3u?genre={{.Code}}">{{.Name}}</a></li>{{end}}</ul></main></body></html>