...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package couchserver
16
17 import (
18 "embed"
19 "io"
20 "net/http"
21 "os"
22
23 internal "github.com/go-kivik/kivik/v4/int/errors"
24 )
25
26
27 var files embed.FS
28
29
30 func (h *Handler) GetFavicon() http.HandlerFunc {
31 return func(w http.ResponseWriter, _ *http.Request) {
32 var ico io.Reader
33 if h.Favicon == "" {
34 asset, err := files.Open("files/favicon.ico")
35 if err != nil {
36 panic(err)
37 }
38 defer asset.Close()
39 ico = asset
40 } else {
41 file, err := os.Open(h.Favicon)
42 if err != nil {
43 if os.IsNotExist(err) {
44 err = &internal.Error{Status: http.StatusNotFound, Message: "not found"}
45 }
46 h.HandleError(w, err)
47 return
48 }
49 ico = file
50 defer file.Close()
51 }
52 w.Header().Set("Content-Type", "image/x-icon")
53 _, err := io.Copy(w, ico)
54 h.HandleError(w, err)
55 }
56 }
57
View as plain text