Simple string sort on listing torrents

This commit is contained in:
Ben Sarmiento
2023-12-12 00:38:17 +01:00
parent ed903c8943
commit 2a1bc59300
6 changed files with 26 additions and 28 deletions

View File

@@ -38,17 +38,13 @@ func HandleListTorrents(directory string, torMgr *torrent.TorrentManager, log *l
var buf bytes.Buffer
buf.WriteString("<?xml version=\"1.0\" encoding=\"utf-8\"?><d:multistatus xmlns:d=\"DAV:\">")
buf.WriteString(dav.BaseDirectory(directory, ""))
var allTorrents []*torrent.Torrent
torrents.IterCb(func(_ string, tor *torrent.Torrent) {
if tor.AllInProgress() {
return
torrentNames := torrents.Keys()
sort.Strings(torrentNames)
for _, torrentName := range torrentNames {
tor, ok := torrents.Get(torrentName)
if !ok || tor.AllInProgress() {
continue
}
allTorrents = append(allTorrents, tor)
})
sort.Slice(allTorrents, func(i, j int) bool {
return allTorrents[i].AccessKey < allTorrents[j].AccessKey
})
for _, tor := range allTorrents {
buf.WriteString(dav.Directory(tor.AccessKey, tor.LatestAdded))
}
buf.WriteString("</d:multistatus>")

View File

@@ -37,17 +37,13 @@ func HandleListTorrents(directory string, torMgr *torrent.TorrentManager, log *l
var buf bytes.Buffer
buf.WriteString("<ol>")
var allTorrents []*torrent.Torrent
torrents.IterCb(func(_ string, tor *torrent.Torrent) {
if tor.AllInProgress() {
return
torrentNames := torrents.Keys()
sort.Strings(torrentNames)
for _, torrentName := range torrentNames {
tor, ok := torrents.Get(torrentName)
if !ok || tor.AllInProgress() {
continue
}
allTorrents = append(allTorrents, tor)
})
sort.Slice(allTorrents, func(i, j int) bool {
return allTorrents[i].AccessKey < allTorrents[j].AccessKey
})
for _, tor := range allTorrents {
buf.WriteString(fmt.Sprintf("<li><a href=\"/http/%s/\">%s</a></li>", filepath.Join(directory, url.PathEscape(tor.AccessKey)), tor.AccessKey))
}
return buf.Bytes(), nil

View File

@@ -58,7 +58,10 @@ func (t *TorrentManager) RefreshTorrents() []string {
// torrents yet to be assigned in a directory
strset.Difference(freshKeys, t.allAccessKeys).Each(func(accessKey string) bool {
// assign to directories
tor, _ := allTorrents.Get(accessKey)
tor, ok := allTorrents.Get(accessKey)
if !ok {
return true
}
var directories []string
t.assignedDirectoryCb(tor, func(directory string) {
if strings.HasPrefix(directory, "int__") {

View File

@@ -25,8 +25,8 @@ func HandleHeadRequest(directory, torrentName, fileName string, w http.ResponseW
return
}
file, _ := torrent.SelectedFiles.Get(fileName)
if file == nil {
file, ok := torrent.SelectedFiles.Get(fileName)
if !ok {
log.Warnf("Cannot find file %s from path %s", fileName, req.URL.Path)
http.Error(w, "Cannot find file", http.StatusNotFound)
return

View File

@@ -68,7 +68,10 @@ func NewHTTPClient(token string, maxRetries int, timeoutSecs int, cfg config.Con
if cfg.ShouldForceIPv6() {
dialer := &net.Dialer{}
dialContext := func(ctx context.Context, network, address string) (net.Conn, error) {
host, port, _ := net.SplitHostPort(address)
host, port, err := net.SplitHostPort(address)
if err != nil {
return nil, err
}
if ipv6Address, ok := client.ipv6.Get(address); ok {
return dialer.DialContext(ctx, network, ipv6Address)
}

View File

@@ -9,12 +9,12 @@ func (rd *RealDebrid) UnrestrictUntilOk(link string, serveFromRclone bool) *Down
if !strings.HasPrefix(link, "http") {
return nil
}
resp, _ := rd.UnrestrictLink(link, serveFromRclone)
if resp != nil {
return resp
}
resp, err := rd.UnrestrictLink(link, serveFromRclone)
if err != nil {
return nil
}
return resp
}
func (rd *RealDebrid) CanFetchFirstByte(url string) bool {
req, err := http.NewRequest("GET", url, nil)