bt2qbt/internal/transfer/fastresumeHandle.go
Alexey Kostin cca7869d2a
Full refactor. Introduce tests (#35)
* start refactor

* default golang loyaout
separate qbittorrent and torrent structures

* stage

* move flags handle to module and cover it with tests
change handle sep with path.join

* ugly remove unneeded fields from resume.dat

* use path joing
prepare for resume structs

* Introduce subtests

* fix behavior

* Move to structures instead of using interfaces

* Make main cmd clean, decomposite functions

* Make main cmd clean, decomposite functions

* Detect torrents functions and tests

* Fixes

* Fixes

* New tests for content layout and file paths
reformat code for project
change libtorrent version
append torrent v2 schema in torrent structs

* filepath helper module
fix some tests

* fileHelpers new functions and tests

* new function with cut last part with tests

* function description and small fix

* rename some variables and structures

* beautiful tests handle for savePaths
starting refactor savepaths

* Refactor HandleSavePath func. Cover with tests
Move replace field creation to handle and assign pointer, instead of generate each time with handle resumeItem.
Moved opts to transferStructure.

* fix some tests

* HandleSavePaths covered with tests and little bit fixed

* Another one additional test for fully function cover

* check for tests

* Remove PiecePriority

* Refactored HandlePieces functions
Removed unused functions

* Rename variables. Introduced new tests

* Append tests

* Rename test funcs

* New tests

* New tests

* move modules

* introduce Makefile

* Adapt fileHelpers for both windows and linux. Linux tests passed
Use slashed paths for search torrents

* remove test template

* test fileset

* Makefile. Version introduce

* Fix darwin i386 version build

* Bug fix with mappedfiles
Need more tests and append new functionality.

* tests for HandleSavePaths with absoulte paths in mapped files

* additional tests with fileshare

* all tests OK

* Fix torrent state. Added tests

* fixes after code inspection

* Magnet link support. Tests

* README.md update

Co-authored-by: Alexey Kostin <a.kostin@corp.mail.ru>
2022-03-30 02:30:29 +03:00

46 lines
1.6 KiB
Go

package transfer
import (
"time"
)
func (transfer *TransferStructure) HandleStructures() {
if ok := transfer.ResumeItem.Targets; ok != nil {
for _, entry := range transfer.ResumeItem.Targets {
transfer.Targets[entry[0].(int64)] = entry[1].(string)
}
}
// if torrent name was renamed, add modified name
transfer.HandleCaption()
transfer.Fastresume.ActiveTime = transfer.ResumeItem.Runtime
transfer.Fastresume.AddedTime = transfer.ResumeItem.AddedOn
transfer.Fastresume.CompletedTime = transfer.ResumeItem.CompletedOn
transfer.Fastresume.Info = transfer.TorrentFile.Info
transfer.Fastresume.InfoHash = transfer.ResumeItem.Info
transfer.Fastresume.SeedingTime = transfer.ResumeItem.Runtime
transfer.HandleState()
transfer.Fastresume.FinishedTime = int64(time.Since(time.Unix(transfer.ResumeItem.CompletedOn, 0)).Minutes())
transfer.HandleTotalDownloaded()
transfer.Fastresume.TotalUploaded = transfer.ResumeItem.Uploaded
transfer.Fastresume.UploadRateLimit = transfer.ResumeItem.UpSpeed
transfer.HandleTags()
transfer.HandleLabels()
transfer.GetTrackers(transfer.ResumeItem.Trackers)
transfer.HandlePriority() // important handle priorities before handling pieces
/*
pieces maps to a string whose length is a multiple of 20. It is to be subdivided into strings of length 20,
each of which is the SHA1 hash of the piece at the corresponding index.
http://www.bittorrent.org/beps/bep_0003.html
*/
transfer.NumPieces = int64(len(transfer.TorrentFile.Info.Pieces)) / 20
transfer.HandleCompleted() // important handle priorities before handling pieces
transfer.HandleSavePaths()
transfer.HandlePieces()
}