2017-05-10 06:20:45 +02:00
package router
import (
"net/http"
2017-05-10 17:37:49 +02:00
"strconv"
2017-05-10 06:20:45 +02:00
"github.com/ewhal/nyaa/model"
"github.com/ewhal/nyaa/service/moderation"
2017-05-10 10:42:25 +02:00
"github.com/ewhal/nyaa/service/user/permission"
2017-05-10 17:37:49 +02:00
"github.com/gorilla/mux"
2017-05-10 06:20:45 +02:00
)
2017-05-10 09:57:55 +02:00
/ *
2017-05-10 06:20:45 +02:00
func SanitizeTorrentReport ( torrentReport * model . TorrentReport ) {
// TODO unescape html ?
return
}
func IsValidTorrentReport ( ) bool {
// TODO Validate, see if user_id already reported, see if torrent exists
return true
}
// TODO Only allow moderators for each action in this file
func CreateTorrentReportHandler ( w http . ResponseWriter , r * http . Request ) {
var torrentReport model . TorrentReport
var err error
modelHelper . BindValueForm ( & torrentReport , r )
if IsValidTorrentReport ( ) {
http . Error ( w , err . Error ( ) , http . StatusInternalServerError )
return
}
SanitizeTorrentReport ( & torrentReport )
_ , err = moderationService . CreateTorrentReport ( torrentReport )
if err != nil {
http . Error ( w , err . Error ( ) , http . StatusInternalServerError )
return
}
}
func DeleteTorrentReportHandler ( w http . ResponseWriter , r * http . Request ) {
// TODO Figure out how to get torrent report id from form
var id int
var err error
_ , err = moderationService . DeleteTorrentReport ( id )
if err != nil {
http . Error ( w , err . Error ( ) , http . StatusInternalServerError )
return
}
}
2017-05-10 09:57:55 +02:00
* /
2017-05-10 10:42:25 +02:00
2017-05-10 09:57:55 +02:00
/ *
2017-05-10 06:20:45 +02:00
func DeleteTorrentHandler ( w http . ResponseWriter , r * http . Request ) {
// TODO Figure out how to get torrent report id from form
var err error
var id string
_ , err = torrentService . DeleteTorrent ( id )
if err != nil {
http . Error ( w , err . Error ( ) , http . StatusInternalServerError )
}
2017-05-10 09:57:55 +02:00
} * /
2017-05-10 17:37:49 +02:00
func GetTorrentReportHandler ( w http . ResponseWriter , r * http . Request ) {
currentUser := GetUser ( r )
if userPermission . HasAdmin ( currentUser ) {
vars := mux . Vars ( r )
page , _ := strconv . Atoi ( vars [ "page" ] )
offset := 100
userid := r . URL . Query ( ) . Get ( "userid" )
var conditions string
var values [ ] interface { }
if ( userid != "" ) {
conditions = "user_id = ?"
values = append ( values , userid )
}
torrentReports , nbReports , err := moderationService . GetTorrentReports ( offset , page * offset , conditions , values ... )
if err != nil {
http . Error ( w , err . Error ( ) , http . StatusInternalServerError )
return
}
err = torrentReportTemplate . ExecuteTemplate ( w , "admin_index.html" , ViewTorrentReportsVariables { model . TorrentReportsToJSON ( torrentReports ) , NewSearchForm ( ) , Navigation { nbReports , offset , page , "mod_trlist_page" } , currentUser , r . URL } )
if err != nil {
http . Error ( w , err . Error ( ) , http . StatusInternalServerError )
return
}
} else {
http . Error ( w , "admins only" , http . StatusForbidden )
}
}