package realdebrid import ( "encoding/json" "math" ) type FileJSON struct { FileSize int `json:"filesize"` Link string `json:"link"` } type UnrestrictResponse struct { Filename string `json:"filename"` Filesize int64 `json:"filesize"` Link string `json:"link"` Host string `json:"host"` Download string `json:"download,omitempty"` Streamable int `json:"streamable"` } type Torrent struct { ID string `json:"id"` Name string `json:"filename"` Hash string `json:"hash"` Progress int `json:"-"` Added string `json:"added"` Bytes int64 `json:"bytes"` Links []string `json:"links"` } func (i *Torrent) UnmarshalJSON(data []byte) error { type Alias Torrent aux := &struct { Progress float64 `json:"progress"` *Alias }{ Alias: (*Alias)(i), } if err := json.Unmarshal(data, &aux); err != nil { return err } i.Progress = int(math.Round(aux.Progress)) return nil } type TorrentInfo struct { ID string `json:"id"` Name string `json:"filename"` Hash string `json:"hash"` Progress int `json:"-"` Status string `json:"status"` Added string `json:"added"` Ended string `json:"ended"` Bytes int64 `json:"bytes"` Links []string `json:"links"` OriginalName string `json:"original_filename"` // from info OriginalBytes int64 `json:"original_bytes"` // from info Files []File `json:"files"` // from info Version string `json:"-"` } func (i *TorrentInfo) UnmarshalJSON(data []byte) error { type Alias TorrentInfo aux := &struct { Progress float64 `json:"progress"` *Alias }{ Alias: (*Alias)(i), } if err := json.Unmarshal(data, &aux); err != nil { return err } i.Progress = int(math.Round(aux.Progress)) return nil } type File struct { ID int `json:"id"` Path string `json:"path"` Bytes int64 `json:"bytes"` Selected int `json:"selected"` } type MagnetResponse struct { ID string `json:"id"` URI string `json:"uri"` } type ActiveTorrentCountResponse struct { DownloadingCount int `json:"nb"` MaxNumberOfTorrents int `json:"limit"` }