iproved favicon caching / ID system
This commit is contained in:
parent
4a0738745a
commit
255acb360f
2 changed files with 20 additions and 23 deletions
39
common.go
39
common.go
|
@ -38,8 +38,9 @@ type SearchEngine struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type LinkParts struct {
|
type LinkParts struct {
|
||||||
Domain template.HTML
|
Domain template.HTML
|
||||||
Path template.HTML
|
Path template.HTML
|
||||||
|
RootURL string // used by getFaviconProxyURL()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper function to render templates without elapsed time measurement
|
// Helper function to render templates without elapsed time measurement
|
||||||
|
@ -131,11 +132,10 @@ func FormatElapsedTime(elapsed time.Duration) string {
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("%.2f %s", elapsed.Seconds(), Translate("seconds"))
|
return fmt.Sprintf("%.2f %s", elapsed.Seconds(), Translate("seconds"))
|
||||||
}
|
}
|
||||||
|
func FormatURLParts(rawURL string) (domain, path, rootURL string) {
|
||||||
func FormatURLParts(rawURL string) (domain, path string) {
|
|
||||||
parsed, err := url.Parse(rawURL)
|
parsed, err := url.Parse(rawURL)
|
||||||
if err != nil {
|
if err != nil || parsed.Host == "" {
|
||||||
return rawURL, ""
|
return "", "", ""
|
||||||
}
|
}
|
||||||
|
|
||||||
domain = parsed.Host
|
domain = parsed.Host
|
||||||
|
@ -143,36 +143,33 @@ func FormatURLParts(rawURL string) (domain, path string) {
|
||||||
domain = domain[4:]
|
domain = domain[4:]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clean up the path - remove empty segments and trailing slashes
|
rootURL = parsed.Scheme + "://" + parsed.Host
|
||||||
|
|
||||||
path = strings.Trim(parsed.Path, "/")
|
path = strings.Trim(parsed.Path, "/")
|
||||||
pathSegments := strings.Split(path, "/")
|
pathSegments := strings.Split(path, "/")
|
||||||
|
|
||||||
// Filter out empty segments
|
|
||||||
var cleanSegments []string
|
var cleanSegments []string
|
||||||
for _, seg := range pathSegments {
|
for _, seg := range pathSegments {
|
||||||
if seg != "" {
|
if seg != "" {
|
||||||
cleanSegments = append(cleanSegments, seg)
|
cleanSegments = append(cleanSegments, seg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
path = strings.Join(cleanSegments, "/")
|
path = strings.Join(cleanSegments, "/")
|
||||||
return domain, path
|
return domain, path, rootURL
|
||||||
}
|
}
|
||||||
|
|
||||||
func FormatLinkHTML(rawURL string) LinkParts {
|
func FormatLinkHTML(rawURL string) LinkParts {
|
||||||
domain, path := FormatURLParts(rawURL)
|
domain, path, root := FormatURLParts(rawURL)
|
||||||
|
|
||||||
if path == "" {
|
lp := LinkParts{
|
||||||
return LinkParts{
|
RootURL: root,
|
||||||
Domain: template.HTML(fmt.Sprintf(`<span class="result-domain">%s</span>`, template.HTMLEscapeString(domain))),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only add separators between non-empty path segments
|
lp.Domain = template.HTML(fmt.Sprintf(`<span class="result-domain">%s</span>`, template.HTMLEscapeString(domain)))
|
||||||
pathDisplay := strings.ReplaceAll(path, "/", " › ")
|
|
||||||
|
|
||||||
return LinkParts{
|
if path != "" {
|
||||||
Domain: template.HTML(fmt.Sprintf(`<span class="result-domain">%s</span>`, template.HTMLEscapeString(domain))),
|
pathDisplay := strings.ReplaceAll(path, "/", " › ")
|
||||||
Path: template.HTML(fmt.Sprintf(`<span class="result-path"> › %s</span>`, template.HTMLEscapeString(pathDisplay))),
|
lp.Path = template.HTML(fmt.Sprintf(`<span class="result-path"> › %s</span>`, template.HTMLEscapeString(pathDisplay)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return lp
|
||||||
}
|
}
|
||||||
|
|
4
text.go
4
text.go
|
@ -68,8 +68,8 @@ func HandleTextSearch(w http.ResponseWriter, settings UserSettings, query string
|
||||||
|
|
||||||
// First format the link
|
// First format the link
|
||||||
prettyLink := FormatLinkHTML(r.URL)
|
prettyLink := FormatLinkHTML(r.URL)
|
||||||
faviconID := faviconIDFromURL(r.URL)
|
faviconID := faviconIDFromURL(prettyLink.RootURL)
|
||||||
faviconURL := getFaviconProxyURL("", r.URL) //string(prettyLink.Domain)
|
faviconURL := getFaviconProxyURL("", prettyLink.RootURL)
|
||||||
|
|
||||||
decoratedResults = append(decoratedResults, DecoratedResult{
|
decoratedResults = append(decoratedResults, DecoratedResult{
|
||||||
TextSearchResult: r,
|
TextSearchResult: r,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue