2023-11-07 22:28:18 +00:00
|
|
|
package domain
|
|
|
|
|
|
|
|
import (
|
2023-11-09 01:06:40 +00:00
|
|
|
"net/url"
|
2023-11-12 23:55:06 +00:00
|
|
|
"path"
|
2023-12-09 06:02:33 +00:00
|
|
|
"path/filepath"
|
|
|
|
"testing"
|
2023-11-08 02:08:17 +00:00
|
|
|
"time"
|
2023-11-07 22:28:18 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type Site struct {
|
2023-11-13 00:19:12 +00:00
|
|
|
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
|
|
|
}
|
2023-11-12 23:55:06 +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)
|
|
|
|
}
|
2023-12-09 06:02:33 +00:00
|
|
|
|
|
|
|
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{
|
2023-12-09 06:26:50 +00:00
|
|
|
"headers": []any{map[string]any{
|
2023-12-09 06:02:33 +00:00
|
|
|
"path": "/**",
|
2023-12-09 06:26:50 +00:00
|
|
|
"values": map[string]any{
|
2023-12-09 06:02:33 +00:00
|
|
|
"Link": `<https://auth.example.com/>; rel="indieauth-metadata", ` +
|
|
|
|
`<https://pub.example.com/>; rel="micropub"`,
|
|
|
|
},
|
|
|
|
}, map[string]any{
|
|
|
|
"path": "/foo/bar",
|
2023-12-09 06:26:50 +00:00
|
|
|
"values": map[string]any{
|
2023-12-09 06:02:33 +00:00
|
|
|
"X-Testing": `sample-text`,
|
|
|
|
},
|
|
|
|
}},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|