123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- // Copyright 2019 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package publicsuffix_test
- import (
- "fmt"
- "strings"
- "golang.org/x/net/publicsuffix"
- )
- // This example demonstrates looking up several domains' eTLDs (effective Top
- // Level Domains) in the PSL (Public Suffix List) snapshot. For each eTLD, the
- // example also determines whether the eTLD is ICANN managed, privately
- // managed, or unmanaged (not explicitly in the PSL).
- //
- // See https://publicsuffix.org/ for the underlying PSL data.
- func ExamplePublicSuffix_manager() {
- domains := []string{
- "amazon.co.uk",
- "books.amazon.co.uk",
- "www.books.amazon.co.uk",
- "amazon.com",
- "",
- "example0.debian.net",
- "example1.debian.org",
- "",
- "golang.dev",
- "golang.net",
- "play.golang.org",
- "gophers.in.space.museum",
- "",
- "0emm.com",
- "a.0emm.com",
- "b.c.d.0emm.com",
- "",
- "there.is.no.such-tld",
- "",
- // Examples from the PublicSuffix function's documentation.
- "foo.org",
- "foo.co.uk",
- "foo.dyndns.org",
- "foo.blogspot.co.uk",
- "cromulent",
- }
- for _, domain := range domains {
- if domain == "" {
- fmt.Println(">")
- continue
- }
- eTLD, icann := publicsuffix.PublicSuffix(domain)
- // Only ICANN managed domains can have a single label. Privately
- // managed domains must have multiple labels.
- manager := "Unmanaged"
- if icann {
- manager = "ICANN Managed"
- } else if strings.IndexByte(eTLD, '.') >= 0 {
- manager = "Privately Managed"
- }
- fmt.Printf("> %24s%16s is %s\n", domain, eTLD, manager)
- }
- // Output:
- // > amazon.co.uk co.uk is ICANN Managed
- // > books.amazon.co.uk co.uk is ICANN Managed
- // > www.books.amazon.co.uk co.uk is ICANN Managed
- // > amazon.com com is ICANN Managed
- // >
- // > example0.debian.net debian.net is Privately Managed
- // > example1.debian.org org is ICANN Managed
- // >
- // > golang.dev dev is ICANN Managed
- // > golang.net net is ICANN Managed
- // > play.golang.org org is ICANN Managed
- // > gophers.in.space.museum space.museum is ICANN Managed
- // >
- // > 0emm.com com is ICANN Managed
- // > a.0emm.com a.0emm.com is Privately Managed
- // > b.c.d.0emm.com d.0emm.com is Privately Managed
- // >
- // > there.is.no.such-tld such-tld is Unmanaged
- // >
- // > foo.org org is ICANN Managed
- // > foo.co.uk co.uk is ICANN Managed
- // > foo.dyndns.org dyndns.org is Privately Managed
- // > foo.blogspot.co.uk blogspot.co.uk is Privately Managed
- // > cromulent cromulent is Unmanaged
- }
|