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 ShouldExposeFullPath() 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"` ExposeFullPath bool `yaml:"expose_full_path" json:"expose_full_path"` 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) ShouldExposeFullPath() bool { return z.ExposeFullPath } 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 }