home/internal/domain/site.go

68 lines
1.4 KiB
Go
Raw Normal View History

2023-11-07 22:28:18 +00:00
package domain
import (
"net/url"
"path"
"path/filepath"
"testing"
2023-11-08 02:08:17 +00:00
"time"
2023-11-07 22:28:18 +00:00
)
type Site struct {
DefaultLanguage Language
Language Language
Languages []Language
BaseURL *url.URL
Params map[string]any
TimeZone *time.Location
File File
Title string
Resources Resources
2023-11-07 22:28:18 +00:00
}
func (s Site) LanguagePrefix() string {
if s.Language != LanguageUnd {
return path.Join("/", s.Language.lang, "/")
}
return ""
}
func (s Site) IsMultiLingual() bool {
return 1 < len(s.Languages)
}
func TestSite(tb testing.TB) *Site {
tb.Helper()
ru := NewLanguage("ru")
en := NewLanguage("en")
return &Site{
DefaultLanguage: en,
Language: ru,
Languages: []Language{en, ru},
BaseURL: &url.URL{Scheme: "http", Host: "127.0.0.1:3000", Path: "/"},
TimeZone: time.UTC,
File: NewFile(filepath.Join("content", "index.en.md")),
Title: "Testing",
Resources: make([]*Resource, 0),
Params: map[string]any{
"server": map[string]any{
"header": []any{map[string]any{
"path": "/**",
"headers": map[string]any{
"Link": `<https://auth.example.com/>; rel="indieauth-metadata", ` +
`<https://pub.example.com/>; rel="micropub"`,
},
}, map[string]any{
"path": "/foo/bar",
"headers": map[string]any{
"X-Testing": `sample-text`,
},
}},
},
},
}
}