diff --git a/pages.go b/pages.go index 443fb51..cde4626 100644 --- a/pages.go +++ b/pages.go @@ -43,9 +43,9 @@ func serveFile(username, reponame, path, giteaUrl string, w http.ResponseWriter) var mimeType string var err error if found { - log.Debugf("Returning %s from cache", path) content = entry.(PageContentCache).Content mimeType = entry.(PageContentCache).mimeType + log.Debugf("Found page in cache with mimeType '%s'", mimeType) } // We have to do the raw request manually because the Gitea SDK does not allow @@ -90,6 +90,13 @@ func serveFile(username, reponame, path, giteaUrl string, w http.ResponseWriter) return } + // Handle 404s early. + // TODO: Maybe allow delivering a 404.html instead? + if resp.StatusCode == 404 { + w.WriteHeader(404) + return + } + content, err = io.ReadAll(resp.Body) if err != nil { log.Errorf("Failed to get file %s/%s/%s (%s)", username, reponame, path, err) @@ -100,6 +107,7 @@ func serveFile(username, reponame, path, giteaUrl string, w http.ResponseWriter) pathParts := strings.Split(path, ".") ext := pathParts[len(pathParts)-1] mimeType = mime.TypeByExtension("." + ext) + log.Debugf("Returning MIME type '%s' for extension '%s", mimeType, ext) now := time.Now() pageCache.Set( @@ -113,7 +121,7 @@ func serveFile(username, reponame, path, giteaUrl string, w http.ResponseWriter) ) log.Debugf("Page %s requested from Gitea and cached in memory at %v", path, now) - w.WriteHeader(200) w.Header().Set("Content-Type", mimeType) + w.WriteHeader(200) w.Write(content) }