Files
seanime-docker/seanime-2.9.10/internal/torrent_clients/qbittorrent/transfer/client.go
2025-09-20 14:08:38 +01:00

76 lines
1.9 KiB
Go

package qbittorrent_transfer
import (
"github.com/rs/zerolog"
"net/http"
"net/url"
"seanime/internal/torrent_clients/qbittorrent/model"
"seanime/internal/torrent_clients/qbittorrent/util"
"strconv"
)
type Client struct {
BaseUrl string
Client *http.Client
Logger *zerolog.Logger
}
func (c Client) GetTransferInfo() (*qbittorrent_model.TransferInfo, error) {
var res qbittorrent_model.TransferInfo
if err := qbittorrent_util.GetInto(c.Client, &res, c.BaseUrl+"/info", nil); err != nil {
return nil, err
}
return &res, nil
}
func (c Client) AlternativeSpeedLimitsEnabled() (bool, error) {
var res int
if err := qbittorrent_util.GetInto(c.Client, &res, c.BaseUrl+"/speedLimitsMode", nil); err != nil {
return false, err
}
return res == 1, nil
}
func (c Client) ToggleAlternativeSpeedLimits() error {
if err := qbittorrent_util.Post(c.Client, c.BaseUrl+"/toggleSpeedLimitsMode", nil); err != nil {
return err
}
return nil
}
func (c Client) GetGlobalDownloadLimit() (int, error) {
var res int
if err := qbittorrent_util.GetInto(c.Client, &res, c.BaseUrl+"/downloadLimit", nil); err != nil {
return 0, err
}
return res, nil
}
func (c Client) SetGlobalDownloadLimit(limit int) error {
params := url.Values{}
params.Add("limit", strconv.Itoa(limit))
endpoint := c.BaseUrl + "/setDownloadLimit?" + params.Encode()
if err := qbittorrent_util.Post(c.Client, endpoint, nil); err != nil {
return err
}
return nil
}
func (c Client) GetGlobalUploadLimit() (int, error) {
var res int
if err := qbittorrent_util.GetInto(c.Client, &res, c.BaseUrl+"/uploadLimit", nil); err != nil {
return 0, err
}
return res, nil
}
func (c Client) SetGlobalUploadLimit(limit int) error {
params := url.Values{}
params.Add("limit", strconv.Itoa(limit))
endpoint := c.BaseUrl + "/setUploadLimit?" + params.Encode()
if err := qbittorrent_util.Post(c.Client, endpoint, nil); err != nil {
return err
}
return nil
}