2017-05-05 16:39:15 +02:00
package router
import (
"github.com/gorilla/mux"
"net/http"
"html"
"strconv"
"github.com/ewhal/nyaa/model"
"github.com/ewhal/nyaa/service/torrent"
"encoding/json"
)
func ApiHandler ( w http . ResponseWriter , r * http . Request ) {
vars := mux . Vars ( r )
page := vars [ "page" ]
pagenum , _ := strconv . Atoi ( html . EscapeString ( page ) )
2017-05-06 23:46:53 +02:00
b := model . ApiResultJson { Torrents : [ ] model . TorrentsJson { } }
2017-05-05 16:39:15 +02:00
maxPerPage := 50
nbTorrents := 0
torrents , nbTorrents := torrentService . GetAllTorrents ( maxPerPage , maxPerPage * ( pagenum - 1 ) )
for i , _ := range torrents {
res := torrents [ i ] . ToJson ( )
b . Torrents = append ( b . Torrents , res )
}
b . QueryRecordCount = maxPerPage
b . TotalRecordCount = nbTorrents
w . Header ( ) . Set ( "Content-Type" , "application/json" )
err := json . NewEncoder ( w ) . Encode ( b )
if err != nil {
http . Error ( w , err . Error ( ) , http . StatusInternalServerError )
return
}
}
func ApiViewHandler ( w http . ResponseWriter , r * http . Request ) {
vars := mux . Vars ( r )
id := vars [ "id" ]
2017-05-06 23:46:53 +02:00
b := model . ApiResultJson { Torrents : [ ] model . TorrentsJson { } }
2017-05-05 16:39:15 +02:00
torrent , err := torrentService . GetTorrentById ( id )
res := torrent . ToJson ( )
b . Torrents = append ( b . Torrents , res )
b . QueryRecordCount = 1
b . TotalRecordCount = 1
w . Header ( ) . Set ( "Content-Type" , "application/json" )
err = json . NewEncoder ( w ) . Encode ( b )
if err != nil {
http . Error ( w , err . Error ( ) , http . StatusInternalServerError )
return
}
2017-05-06 23:46:53 +02:00
}