a simple url shortener in Go (check it out at qurl.org)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

75 lines
1.4 KiB

package pages
import (
"fmt"
"html/template"
"net/http"
"qurl/static"
"qurl/storage"
)
type RootHandler struct {
Storage storage.Storage
index *static.StaticContent
css *static.StaticContent
favi *static.StaticContent
submit *template.Template
}
func (ctx *RootHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fname := r.URL.Path
switch fname {
case "/index.html":
fallthrough
case "/":
ctx.index.ServeHTTP(w, r)
case "/submit.html":
ctx.ServeSubmit(w, r)
case "/qurl.css":
ctx.css.ServeHTTP(w, r)
case "/favicon.ico":
ctx.favi.ServeHTTP(w, r)
default:
fmt.Printf("Path: %s\n", fname)
}
}
func (ctx *RootHandler) Init() error {
// Initialize the static content object for the index page
index := &static.StaticContent{Content: "index.html"}
err := index.Init()
if err != nil {
return err
}
ctx.index = index
// Initialize the static content object for the css
css := &static.StaticContent{Content: "qurl.css"}
err = css.Init()
if err != nil {
return err
}
ctx.css = css
// Initialize the static content object for the css
favi := &static.StaticContent{Content: "favicon.ico"}
err = favi.Init()
if err != nil {
return err
}
ctx.favi = favi
// Initialize submit page template
ctx.submit = template.New("submit.html")
_, err = ctx.submit.Parse(string(static.Assets["submit.html"]))
if err != nil {
return err
}
return nil
}