forked from tangled.org/core
Monorepo for Tangled — https://tangled.org

appview: show error pages

Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.sh>

anirudh.fi 1a5f1bc0 f4b2c850

verified
Changed files
+24 -2
appview
middleware
pages
templates
errors
repo
+2 -2
appview/middleware/middleware.go
···
f, err := mw.repoResolver.Resolve(r)
if err != nil {
log.Println("failed to fully resolve repo", err)
-
http.Error(w, "invalid repo url", http.StatusNotFound)
+
mw.pages.ErrorKnot404(w)
return
}
···
f, err := mw.repoResolver.Resolve(r)
if err != nil {
log.Println("failed to fully resolve repo", err)
-
http.Error(w, "invalid repo url", http.StatusNotFound)
+
mw.pages.ErrorKnot404(w)
return
}
+4
appview/pages/pages.go
···
return p.execute("errors/404", w, nil)
+
func (p *Pages) ErrorKnot404(w io.Writer) error {
+
return p.execute("errors/knot404", w, nil)
+
}
+
func (p *Pages) Error503(w io.Writer) error {
return p.execute("errors/503", w, nil)
+9
appview/pages/templates/errors/knot404.html
···
+
{{ define "title" }}404 &middot; tangled{{ end }}
+
+
{{ define "content" }}
+
<h1>404 &mdash; repository not found!</h1>
+
<p>
+
The repository you were looking for could not be found.
+
The knot serving the repository may be unavailable.
+
</p>
+
{{ end }}
+9
appview/repo/repo.go
···
repolog, err := us.Log(f.OwnerDid(), f.Name, ref, page)
if err != nil {
+
rp.pages.Error503(w)
log.Println("failed to reach knotserver", err)
return
}
tagResult, err := us.Tags(f.OwnerDid(), f.Name)
if err != nil {
+
rp.pages.Error503(w)
log.Println("failed to reach knotserver", err)
return
}
···
branchResult, err := us.Branches(f.OwnerDid(), f.Name)
if err != nil {
+
rp.pages.Error503(w)
log.Println("failed to reach knotserver", err)
return
}
···
resp, err := http.Get(fmt.Sprintf("%s://%s/%s/%s/commit/%s", protocol, f.Knot, f.OwnerDid(), f.Repo.Name, ref))
if err != nil {
+
rp.pages.Error503(w)
log.Println("failed to reach knotserver", err)
return
}
···
resp, err := http.Get(fmt.Sprintf("%s://%s/%s/%s/tree/%s/%s", protocol, f.Knot, f.OwnerDid(), f.Repo.Name, ref, treePath))
if err != nil {
+
rp.pages.Error503(w)
log.Println("failed to reach knotserver", err)
return
}
···
result, err := us.Tags(f.OwnerDid(), f.Name)
if err != nil {
+
rp.pages.Error503(w)
log.Println("failed to reach knotserver", err)
return
}
···
result, err := us.Branches(f.OwnerDid(), f.Name)
if err != nil {
+
rp.pages.Error503(w)
log.Println("failed to reach knotserver", err)
return
}
···
}
resp, err := http.Get(fmt.Sprintf("%s://%s/%s/%s/blob/%s/%s", protocol, f.Knot, f.OwnerDid(), f.Repo.Name, ref, filePath))
if err != nil {
+
rp.pages.Error503(w)
log.Println("failed to reach knotserver", err)
return
}
···
result, err := us.Branches(f.OwnerDid(), f.Name)
if err != nil {
+
rp.pages.Error503(w)
log.Println("failed to reach knotserver", err)
return