(rw http.ResponseWriter, req *http.Request)
| 421 | } |
| 422 | |
| 423 | func (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 | } |
no test coverage detected