diff --git a/src/cache/cache.go b/src/cache/cache.go index 311d79e..e7a5540 100644 --- a/src/cache/cache.go +++ b/src/cache/cache.go @@ -1,13 +1,9 @@ package cache import ( - "fmt" "time" - cache_default "ytproxy/cache/impl/default" - cache_empty "ytproxy/cache/impl/empty" extractor_config "ytproxy/extractor/config" - logger "ytproxy/logger" ) type T interface { @@ -19,16 +15,3 @@ type T interface { type ConfigT struct { ExpireTime *string `json:"expire-time"` } - -func New(conf ConfigT, log logger.T) (T, error) { - t, err := time.ParseDuration(*conf.ExpireTime) - if err != nil { - return cache_default.New(0), err - } - if t.Seconds() < 1 { - log.LogDebug("", "disabled by config") - return cache_empty.New(), nil - } - log.LogDebug("", fmt.Sprintf("expire time set to %s", t)) - return cache_default.New(t), nil -} diff --git a/src/cache/impl/default/default.go b/src/cache/impl/default/default.go index 266d050..3ec8908 100644 --- a/src/cache/impl/default/default.go +++ b/src/cache/impl/default/default.go @@ -4,9 +4,12 @@ import ( "sync" "time" + cache "ytproxy/cache" extractor_config "ytproxy/extractor/config" ) +var _ cache.T = (*defaultCache)(nil) + func New(t time.Duration) *defaultCache { return &defaultCache{ cache: make(map[extractor_config.RequestT]extractor_config.ResultT), diff --git a/src/cache/mux/mux.go b/src/cache/mux/mux.go new file mode 100644 index 0000000..17f1b21 --- /dev/null +++ b/src/cache/mux/mux.go @@ -0,0 +1,24 @@ +package cache + +import ( + "fmt" + "time" + + cache "ytproxy/cache" + cache_default "ytproxy/cache/impl/default" + cache_empty "ytproxy/cache/impl/empty" + logger "ytproxy/logger" +) + +func New(conf cache.ConfigT, log logger.T) (cache.T, error) { + t, err := time.ParseDuration(*conf.ExpireTime) + if err != nil { + return cache_default.New(0), err + } + if t.Seconds() < 1 { + log.LogDebug("", "disabled by config") + return cache_empty.New(), nil + } + log.LogDebug("", fmt.Sprintf("expire time set to %s", t)) + return cache_default.New(t), nil +} diff --git a/src/go.mod b/src/go.mod index ed9b482..4edeb00 100644 --- a/src/go.mod +++ b/src/go.mod @@ -1,3 +1,3 @@ module ytproxy -go 1.22.6 +go 1.18 diff --git a/src/main.go b/src/main.go index fd0f19b..f0d1659 100644 --- a/src/main.go +++ b/src/main.go @@ -10,7 +10,7 @@ import ( "syscall" app "ytproxy/app" - cache "ytproxy/cache" + cache_mux "ytproxy/cache/mux" config "ytproxy/config" extractor "ytproxy/extractor" logger "ytproxy/logger" @@ -192,7 +192,7 @@ func getNewApp(log logger.T, v config.SubConfigT) (app.Option, error) { if err != nil { return app.Option{}, nameerr(texts[0], err) } - cch, err := cache.New(v.Cache, + cch, err := cache_mux.New(v.Cache, logger.NewLayer(log, newname(texts[1]))) if err != nil { return app.Option{}, nameerr(texts[1], err)