MCPcopy
hub / github.com/perkeep/perkeep / ServeHTTP

Method ServeHTTP

pkg/server/ui.go:423–481  ·  view source on GitHub ↗
(rw http.ResponseWriter, req *http.Request)

Source from the content-addressed store, hash-verified

421}
422
423func (ui *UIHandler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
424 suffix := httputil.PathSuffix(req)
425
426 rw.Header().Set("Vary", "Accept")
427 switch {
428 case wantsDiscovery(req):
429 ui.root.serveDiscovery(rw, req)
430 case wantsUploadHelper(req):
431 ui.serveUploadHelper(rw, req)
432 case strings.HasPrefix(suffix, "download/"):
433 ui.serveDownload(rw, req)
434 case strings.HasPrefix(suffix, "importshare"):
435 ui.importShare(rw, req)
436 case strings.HasPrefix(suffix, "thumbnail/"):
437 ui.serveThumbnail(rw, req)
438 case strings.HasPrefix(suffix, "tree/"):
439 ui.serveFileTree(rw, req)
440 case strings.HasPrefix(suffix, "qr/"):
441 ui.serveQR(rw, req)
442 case getSuffixMatches(req, closurePattern):
443 ui.serveClosure(rw, req)
444 case getSuffixMatches(req, lessPattern):
445 ui.serveFromDiskOrStatic(rw, req, lessPattern, ui.fileLessHandler, ui.lessStaticFiles)
446 case getSuffixMatches(req, reactPattern):
447 ui.serveFromDiskOrStatic(rw, req, reactPattern, ui.fileReactHandler, ui.reactStaticFiles)
448 case getSuffixMatches(req, leafletPattern):
449 ui.serveFromDiskOrStatic(rw, req, leafletPattern, ui.fileLeafletHandler, ui.leafletStaticFiles)
450 case getSuffixMatches(req, keepyPattern):
451 ui.serveFromDiskOrStatic(rw, req, keepyPattern, ui.fileKeepyHandler, ui.keepyStaticFiles)
452 case getSuffixMatches(req, fontawesomePattern):
453 ui.serveFromDiskOrStatic(rw, req, fontawesomePattern, ui.fileFontawesomeHandler, ui.fontawesomeStaticFiles)
454 case getSuffixMatches(req, openSansPattern):
455 ui.serveFromDiskOrStatic(rw, req, openSansPattern, ui.fileOpenSansHandler, ui.opensansStaticFiles)
456 default:
457 file := ""
458 if m := staticFilePattern.FindStringSubmatch(suffix); m != nil {
459 file = m[1]
460 } else {
461 switch {
462 case wantsBlobRef(req):
463 file = "index.html"
464 case wantsPermanode(req):
465 file = "permanode.html"
466 case wantsBlobInfo(req):
467 file = "blobinfo.html"
468 case req.URL.Path == httputil.PathBase(req):
469 file = "index.html"
470 default:
471 http.Error(rw, "Illegal URL.", http.StatusNotFound)
472 return
473 }
474 }
475 if file == "deps.js" {
476 serveDepsJS(rw, req, ui.uiDir)
477 return
478 }
479 ServeStaticFile(rw, req, ui.uiFiles, file)
480 }

Callers 3

importShareMethod · 0.45
serveClosureMethod · 0.45
serveFromDiskOrStaticMethod · 0.45

Calls 15

serveUploadHelperMethod · 0.95
serveDownloadMethod · 0.95
importShareMethod · 0.95
serveThumbnailMethod · 0.95
serveFileTreeMethod · 0.95
serveQRMethod · 0.95
serveClosureMethod · 0.95
serveFromDiskOrStaticMethod · 0.95
PathSuffixFunction · 0.92
PathBaseFunction · 0.92
wantsDiscoveryFunction · 0.85
wantsUploadHelperFunction · 0.85

Tested by

no test coverage detected