45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package qbittorrent_log
|
|
|
|
import (
|
|
"github.com/google/go-querystring/query"
|
|
"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) GetLog(options *qbittorrent_model.GetLogOptions) ([]*qbittorrent_model.LogEntry, error) {
|
|
endpoint := c.BaseUrl + "/main"
|
|
if options != nil {
|
|
params, err := query.Values(options)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
endpoint += "?" + params.Encode()
|
|
}
|
|
var res []*qbittorrent_model.LogEntry
|
|
if err := qbittorrent_util.GetInto(c.Client, &res, endpoint, nil); err != nil {
|
|
return nil, err
|
|
}
|
|
return res, nil
|
|
}
|
|
|
|
func (c Client) GetPeerLog(lastKnownID int) ([]*qbittorrent_model.PeerLogEntry, error) {
|
|
params := url.Values{}
|
|
params.Add("last_known_id", strconv.Itoa(lastKnownID))
|
|
endpoint := c.BaseUrl + "/peers?" + params.Encode()
|
|
var res []*qbittorrent_model.PeerLogEntry
|
|
if err := qbittorrent_util.GetInto(c.Client, &res, endpoint, nil); err != nil {
|
|
return nil, err
|
|
}
|
|
return res, nil
|
|
}
|