diff --git a/.gitignore b/.gitignore index 8248a38a..804bde0c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ nyaa nyaa.exe nyaa-master.exe *.zip +*.swp diff --git a/main.go b/main.go index 2743602c..46c62ccb 100644 --- a/main.go +++ b/main.go @@ -40,7 +40,7 @@ func checkErr(err error) { } func unZlib(description []byte) string { - if (len(description) > 0) { + if len(description) > 0 { b := bytes.NewReader(description) log.Println(b) z, err := zlib.NewReader(b) @@ -49,7 +49,7 @@ func unZlib(description []byte) string { p, err := ioutil.ReadAll(z) checkErr(err) return string(p) - } + } return "" } @@ -112,7 +112,9 @@ func searchHandler(w http.ResponseWriter, r *http.Request) { maxPerPage = 50 // default Value maxPerPage } pagenum, _ := strconv.Atoi(html.EscapeString(page)) - if (pagenum == 0) { pagenum = 1 } + if pagenum == 0 { + pagenum = 1 + } searchQuery := r.URL.Query().Get("q") cat := r.URL.Query().Get("c") stat := r.URL.Query().Get("s") @@ -151,7 +153,6 @@ func searchHandler(w http.ResponseWriter, r *http.Request) { navigationTorrents := Navigation{nbTorrents, maxPerPage, pagenum, "search_page"} htv := HomeTemplateVariables{b, getAllCategories(false), searchQuery, stat, cat, sort, order, navigationTorrents, r.URL, mux.CurrentRoute(r)} - err := templates.ExecuteTemplate(w, "index.html", htv) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) @@ -246,7 +247,9 @@ func rootHandler(w http.ResponseWriter, r *http.Request) { nbTorrents := 0 pagenum, _ := strconv.Atoi(html.EscapeString(page)) - if (pagenum == 0) { pagenum = 1 } + if pagenum == 0 { + pagenum = 1 + } b := []TorrentsJson{} torrents, nbTorrents := getAllTorrents(maxPerPage, maxPerPage*(pagenum-1)) @@ -289,7 +292,6 @@ func main() { router.HandleFunc("/feed.xml", rssHandler) router.HandleFunc("/view/{id}", viewHandler).Name("view_torrent") - http.Handle("/", router) // Set up server, diff --git a/models.go b/models.go index 57acdd79..b04400d6 100644 --- a/models.go +++ b/models.go @@ -18,17 +18,17 @@ type Feed struct { } type Categories struct { - Id int `gorm:"column:category_id"` - Name string `gorm:"column:category_name"` - Torrents []Torrents `gorm:"ForeignKey:category_id;AssociationForeignKey:category_id"` - Sub_Categories []Sub_Categories `gorm:"ForeignKey:parent_id;AssociationForeignKey:category_id"` + Id int `gorm:"column:category_id"` + Name string `gorm:"column:category_name"` + Torrents []Torrents `gorm:"ForeignKey:category_id;AssociationForeignKey:category_id"` + Sub_Categories []Sub_Categories `gorm:"ForeignKey:parent_id;AssociationForeignKey:category_id"` } type Sub_Categories struct { - Id int `gorm:"column:sub_category_id"` - Name string `gorm:"column:Sub_category_name"` - Parent_id int `gorm:"column:parent_id"` - Torrents []Torrents `gorm:"ForeignKey:sub_category_id;AssociationForeignKey:sub_category_id"` + Id int `gorm:"column:sub_category_id"` + Name string `gorm:"column:Sub_category_name"` + Parent_id int `gorm:"column:parent_id"` + Torrents []Torrents `gorm:"ForeignKey:sub_category_id;AssociationForeignKey:sub_category_id"` } type Statuses struct { @@ -42,7 +42,7 @@ type Torrents struct { Name string `gorm:"column:torrent_name"` Category_id int `gorm:"column:category_id"` Sub_category_id int `gorm:"column:sub_category_id"` - Status int `gorm:"column:status_id"` + Status int `gorm:"column:status_id"` Hash string `gorm:"column:torrent_hash"` Date int `gorm:"column:date"` Downloads int `gorm:"column:downloads"` @@ -60,29 +60,29 @@ JSON Models Oject */ type CategoryJson struct { - Id string `json: "id"` - Name string `json: "category"` + Id string `json: "id"` + Name string `json: "category"` Torrents []TorrentsJson `json: "torrents"` QueryRecordCount int `json: "queryRecordCount"` TotalRecordCount int `json: "totalRecordCount"` } type SubCategoryJson struct { - Id string `json: "id"` - Name string `json: "category"` + Id string `json: "id"` + Name string `json: "category"` } type TorrentsJson struct { - Id string `json: "id"` // Is there a need to put the ID? - Name string `json: "name"` - Status int `json: "status"` - Hash string `json: "hash"` - Date int `json: "date"` - Filesize string `json: "filesize"` - Description string `json: "description"` + Id string `json: "id"` // Is there a need to put the ID? + Name string `json: "name"` + Status int `json: "status"` + Hash string `json: "hash"` + Date int `json: "date"` + Filesize string `json: "filesize"` + Description string `json: "description"` Sub_Category SubCategoryJson `json: "sub_category"` - Category CategoryJson `json: "category"` - Magnet template.URL `json: "magnet"` + Category CategoryJson `json: "category"` + Magnet template.URL `json: "magnet"` } type WhereParams struct { @@ -90,7 +90,6 @@ type WhereParams struct { params []interface{} } - /* Function to interact with Models * * Get the torrents with where clause @@ -132,7 +131,7 @@ func getTorrentsOrderBy(parameters *WhereParams, orderBy string, limit int, offs var torrents []Torrents var dbQuery *gorm.DB var count int - if (parameters != nil) { // if there is where parameters + if parameters != nil { // if there is where parameters db.Model(&torrents).Where(parameters.conditions, parameters.params...).Count(&count) dbQuery = db.Model(&torrents).Where(parameters.conditions, parameters.params...) } else { @@ -146,7 +145,7 @@ func getTorrentsOrderBy(parameters *WhereParams, orderBy string, limit int, offs if limit != 0 || offset != 0 { // if limits provided dbQuery = dbQuery.Limit(limit).Offset(offset) } - dbQuery.Order(orderBy).Preload("Categories").Preload("Sub_Categories").Find(&torrents) + dbQuery.Order(orderBy).Preload("Categories").Preload("Sub_Categories").Find(&torrents) return torrents, count } @@ -208,30 +207,30 @@ func createWhereParams(conditions string, params ...string) WhereParams { func (t *Torrents) toJson() TorrentsJson { magnet := "magnet:?xt=urn:btih:" + strings.TrimSpace(t.Hash) + "&dn=" + t.Name + trackers res := TorrentsJson{ - Id: strconv.Itoa(t.Id), - Name: html.UnescapeString(t.Name), - Status: t.Status, - Hash: t.Hash, - Date: t.Date, - Filesize: t.Filesize, - Description: unZlib(t.Description), + Id: strconv.Itoa(t.Id), + Name: html.UnescapeString(t.Name), + Status: t.Status, + Hash: t.Hash, + Date: t.Date, + Filesize: t.Filesize, + Description: unZlib(t.Description), Sub_Category: t.Sub_Categories.toJson(), - Category: t.Categories.toJson(), - Magnet: safe(magnet)} + Category: t.Categories.toJson(), + Magnet: safe(magnet)} return res } func (c *Sub_Categories) toJson() SubCategoryJson { return SubCategoryJson{ - Id: strconv.Itoa(c.Id), - Name: html.UnescapeString(c.Name)} + Id: strconv.Itoa(c.Id), + Name: html.UnescapeString(c.Name)} } func (c *Categories) toJson() CategoryJson { return CategoryJson{ - Id: strconv.Itoa(c.Id), - Name: html.UnescapeString(c.Name)} + Id: strconv.Itoa(c.Id), + Name: html.UnescapeString(c.Name)} } /* Complete the functions when necessary... */ diff --git a/templateFunctions.go b/templateFunctions.go index 284de4d7..b3d2a563 100644 --- a/templateFunctions.go +++ b/templateFunctions.go @@ -1,50 +1,54 @@ package main -import( - "math" - "html/template" - "net/url" - "strconv" - "log" +import ( + "html/template" + "log" + "math" + "net/url" + "strconv" ) var funcMap = template.FuncMap{ - "min": math.Min, - "genRoute": func (name string, params ...string) string { - url, err := router.Get(name).URL(params...) - if (err == nil) { - return url.String() - } - return "error" - }, - "genNav" : func (nav Navigation, currentUrl *url.URL, pagesSelectable int) template.HTML { - maxPages := math.Ceil(float64(nav.TotalItem)/float64(nav.MaxItemPerPage)) - route := router.Get(nav.Route) + "min": math.Min, + "genRoute": func(name string, params ...string) string { + url, err := router.Get(name).URL(params...) + if err == nil { + return url.String() + } + return "error" + }, + "genNav": func(nav Navigation, currentUrl *url.URL, pagesSelectable int) template.HTML { + maxPages := math.Ceil(float64(nav.TotalItem) / float64(nav.MaxItemPerPage)) + route := router.Get(nav.Route) - var ret = "" - if nav.CurrentPage-1 > 0 { - url, _ := route.URL("page", "1") - ret = ret + "