appview: add user in 503 error pages #7

closed
opened by serendipty01.dev targeting master from push-prquzlvztlul
Changed files
+123 -48
appview
issues
pages
pulls
repo
state
+6 -2
appview/issues/issues.go
···
)
if err != nil {
l.Error("failed to fetch labels", "err", err)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
)
if err != nil {
l.Error("failed to fetch labels", "err", err)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
+2 -2
appview/pages/pages.go
···
return p.execute("errors/knot404", w, params)
-
func (p *Pages) Error503(w io.Writer) error {
-
return p.execute("errors/503", w, nil)
+
func (p *Pages) Error503(w io.Writer, params ErrorPageParams) error {
+
return p.execute("errors/503", w, params)
+30 -10
appview/pulls/pulls.go
···
)
if err != nil {
log.Println("failed to fetch labels", err)
-
s.pages.Error503(w)
+
s.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
)
if err != nil {
log.Println("failed to fetch labels", err)
-
s.pages.Error503(w)
+
s.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
if err != nil {
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
log.Println("failed to call XRPC repo.branches", xrpcerr)
-
s.pages.Error503(w)
+
s.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
log.Println("failed to fetch branches", err)
···
var result types.RepoBranchesResponse
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
log.Println("failed to decode XRPC response", err)
-
s.pages.Error503(w)
+
s.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
if err != nil {
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
log.Println("failed to call XRPC repo.branches", xrpcerr)
-
s.pages.Error503(w)
+
s.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
log.Println("failed to fetch branches", err)
···
var result types.RepoBranchesResponse
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
log.Println("failed to decode XRPC response", err)
-
s.pages.Error503(w)
+
s.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
···
if err != nil {
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
log.Println("failed to call XRPC repo.branches for source", xrpcerr)
-
s.pages.Error503(w)
+
s.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
log.Println("failed to fetch source branches", err)
···
var sourceBranches types.RepoBranchesResponse
if err := json.Unmarshal(sourceXrpcBytes, &sourceBranches); err != nil {
log.Println("failed to decode source branches XRPC response", err)
-
s.pages.Error503(w)
+
s.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
···
if err != nil {
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
log.Println("failed to call XRPC repo.branches for target", xrpcerr)
-
s.pages.Error503(w)
+
s.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
log.Println("failed to fetch target branches", err)
···
var targetBranches types.RepoBranchesResponse
if err := json.Unmarshal(targetXrpcBytes, &targetBranches); err != nil {
log.Println("failed to decode target branches XRPC response", err)
-
s.pages.Error503(w)
+
s.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
+3 -1
appview/repo/index.go
···
return
}
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
l.Error("failed to build index response", "err", err)
return
}
+76 -31
appview/repo/repo.go
···
func (rp *Repo) DownloadArchive(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "DownloadArchive")
+
user := rp.oauth.GetUser(r)
ref := chi.URLParam(r, "ref")
ref, _ = url.PathUnescape(ref)
···
archiveBytes, err := tangled.RepoArchive(r.Context(), xrpcc, "tar.gz", "", ref, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.archive", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
func (rp *Repo) RepoLog(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "RepoLog")
+
user := rp.oauth.GetUser(r)
f, err := rp.repoResolver.Resolve(r)
if err != nil {
···
xrpcBytes, err := tangled.RepoLog(r.Context(), xrpcc, cursor, limit, "", ref, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.log", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
var xrpcResp types.RepoLogResponse
if err := json.Unmarshal(xrpcBytes, &xrpcResp); err != nil {
l.Error("failed to decode XRPC response", "err", err)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
tagBytes, err := tangled.RepoTags(r.Context(), xrpcc, "", 0, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.tags", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
branchBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.branches", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
}
}
-
user := rp.oauth.GetUser(r)
-
emailToDidMap, err := db.GetEmailToDid(rp.db, uniqueEmails(xrpcResp.Commits), true)
if err != nil {
l.Error("failed to fetch email to did mapping", "err", err)
···
xrpcBytes, err := tangled.RepoDiff(r.Context(), xrpcc, ref, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.diff", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
var result types.RepoCommitResponse
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
l.Error("failed to decode XRPC response", "err", err)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
func (rp *Repo) RepoTree(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "RepoTree")
+
user := rp.oauth.GetUser(r)
f, err := rp.repoResolver.Resolve(r)
if err != nil {
···
xrpcResp, err := tangled.RepoTree(r.Context(), xrpcc, treePath, ref, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.tree", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
return
}
-
user := rp.oauth.GetUser(r)
-
var breadcrumbs [][]string
breadcrumbs = append(breadcrumbs, []string{f.Name, fmt.Sprintf("/%s/tree/%s", f.OwnerSlashRepo(), url.PathEscape(ref))})
if treePath != "" {
···
func (rp *Repo) RepoTags(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "RepoTags")
+
user := rp.oauth.GetUser(r)
f, err := rp.repoResolver.Resolve(r)
if err != nil {
···
xrpcBytes, err := tangled.RepoTags(r.Context(), xrpcc, "", 0, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.tags", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
var result types.RepoTagsResponse
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
l.Error("failed to decode XRPC response", "err", err)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
}
}
-
user := rp.oauth.GetUser(r)
rp.pages.RepoTags(w, pages.RepoTagsParams{
LoggedInUser: user,
RepoInfo: f.RepoInfo(user),
···
func (rp *Repo) RepoBranches(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "RepoBranches")
+
user := rp.oauth.GetUser(r)
f, err := rp.repoResolver.Resolve(r)
if err != nil {
···
xrpcBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.branches", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
var result types.RepoBranchesResponse
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
l.Error("failed to decode XRPC response", "err", err)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
sortBranches(result.Branches)
-
user := rp.oauth.GetUser(r)
rp.pages.RepoBranches(w, pages.RepoBranchesParams{
LoggedInUser: user,
RepoInfo: f.RepoInfo(user),
···
func (rp *Repo) RepoBlob(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "RepoBlob")
+
user := rp.oauth.GetUser(r)
f, err := rp.repoResolver.Resolve(r)
if err != nil {
···
resp, err := tangled.RepoBlob(r.Context(), xrpcc, filePath, false, ref, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.blob", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
sizeHint = uint64(len(resp.Content))
}
-
user := rp.oauth.GetUser(r)
-
// Determine if content is binary (dereference pointer)
isBinary := false
if resp.IsBinary != nil {
···
func (rp *Repo) RepoBlobRaw(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "RepoBlobRaw")
+
user := rp.oauth.GetUser(r)
f, err := rp.repoResolver.Resolve(r)
if err != nil {
···
resp, err := client.Do(req)
if err != nil {
l.Error("failed to reach knotserver", "err", err)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
defer resp.Body.Close()
···
xrpcBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.branches", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
var result types.RepoBranchesResponse
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
l.Error("failed to decode XRPC response", "err", err)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
defaultLabels, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", models.DefaultLabelDefs()))
if err != nil {
l.Error("failed to fetch labels", "err", err)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
labels, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", f.Repo.Labels))
if err != nil {
l.Error("failed to fetch labels", "err", err)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
// remove default labels from the labels list, if present
···
branchBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.branches", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
···
tagBytes, err := tangled.RepoTags(r.Context(), xrpcc, "", 0, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.tags", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
···
branchBytes, err := tangled.RepoBranches(r.Context(), xrpcc, "", 0, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.branches", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
···
tagBytes, err := tangled.RepoTags(r.Context(), xrpcc, "", 0, repo)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.tags", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
···
compareBytes, err := tangled.RepoCompare(r.Context(), xrpcc, repo, base, head)
if xrpcerr := xrpcclient.HandleXrpcErr(err); xrpcerr != nil {
l.Error("failed to call XRPC repo.compare", "err", xrpcerr)
-
rp.pages.Error503(w)
+
rp.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
+6 -2
appview/state/gfi.go
···
repoLabels, err := db.GetRepoLabels(s.db, db.FilterEq("label_at", goodFirstIssueLabel))
if err != nil {
log.Println("failed to get repo labels", err)
-
s.pages.Error503(w)
+
s.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}
···
)
if err != nil {
log.Println("failed to get issues", err)
-
s.pages.Error503(w)
+
s.pages.Error503(w, pages.ErrorPageParams{
+
LoggedInUser: user,
+
})
return
}