♻️ Simplify server use case usage
This commit is contained in:
parent
715445ee5d
commit
b046f13098
|
@ -57,7 +57,7 @@ func NewApp(logger *log.Logger, config *domain.Config) (*App, error) {
|
||||||
themer := themeucase.NewThemeUseCase(partialsDir, themes)
|
themer := themeucase.NewThemeUseCase(partialsDir, themes)
|
||||||
pages := pagefsrepo.NewFileSystemPageRepository(contentDir)
|
pages := pagefsrepo.NewFileSystemPageRepository(contentDir)
|
||||||
pager := pageucase.NewPageUseCase(pages, resources)
|
pager := pageucase.NewPageUseCase(pages, resources)
|
||||||
serverer := servercase.NewServerUseCase()
|
serverer := servercase.NewServerUseCase(sites)
|
||||||
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
// INFO(toby3d): any static file is public and unprotected by design, so it's safe to search it
|
// INFO(toby3d): any static file is public and unprotected by design, so it's safe to search it
|
||||||
// first before deep down to any page or it's resource which might be secured by middleware or
|
// first before deep down to any page or it's resource which might be secured by middleware or
|
||||||
|
@ -180,11 +180,9 @@ func NewApp(logger *log.Logger, config *domain.Config) (*App, error) {
|
||||||
chain := middleware.Chain{
|
chain := middleware.Chain{
|
||||||
middleware.LogFmt(),
|
middleware.LogFmt(),
|
||||||
middleware.Redirect(middleware.RedirectConfig{
|
middleware.Redirect(middleware.RedirectConfig{
|
||||||
Siter: siter,
|
|
||||||
Serverer: serverer,
|
Serverer: serverer,
|
||||||
}),
|
}),
|
||||||
middleware.Header(middleware.HeaderConfig{
|
middleware.Header(middleware.HeaderConfig{
|
||||||
Siter: siter,
|
|
||||||
Serverer: serverer,
|
Serverer: serverer,
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,13 +5,11 @@ import (
|
||||||
|
|
||||||
"source.toby3d.me/toby3d/home/internal/domain"
|
"source.toby3d.me/toby3d/home/internal/domain"
|
||||||
"source.toby3d.me/toby3d/home/internal/server"
|
"source.toby3d.me/toby3d/home/internal/server"
|
||||||
"source.toby3d.me/toby3d/home/internal/site"
|
|
||||||
"source.toby3d.me/toby3d/home/internal/urlutil"
|
"source.toby3d.me/toby3d/home/internal/urlutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
type HeaderConfig struct {
|
type HeaderConfig struct {
|
||||||
Skipper Skipper
|
Skipper Skipper
|
||||||
Siter site.UseCase
|
|
||||||
Serverer server.UseCase
|
Serverer server.UseCase
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,10 +18,6 @@ func Header(config HeaderConfig) Interceptor {
|
||||||
config.Skipper = DefaultSkipper
|
config.Skipper = DefaultSkipper
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.Siter == nil {
|
|
||||||
panic("middleware: header: Siter is nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
if config.Serverer == nil {
|
if config.Serverer == nil {
|
||||||
panic("middleware: header: Serverer is nil")
|
panic("middleware: header: Serverer is nil")
|
||||||
}
|
}
|
||||||
|
@ -42,14 +36,7 @@ func Header(config HeaderConfig) Interceptor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
site, err := config.Siter.Do(r.Context(), lang)
|
server, err := config.Serverer.Do(r.Context(), lang)
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
server, err := config.Serverer.Do(r.Context(), *site)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
|
||||||
|
|
|
@ -5,14 +5,12 @@ import (
|
||||||
|
|
||||||
"source.toby3d.me/toby3d/home/internal/domain"
|
"source.toby3d.me/toby3d/home/internal/domain"
|
||||||
"source.toby3d.me/toby3d/home/internal/server"
|
"source.toby3d.me/toby3d/home/internal/server"
|
||||||
"source.toby3d.me/toby3d/home/internal/site"
|
|
||||||
"source.toby3d.me/toby3d/home/internal/urlutil"
|
"source.toby3d.me/toby3d/home/internal/urlutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
RedirectConfig struct {
|
RedirectConfig struct {
|
||||||
Skipper Skipper
|
Skipper Skipper
|
||||||
Siter site.UseCase
|
|
||||||
Serverer server.UseCase
|
Serverer server.UseCase
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,10 +26,6 @@ func Redirect(config RedirectConfig) Interceptor {
|
||||||
config.Skipper = DefaultSkipper
|
config.Skipper = DefaultSkipper
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.Siter == nil {
|
|
||||||
panic("middleware: redirect: Siter is nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
if config.Serverer == nil {
|
if config.Serverer == nil {
|
||||||
panic("middleware: redirect: Serverer is nil")
|
panic("middleware: redirect: Serverer is nil")
|
||||||
}
|
}
|
||||||
|
@ -50,14 +44,7 @@ func Redirect(config RedirectConfig) Interceptor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
site, err := config.Siter.Do(r.Context(), lang)
|
server, err := config.Serverer.Do(r.Context(), lang)
|
||||||
if err != nil {
|
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
server, err := config.Serverer.Do(r.Context(), *site)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type UseCase interface {
|
type UseCase interface {
|
||||||
Do(ctx context.Context, site domain.Site) (*domain.Server, error)
|
Do(ctx context.Context, lang domain.Language) (*domain.Server, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
@ -2,21 +2,31 @@ package usecase
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"source.toby3d.me/toby3d/home/internal/domain"
|
"source.toby3d.me/toby3d/home/internal/domain"
|
||||||
"source.toby3d.me/toby3d/home/internal/server"
|
"source.toby3d.me/toby3d/home/internal/server"
|
||||||
|
"source.toby3d.me/toby3d/home/internal/site"
|
||||||
)
|
)
|
||||||
|
|
||||||
type serverUseCase struct{}
|
type serverUseCase struct {
|
||||||
|
sites site.Repository
|
||||||
func NewServerUseCase() server.UseCase {
|
|
||||||
return serverUseCase{}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (serverUseCase) Do(ctx context.Context, site domain.Site) (*domain.Server, error) {
|
func NewServerUseCase(sites site.Repository) server.UseCase {
|
||||||
out := domain.NewServer()
|
return &serverUseCase{
|
||||||
|
sites: sites,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ucase *serverUseCase) Do(ctx context.Context, lang domain.Language) (*domain.Server, error) {
|
||||||
|
site, err := ucase.sites.Get(ctx, domain.LanguageUnd)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("cannot find base site data: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
out := domain.NewServer()
|
||||||
if site.Params == nil {
|
if site.Params == nil {
|
||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue