···
func (rp *Repo) DownloadArchive(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "DownloadArchive")
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)
···
func (rp *Repo) RepoLog(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "RepoLog")
f, err := rp.repoResolver.Resolve(r)
···
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)
var xrpcResp types.RepoLogResponse
if err := json.Unmarshal(xrpcBytes, &xrpcResp); err != nil {
l.Error("failed to decode XRPC response", "err", err)
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)
···
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)
···
-
user := rp.oauth.GetUser(r)
emailToDidMap, err := db.GetEmailToDid(rp.db, uniqueEmails(xrpcResp.Commits), true)
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)
var result types.RepoCommitResponse
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
l.Error("failed to decode XRPC response", "err", err)
···
func (rp *Repo) RepoTree(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "RepoTree")
f, err := rp.repoResolver.Resolve(r)
···
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)
···
-
user := rp.oauth.GetUser(r)
var breadcrumbs [][]string
breadcrumbs = append(breadcrumbs, []string{f.Name, fmt.Sprintf("/%s/tree/%s", f.OwnerSlashRepo(), url.PathEscape(ref))})
···
func (rp *Repo) RepoTags(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "RepoTags")
f, err := rp.repoResolver.Resolve(r)
···
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)
var result types.RepoTagsResponse
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
l.Error("failed to decode XRPC response", "err", err)
···
-
user := rp.oauth.GetUser(r)
rp.pages.RepoTags(w, pages.RepoTagsParams{
RepoInfo: f.RepoInfo(user),
···
func (rp *Repo) RepoBranches(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "RepoBranches")
f, err := rp.repoResolver.Resolve(r)
···
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)
var result types.RepoBranchesResponse
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
l.Error("failed to decode XRPC response", "err", err)
sortBranches(result.Branches)
-
user := rp.oauth.GetUser(r)
rp.pages.RepoBranches(w, pages.RepoBranchesParams{
RepoInfo: f.RepoInfo(user),
···
func (rp *Repo) RepoBlob(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "RepoBlob")
f, err := rp.repoResolver.Resolve(r)
···
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)
···
sizeHint = uint64(len(resp.Content))
-
user := rp.oauth.GetUser(r)
// Determine if content is binary (dereference pointer)
if resp.IsBinary != nil {
···
func (rp *Repo) RepoBlobRaw(w http.ResponseWriter, r *http.Request) {
l := rp.logger.With("handler", "RepoBlobRaw")
f, err := rp.repoResolver.Resolve(r)
···
resp, err := client.Do(req)
l.Error("failed to reach knotserver", "err", err)
···
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)
var result types.RepoBranchesResponse
if err := json.Unmarshal(xrpcBytes, &result); err != nil {
l.Error("failed to decode XRPC response", "err", err)
defaultLabels, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", models.DefaultLabelDefs()))
l.Error("failed to fetch labels", "err", err)
labels, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", f.Repo.Labels))
l.Error("failed to fetch labels", "err", err)
// 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)
···
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)
···
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)
···
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)
···
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)
···
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, pages.ErrorPageParams{
···
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)
···
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, pages.ErrorPageParams{
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, pages.ErrorPageParams{
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, pages.ErrorPageParams{
···
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, pages.ErrorPageParams{
···
emailToDidMap, err := db.GetEmailToDid(rp.db, uniqueEmails(xrpcResp.Commits), true)
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, pages.ErrorPageParams{
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, pages.ErrorPageParams{
···
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)
···
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, pages.ErrorPageParams{
···
var breadcrumbs [][]string
breadcrumbs = append(breadcrumbs, []string{f.Name, fmt.Sprintf("/%s/tree/%s", f.OwnerSlashRepo(), url.PathEscape(ref))})
···
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)
···
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, pages.ErrorPageParams{
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, pages.ErrorPageParams{
···
rp.pages.RepoTags(w, pages.RepoTagsParams{
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)
···
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, pages.ErrorPageParams{
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, pages.ErrorPageParams{
sortBranches(result.Branches)
rp.pages.RepoBranches(w, pages.RepoBranchesParams{
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)
···
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, pages.ErrorPageParams{
···
sizeHint = uint64(len(resp.Content))
// Determine if content is binary (dereference pointer)
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)
···
resp, err := client.Do(req)
l.Error("failed to reach knotserver", "err", err)
+
rp.pages.Error503(w, pages.ErrorPageParams{
···
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, pages.ErrorPageParams{
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, pages.ErrorPageParams{
defaultLabels, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", models.DefaultLabelDefs()))
l.Error("failed to fetch labels", "err", err)
+
rp.pages.Error503(w, pages.ErrorPageParams{
labels, err := db.GetLabelDefinitions(rp.db, db.FilterIn("at_uri", f.Repo.Labels))
l.Error("failed to fetch labels", "err", err)
+
rp.pages.Error503(w, pages.ErrorPageParams{
// 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, pages.ErrorPageParams{
···
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, pages.ErrorPageParams{
···
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, pages.ErrorPageParams{
···
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, pages.ErrorPageParams{
···
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, pages.ErrorPageParams{