ServeStaticFile serves file from the root virtual filesystem.
(rw http.ResponseWriter, req *http.Request, root fs.FS, file string)
| 482 | |
| 483 | // ServeStaticFile serves file from the root virtual filesystem. |
| 484 | func ServeStaticFile(rw http.ResponseWriter, req *http.Request, root fs.FS, file string) { |
| 485 | f, err := root.Open(file) |
| 486 | if err != nil { |
| 487 | http.NotFound(rw, req) |
| 488 | log.Printf("Failed to open file %q from embedded resources: %v", file, err) |
| 489 | return |
| 490 | } |
| 491 | defer f.Close() |
| 492 | var modTime time.Time |
| 493 | if fi, err := f.Stat(); err == nil { |
| 494 | modTime = fi.ModTime() |
| 495 | } |
| 496 | http.ServeContent(rw, req, file, modTime, f.(io.ReadSeeker)) |
| 497 | } |
| 498 | |
| 499 | func (ui *UIHandler) discovery() *camtypes.UIDiscovery { |
| 500 | pubRoots := map[string]*camtypes.PublishRootDiscovery{} |