Files
zurg/internal/config/types.go
2024-01-31 22:39:42 +01:00

205 lines
5.2 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
GetDownloadsEveryMins() int
}
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"`
DownloadsEveryMins int `yaml:"downloads_every_mins" json:"downloads_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 20
}
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) GetDownloadsEveryMins() int {
if z.DownloadsEveryMins == 0 {
return 60
}
return z.DownloadsEveryMins
}
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
}