1
0
mirror of https://github.com/mxpv/podsync.git synced 2024-05-11 05:55:04 +00:00

Move default values to model package

This commit is contained in:
Maksym Pavlenko
2019-10-29 14:44:59 -07:00
parent 616fac57fd
commit fc9942baf6
3 changed files with 29 additions and 18 deletions

View File

@ -9,13 +9,6 @@ import (
"github.com/mxpv/podsync/pkg/model"
)
const (
DefaultFormat = model.FormatVideo
DefaultQuality = model.QualityHigh
DefaultPageSize = 50
DefaultUpdatePeriod = 24 * time.Hour
)
// Feed is a configuration for a feed
type Feed struct {
// URL is a full URL of the field
@ -73,30 +66,33 @@ func LoadConfig(path string) (*Config, error) {
return nil, errors.Wrap(err, "failed to load config file")
}
// Apply defaults
if config.Server.Hostname == "" {
config.Server.Hostname = "http://localhost"
config.applyDefaults()
return &config, nil
}
func (c *Config) applyDefaults() {
if c.Server.Hostname == "" {
c.Server.Hostname = model.DefaultHostname
}
for _, feed := range config.Feeds {
for _, feed := range c.Feeds {
if feed.UpdatePeriod.Duration == 0 {
feed.UpdatePeriod.Duration = DefaultUpdatePeriod
feed.UpdatePeriod.Duration = model.DefaultUpdatePeriod
}
if feed.Quality == "" {
feed.Quality = DefaultQuality
feed.Quality = model.DefaultQuality
}
if feed.Format == "" {
feed.Format = DefaultFormat
feed.Format = model.DefaultFormat
}
if feed.PageSize == 0 {
feed.PageSize = DefaultPageSize
feed.PageSize = model.DefaultPageSize
}
}
return &config, nil
}
type Duration struct {

View File

@ -8,6 +8,8 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/mxpv/podsync/pkg/model"
)
func TestLoadConfig(t *testing.T) {
@ -79,7 +81,7 @@ func TestApplyDefaults(t *testing.T) {
feed, ok := config.Feeds["A"]
require.True(t, ok)
assert.EqualValues(t, feed.UpdatePeriod, Duration{DefaultUpdatePeriod})
assert.EqualValues(t, feed.UpdatePeriod, Duration{model.DefaultUpdatePeriod})
assert.EqualValues(t, feed.PageSize, 50)
assert.EqualValues(t, feed.Quality, "high")
assert.EqualValues(t, feed.Format, "video")

13
pkg/model/defaults.go Normal file
View File

@ -0,0 +1,13 @@
package model
import (
"time"
)
const (
DefaultHostname = "http://localhost"
DefaultFormat = FormatVideo
DefaultQuality = QualityHigh
DefaultPageSize = 50
DefaultUpdatePeriod = 24 * time.Hour
)