package main

import (
	"encoding/json"
	"io/ioutil"
	"log"
	"net/http"
)

// CrawlTPB48hTop crawls https://apibay.org/precompiled/data_top100_48h.json
func CrawlTPB48hTop() []Torrent {
	return parseApibayJSON("https://apibay.org/precompiled/data_top100_48h.json")
}

func parseApibayJSON(url string) []Torrent {
	httpresp, err := http.Get(url)
	if err != nil {
		log.Println(err)
		return nil
	}
	defer httpresp.Body.Close()
	body, err := ioutil.ReadAll(httpresp.Body)

	var resp []ApibayTorrent
	err = json.Unmarshal(body, &resp)

	var torrents []Torrent
	for _, apibayTorr := range resp {
		torrents = append(torrents, Torrent{apibayTorr.Info_hash, apibayTorr.Name, apibayTorr.Size})
	}
	return torrents
}

// ApibayTorrent Structure returned from apibay. For unmarshaling from JSON. Not all fields that are returned from Apibay are in this struct; YAGNI
type ApibayTorrent struct {
	ID        int
	Info_hash string
	Name      string
	Size      int
	Added     int
}
