diff --git a/model/torrent.go b/model/torrent.go index e98e56e5..7d535a82 100644 --- a/model/torrent.go +++ b/model/torrent.go @@ -387,3 +387,16 @@ func TorrentsToJSON(t []Torrent) []TorrentJSON { } return json } + +// APITorrentsToJSON : Map Torrents to TorrentsToJSON for API request without reallocations +func APITorrentsToJSON(t []Torrent) []TorrentJSON { + json := make([]TorrentJSON, len(t)) + for i := range t { + if t[i].Hidden { + t[i].UploaderID = 0 + t[i].Uploader = nil + } + json[i] = t[i].ToJSON() + } + return json +} diff --git a/router/api_handler.go b/router/api_handler.go index 4d0999e2..54110ba3 100644 --- a/router/api_handler.go +++ b/router/api_handler.go @@ -85,7 +85,7 @@ func APIHandler(w http.ResponseWriter, r *http.Request) { } b := model.APIResultJSON{ - Torrents: model.TorrentsToJSON(torrents), + Torrents: model.APITorrentsToJSON(torrents), } b.QueryRecordCount = req.MaxPerPage b.TotalRecordCount = nbTorrents @@ -306,7 +306,7 @@ func APISearchHandler(w http.ResponseWriter, r *http.Request) { return } - b := model.TorrentsToJSON(torrents) + b := model.APITorrentsToJSON(torrents) w.Header().Set("Content-Type", "application/json") err = json.NewEncoder(w).Encode(b)