/
githubmirror
/
client
Обзор
Документация
Войти
/
githubmirror
/
client
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
go/chat/unfurl/utils.go
76 строк
2 KB
zoom-ua
test against go 1.25.5, upgrade x deps,dns (#28693)
22 дек 2025, 17:57
Не верифицирован
22 дек 2025, 17:57
901b3b8
Код
Авторство
О чём код?
package unfurl import ( "errors" "net" "net/url" "strings" "github.com/keybase/client/go/chat/types" "github.com/keybase/client/go/protocol/chat1" "golang.org/x/net/publicsuffix" ) func GetDefaultFaviconURL(uri string) (string, error) { parsed, err := url.Parse(uri) if err != nil { return "", err } parsed.Path = "favicon.ico" parsed.RawQuery = "" return parsed.String(), nil } func GetDefaultAppleTouchURL(uri string) (string, error) { parsed, err := url.Parse(uri) if err != nil { return "", err } parsed.Path = "apple-touch-icon.png" parsed.RawQuery = "" return parsed.String(), nil } func GetHostname(uri string) (string, error) { parsed, err := url.Parse(uri) if err != nil { return "", err } return parsed.Hostname(), nil } func GetDomain(uri string) (res string, err error) { hostname, err := GetHostname(uri) if err != nil { return res, err } if len(hostname) == 0 { return res, errors.New("no hostname") } if hostname == types.MapsDomain { return hostname, nil } // Check if hostname is an IP address. If so, return it directly // since publicsuffix.EffectiveTLDPlusOne doesn't work with IPs. if net.ParseIP(hostname) != nil { return hostname, nil } return publicsuffix.EffectiveTLDPlusOne(hostname) } func IsDomain(domain, target string) bool { return strings.Contains(domain, target+".") } func ClassifyDomain(domain string) chat1.UnfurlType { switch { case domain == "gph.is": fallthrough case IsDomain(domain, "giphy"): return chat1.UnfurlType_GIPHY case domain == types.MapsDomain: return chat1.UnfurlType_MAPS default: return chat1.UnfurlType_GENERIC } }