iproved favicon caching / ID system
This commit is contained in:
parent
4a0738745a
commit
255acb360f
2 changed files with 20 additions and 23 deletions
35
common.go
35
common.go
|
@ -40,6 +40,7 @@ type SearchEngine struct {
|
|||
type LinkParts struct {
|
||||
Domain template.HTML
|
||||
Path template.HTML
|
||||
RootURL string // used by getFaviconProxyURL()
|
||||
}
|
||||
|
||||
// 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"))
|
||||
}
|
||||
|
||||
func FormatURLParts(rawURL string) (domain, path string) {
|
||||
func FormatURLParts(rawURL string) (domain, path, rootURL string) {
|
||||
parsed, err := url.Parse(rawURL)
|
||||
if err != nil {
|
||||
return rawURL, ""
|
||||
if err != nil || parsed.Host == "" {
|
||||
return "", "", ""
|
||||
}
|
||||
|
||||
domain = parsed.Host
|
||||
|
@ -143,36 +143,33 @@ func FormatURLParts(rawURL string) (domain, path string) {
|
|||
domain = domain[4:]
|
||||
}
|
||||
|
||||
// Clean up the path - remove empty segments and trailing slashes
|
||||
rootURL = parsed.Scheme + "://" + parsed.Host
|
||||
|
||||
path = strings.Trim(parsed.Path, "/")
|
||||
pathSegments := strings.Split(path, "/")
|
||||
|
||||
// Filter out empty segments
|
||||
var cleanSegments []string
|
||||
for _, seg := range pathSegments {
|
||||
if seg != "" {
|
||||
cleanSegments = append(cleanSegments, seg)
|
||||
}
|
||||
}
|
||||
|
||||
path = strings.Join(cleanSegments, "/")
|
||||
return domain, path
|
||||
return domain, path, rootURL
|
||||
}
|
||||
|
||||
func FormatLinkHTML(rawURL string) LinkParts {
|
||||
domain, path := FormatURLParts(rawURL)
|
||||
domain, path, root := FormatURLParts(rawURL)
|
||||
|
||||
if path == "" {
|
||||
return LinkParts{
|
||||
Domain: template.HTML(fmt.Sprintf(`<span class="result-domain">%s</span>`, template.HTMLEscapeString(domain))),
|
||||
}
|
||||
lp := LinkParts{
|
||||
RootURL: root,
|
||||
}
|
||||
|
||||
// Only add separators between non-empty path segments
|
||||
lp.Domain = template.HTML(fmt.Sprintf(`<span class="result-domain">%s</span>`, template.HTMLEscapeString(domain)))
|
||||
|
||||
if path != "" {
|
||||
pathDisplay := strings.ReplaceAll(path, "/", " › ")
|
||||
lp.Path = template.HTML(fmt.Sprintf(`<span class="result-path"> › %s</span>`, template.HTMLEscapeString(pathDisplay)))
|
||||
}
|
||||
|
||||
return LinkParts{
|
||||
Domain: template.HTML(fmt.Sprintf(`<span class="result-domain">%s</span>`, template.HTMLEscapeString(domain))),
|
||||
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
|
||||
prettyLink := FormatLinkHTML(r.URL)
|
||||
faviconID := faviconIDFromURL(r.URL)
|
||||
faviconURL := getFaviconProxyURL("", r.URL) //string(prettyLink.Domain)
|
||||
faviconID := faviconIDFromURL(prettyLink.RootURL)
|
||||
faviconURL := getFaviconProxyURL("", prettyLink.RootURL)
|
||||
|
||||
decoratedResults = append(decoratedResults, DecoratedResult{
|
||||
TextSearchResult: r,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue