Просмотр исходного кода

Only print errors

We might want to differentiate between "no favicon found" and "got an
error", though.  And metrics would be neat.
Lucas Stadler лет назад: 9
Родитель
Сommit
7c5318a31e
1 измененных файлов с 16 добавлено и 4 удалено
  1. 16 4
      go/favicon/favicon.go

+ 16 - 4
go/favicon/favicon.go

16
16
17
var port = flag.Int("p", 8080, "port [8080]")
17
var port = flag.Int("p", 8080, "port [8080]")
18
var cacheSize = flag.Int("s", 10000, "cache size [10000]")
18
var cacheSize = flag.Int("s", 10000, "cache size [10000]")
19
var debug = flag.Bool("debug", false, "Print out debug info")
19
20
20
var faviconCache *lru.Cache
21
var faviconCache *lru.Cache
21
var lock sync.RWMutex
22
var lock sync.RWMutex
43
	url := r.URL.Query()["url"][0]
44
	url := r.URL.Query()["url"][0]
44
	favicon, err := GetFaviconCached(url)
45
	favicon, err := GetFaviconCached(url)
45
	if err != nil {
46
	if err != nil {
47
		fmt.Printf("Error: '%s': %s\n", url, err)
46
		w.WriteHeader(http.StatusNotFound)
48
		w.WriteHeader(http.StatusNotFound)
47
		w.Write([]byte(fmt.Sprint(err)))
49
		w.Write([]byte(fmt.Sprint(err)))
48
		return
50
		return
87
	if favicon, err := GetCanonicalFavicon(url); err == nil {
89
	if favicon, err := GetCanonicalFavicon(url); err == nil {
88
		fmt.Println("found favicon.ico")
90
		fmt.Println("found favicon.ico")
89
		return favicon, nil
91
		return favicon, nil
92
	} else if *debug {
93
		fmt.Printf("Error: getting /favicon.ico: %s\n", err)
90
	}
94
	}
91
95
92
	resp, err := http.Get(url)
96
	resp, err := http.Get(url)
93
	fmt.Println("get html", resp, err)
97
	if *debug {
98
		fmt.Println("get html", resp, err)
99
	}
94
	if err != nil {
100
	if err != nil {
95
		return "", err
101
		return "", err
96
	}
102
	}
97
	defer resp.Body.Close()
103
	defer resp.Body.Close()
98
104
99
	tree, err := html.Parse(resp.Body)
105
	tree, err := html.Parse(resp.Body)
100
	fmt.Println("parse html", tree, err)
106
	if *debug {
107
		fmt.Println("parse html", tree, err)
108
	}
101
	if err != nil {
109
	if err != nil {
102
		return "", err
110
		return "", err
103
	}
111
	}
124
	faviconUrl := fmt.Sprintf("%s://%s/favicon.ico", parsed.Scheme, parsed.Host)
132
	faviconUrl := fmt.Sprintf("%s://%s/favicon.ico", parsed.Scheme, parsed.Host)
125
133
126
	resp, err := http.Get(faviconUrl)
134
	resp, err := http.Get(faviconUrl)
127
	fmt.Println("get favicon.ico", resp, err)
135
	if *debug {
136
		fmt.Println("get favicon.ico", resp, err)
137
	}
128
	if err != nil {
138
	if err != nil {
129
		return "", err
139
		return "", err
130
	}
140
	}
137
	if err != nil || n == 0 {
147
	if err != nil || n == 0 {
138
		return "", errors.New("can't read /favicon.ico")
148
		return "", errors.New("can't read /favicon.ico")
139
	}
149
	}
140
	fmt.Println("favicon.ico", resp.Request.URL.String(), faviconUrl)
150
	if *debug {
151
		fmt.Println("favicon.ico", resp.Request.URL.String(), faviconUrl)
152
	}
141
	return resp.Request.URL.String(), nil
153
	return resp.Request.URL.String(), nil
142
}
154
}
143
155