196 lines
5.0 KiB
Go
196 lines
5.0 KiB
Go
package config
|
|
|
|
type ConfigInterface interface {
|
|
GetConfig() ZurgConfig
|
|
GetVersion() string
|
|
GetToken() string
|
|
GetNumOfWorkers() int
|
|
GetRefreshEverySecs() int
|
|
GetRepairEveryMins() int
|
|
EnableRepair() bool
|
|
GetHost() string
|
|
GetPort() string
|
|
GetUsername() string
|
|
GetPassword() string
|
|
GetProxy() string
|
|
GetDirectories() []string
|
|
MeetsConditions(directory, torrentName string, torrentSize int64, torrentIDs, fileNames []string, fileSizes []int64) bool
|
|
GetOnLibraryUpdate() string
|
|
GetNetworkBufferSize() int
|
|
EnableRetainFolderNameExtension() bool
|
|
EnableRetainRDTorrentName() bool
|
|
ShouldIgnoreRenames() bool
|
|
ShouldServeFromRclone() bool
|
|
ShouldVerifyDownloadLink() bool
|
|
ShouldForceIPv6() bool
|
|
GetApiTimeoutSecs() int
|
|
GetDownloadTimeoutSecs() int
|
|
GetRetriesUntilFailed() int
|
|
EnableDownloadMount() bool
|
|
GetRateLimitSleepSecs() int
|
|
ShouldDeleteRarFiles() bool
|
|
}
|
|
|
|
type ZurgConfig struct {
|
|
Version string `yaml:"zurg" json:"-"`
|
|
Token string `yaml:"token" json:"-"`
|
|
|
|
Host string `yaml:"host" json:"host"`
|
|
Port string `yaml:"port" json:"port"`
|
|
Username string `yaml:"username" json:"username"`
|
|
Password string `yaml:"password" json:"password"`
|
|
Proxy string `yaml:"proxy" json:"proxy"`
|
|
NumOfWorkers int `yaml:"concurrent_workers" json:"concurrent_workers"`
|
|
RefreshEverySecs int `yaml:"check_for_changes_every_secs" json:"check_for_changes_every_secs"`
|
|
RepairEveryMins int `yaml:"repair_every_mins" json:"repair_every_mins"`
|
|
|
|
IgnoreRenames bool `yaml:"ignore_renames" json:"ignore_renames"`
|
|
RetainRDTorrentName bool `yaml:"retain_rd_torrent_name" json:"retain_rd_torrent_name"`
|
|
RetainFolderNameExtension bool `yaml:"retain_folder_name_extension" json:"retain_folder_name_extension"`
|
|
|
|
CanRepair bool `yaml:"enable_repair" json:"enable_repair"`
|
|
DeleteRarFiles bool `yaml:"auto_delete_rar_torrents" json:"auto_delete_rar_torrents"`
|
|
|
|
ApiTimeoutSecs int `yaml:"api_timeout_secs" json:"api_timeout_secs"`
|
|
DownloadTimeoutSecs int `yaml:"download_timeout_secs" json:"download_timeout_secs"`
|
|
DownloadMount bool `yaml:"enable_download_mount" json:"enable_download_mount"`
|
|
RateLimitSleepSecs int `yaml:"rate_limit_sleep_secs" json:"rate_limit_sleep_secs"`
|
|
RetriesUntilFailed int `yaml:"retries_until_failed" json:"retries_until_failed"`
|
|
NetworkBufferSize int `yaml:"network_buffer_size" json:"network_buffer_size"`
|
|
ServeFromRclone bool `yaml:"serve_from_rclone" json:"serve_from_rclone"`
|
|
VerifyDownloadLink bool `yaml:"verify_download_link" json:"verify_download_link"`
|
|
ForceIPv6 bool `yaml:"force_ipv6" json:"force_ipv6"`
|
|
|
|
OnLibraryUpdate string `yaml:"on_library_update" json:"on_library_update"`
|
|
}
|
|
|
|
func (z *ZurgConfig) GetConfig() ZurgConfig {
|
|
return *z
|
|
}
|
|
|
|
func (z *ZurgConfig) GetToken() string {
|
|
return z.Token
|
|
}
|
|
|
|
func (z *ZurgConfig) GetHost() string {
|
|
if z.Host == "" {
|
|
return "[::]"
|
|
}
|
|
return z.Host
|
|
}
|
|
|
|
func (z *ZurgConfig) GetPort() string {
|
|
if z.Port == "" {
|
|
return "9999"
|
|
}
|
|
return z.Port
|
|
}
|
|
|
|
func (z *ZurgConfig) GetUsername() string {
|
|
return z.Username
|
|
}
|
|
|
|
func (z *ZurgConfig) GetPassword() string {
|
|
return z.Password
|
|
}
|
|
|
|
func (z *ZurgConfig) GetProxy() string {
|
|
return z.Proxy
|
|
}
|
|
|
|
func (z *ZurgConfig) GetNumOfWorkers() int {
|
|
if z.NumOfWorkers == 0 {
|
|
return 32
|
|
}
|
|
return z.NumOfWorkers
|
|
}
|
|
|
|
func (z *ZurgConfig) GetRefreshEverySecs() int {
|
|
if z.RefreshEverySecs == 0 {
|
|
return 60
|
|
}
|
|
return z.RefreshEverySecs
|
|
}
|
|
|
|
func (z *ZurgConfig) GetRepairEveryMins() int {
|
|
if z.RepairEveryMins == 0 {
|
|
return 60
|
|
}
|
|
return z.RepairEveryMins
|
|
}
|
|
|
|
func (z *ZurgConfig) EnableRepair() bool {
|
|
return z.CanRepair
|
|
}
|
|
|
|
func (z *ZurgConfig) GetOnLibraryUpdate() string {
|
|
return z.OnLibraryUpdate
|
|
}
|
|
|
|
func (z *ZurgConfig) GetNetworkBufferSize() int {
|
|
if z.NetworkBufferSize == 0 {
|
|
return 1024 * 1024 * 4 // 4MB
|
|
}
|
|
return z.NetworkBufferSize
|
|
}
|
|
|
|
func (z *ZurgConfig) EnableRetainFolderNameExtension() bool {
|
|
return z.RetainFolderNameExtension
|
|
}
|
|
|
|
func (z *ZurgConfig) EnableRetainRDTorrentName() bool {
|
|
return z.RetainRDTorrentName
|
|
}
|
|
|
|
func (z *ZurgConfig) ShouldIgnoreRenames() bool {
|
|
return !z.IgnoreRenames
|
|
}
|
|
|
|
func (z *ZurgConfig) ShouldServeFromRclone() bool {
|
|
return z.ServeFromRclone
|
|
}
|
|
|
|
func (z *ZurgConfig) ShouldVerifyDownloadLink() bool {
|
|
return z.VerifyDownloadLink
|
|
}
|
|
|
|
func (z *ZurgConfig) ShouldForceIPv6() bool {
|
|
return z.ForceIPv6
|
|
}
|
|
|
|
func (z *ZurgConfig) GetRetriesUntilFailed() int {
|
|
if z.RetriesUntilFailed == 0 {
|
|
return 2
|
|
}
|
|
return z.RetriesUntilFailed
|
|
}
|
|
|
|
func (z *ZurgConfig) EnableDownloadMount() bool {
|
|
return z.DownloadMount
|
|
}
|
|
|
|
func (z *ZurgConfig) GetApiTimeoutSecs() int {
|
|
if z.ApiTimeoutSecs == 0 {
|
|
return 15
|
|
}
|
|
return z.ApiTimeoutSecs
|
|
}
|
|
|
|
func (z *ZurgConfig) GetDownloadTimeoutSecs() int {
|
|
if z.DownloadTimeoutSecs == 0 {
|
|
return 10
|
|
}
|
|
return z.DownloadTimeoutSecs
|
|
}
|
|
|
|
func (z *ZurgConfig) GetRateLimitSleepSecs() int {
|
|
if z.RateLimitSleepSecs == 0 {
|
|
return 6
|
|
}
|
|
return z.RateLimitSleepSecs
|
|
}
|
|
|
|
func (z *ZurgConfig) ShouldDeleteRarFiles() bool {
|
|
return z.DeleteRarFiles
|
|
}
|