summaryrefslogtreecommitdiff
path: root/grimtube.go
diff options
context:
space:
mode:
Diffstat (limited to 'grimtube.go')
-rw-r--r--grimtube.go80
1 files changed, 80 insertions, 0 deletions
diff --git a/grimtube.go b/grimtube.go
new file mode 100644
index 0000000..6751543
--- /dev/null
+++ b/grimtube.go
@@ -0,0 +1,80 @@
+package main
+
+import (
+ "text/template"
+ "net/http"
+ //"io"
+ "log"
+ "strconv"
+ "path"
+
+ "grimtube/ytparser"
+)
+
+func serve(w http.ResponseWriter, templatePath string, data interface{}) {
+ funcMap := template.FuncMap {
+ "inc": func(i int) int {
+ return i + 1
+ },
+ "dec": func(i int) int {
+ return i - 1
+ },
+ }
+ base := path.Base(templatePath)
+ log.Println(base)
+ t, err := template.New("base.html").Funcs(funcMap).ParseFiles("templates/base.html", templatePath)
+ if err != nil {
+ panic(err)
+ } else {
+ if err := t.Execute(w, data); err != nil {
+ log.Fatal(err)
+ }
+ }
+ //log.Println(err)
+}
+
+func index(w http.ResponseWriter, r *http.Request) {
+ serve(w, "templates/index.html", nil)
+}
+
+func search(w http.ResponseWriter, r *http.Request) {
+ switch r.Method {
+ case "GET":
+ query := r.URL.Query()
+ term := query.Get("term")
+ sPage := query.Get("page")
+ var page int
+ if sPage == "" {
+ page = 0
+ } else {
+ p, err := strconv.Atoi(sPage)
+ if err != nil {
+ page = 0
+ } else {
+ page = p
+ }
+ }
+ items := ytparser.Search(term, page)
+ data := struct {
+ Items []ytparser.Item
+ Term string
+ Page int
+ }{
+ items,
+ term,
+ page,
+ }
+ serve(w, "templates/search.html", data)
+ default:
+ }
+}
+
+func main() {
+ fs := http.FileServer(http.Dir("static"))
+ http.Handle("/static/", http.StripPrefix("/static/", fs))
+ http.HandleFunc("/", index)
+ http.HandleFunc("/search", search)
+
+
+ log.Fatal(http.ListenAndServe(":8080", nil))
+}