package constants

import (
	"m3u8-downloader/pkg/config"
	"sync"
)

var (
	globalConfig *config.Config
	configOnce   sync.Once
	configError  error
)

func GetConfig() (*config.Config, error) {
	configOnce.Do(func() {
		globalConfig, configError = config.Load()
	})
	return globalConfig, configError
}

func MustGetConfig() *config.Config {
	cfg, err := GetConfig()
	if err != nil {
		panic("Failed to load configuration: " + err.Error())
	}
	return cfg
}

const (
	WorkerCount  = 4
	RefreshDelay = 3

	HTTPUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"
	REFERRER      = "https://www.flomarching.com"

	DefaultNASOutputPath = "\\\\HomeLabNAS\\dci\\streams"
	DefaultNASUsername   = "NASAdmin"

	DefaultTransferWorkerCount = 2
	DefaultTransferRetryLimit  = 3
	DefaultTransferTimeout     = 30
	DefaultFileSettlingDelay   = 5
	DefaultTransferQueueSize   = 100000
	DefaultBatchSize           = 1000

	DefaultCleanupBatchSize = 1000
	DefaultRetainLocalHours = 0

	DefaultProcessWorkerCount = 2
	DefaultFFmpegPath         = "ffmpeg"
)
