92 lignes
2 Kio
Go
92 lignes
2 Kio
Go
package feedController
|
|
|
|
import (
|
|
"errors"
|
|
"html"
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/NyaaPantsu/nyaa/config"
|
|
"github.com/NyaaPantsu/nyaa/controllers/router"
|
|
"github.com/NyaaPantsu/nyaa/models"
|
|
"github.com/NyaaPantsu/nyaa/models/users"
|
|
"github.com/NyaaPantsu/nyaa/utils/feeds"
|
|
"github.com/NyaaPantsu/nyaa/utils/search"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func getTorrentList(c *gin.Context) (torrents []models.Torrent, createdAsTime time.Time, title string, err error) {
|
|
page := c.Param("page")
|
|
userID := c.Param("id")
|
|
cat := c.Query("cat")
|
|
offset := 0
|
|
currentUser := router.GetUser(c)
|
|
if c.Query("offset") != "" {
|
|
offset, err = strconv.Atoi(html.EscapeString(c.Query("offset")))
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
createdAsTime = time.Now()
|
|
|
|
if len(torrents) > 0 {
|
|
createdAsTime = torrents[0].Date
|
|
}
|
|
|
|
title = "Nyaa Pantsu"
|
|
if config.IsSukebei() {
|
|
title = "Sukebei Pantsu"
|
|
}
|
|
|
|
pagenum := 1
|
|
if page == "" && offset > 0 { // first page for offset is 0
|
|
pagenum = offset + 1
|
|
} else if page != "" {
|
|
pagenum, err = strconv.Atoi(html.EscapeString(page))
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
if pagenum <= 0 {
|
|
err = errors.New("Page number is invalid")
|
|
return
|
|
}
|
|
|
|
if userID != "" {
|
|
var userIDnum int
|
|
userIDnum, err = strconv.Atoi(html.EscapeString(userID))
|
|
// Should we have a feed for anonymous uploads?
|
|
if err != nil || userIDnum == 0 {
|
|
return
|
|
}
|
|
|
|
_, _, err = users.FindForAdmin(uint(userIDnum))
|
|
if err != nil {
|
|
return
|
|
}
|
|
// Set the user ID on the request, so that SearchByQuery finds it.
|
|
query := c.Request.URL.Query()
|
|
query.Set("userID", userID)
|
|
c.Request.URL.RawQuery = query.Encode()
|
|
}
|
|
|
|
if cat != "" {
|
|
query := c.Request.URL.Query()
|
|
catConv := nyaafeeds.ConvertToCat(cat)
|
|
if catConv == "" {
|
|
return
|
|
}
|
|
query.Set("c", catConv)
|
|
c.Request.URL.RawQuery = query.Encode()
|
|
}
|
|
|
|
user, err := strconv.ParseUint(c.Param("id"), 10, 32)
|
|
if err != nil {
|
|
user = 0
|
|
}
|
|
|
|
_, torrents, _, err = search.AuthorizedQuery(c, pagenum, currentUser.CurrentOrAdmin(uint(user)))
|
|
|
|
return
|
|
}
|