59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package common
|
|
|
|
import (
|
|
"encoding/json"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
type DebridConfig struct {
|
|
Name string `json:"name"`
|
|
Host string `json:"host"`
|
|
APIKey string `json:"api_key"`
|
|
Folder string `json:"folder"`
|
|
DownloadUncached bool `json:"download_uncached"`
|
|
RateLimit string `json:"rate_limit"` // 200/minute or 10/second
|
|
}
|
|
|
|
type Config struct {
|
|
Debrid DebridConfig `json:"debrid"`
|
|
Arrs []struct {
|
|
WatchFolder string `json:"watch_folder"`
|
|
CompletedFolder string `json:"completed_folder"`
|
|
Token string `json:"token"`
|
|
URL string `json:"url"`
|
|
} `json:"arrs"`
|
|
Proxy struct {
|
|
Port string `json:"port"`
|
|
Enabled bool `json:"enabled"`
|
|
Debug bool `json:"debug"`
|
|
Username string `json:"username"`
|
|
Password string `json:"password"`
|
|
CachedOnly bool `json:"cached_only"`
|
|
}
|
|
MaxCacheSize int `json:"max_cache_size"`
|
|
}
|
|
|
|
func LoadConfig(path string) (*Config, error) {
|
|
// Load the config file
|
|
file, err := os.Open(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer func(file *os.File) {
|
|
err := file.Close()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}(file)
|
|
|
|
decoder := json.NewDecoder(file)
|
|
config := &Config{}
|
|
err = decoder.Decode(config)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return config, nil
|
|
}
|