# HG changeset patch # User Ted Unangst # Date 1682976732 14400 # Mon May 01 17:32:12 2023 -0400 # Node ID 51e1f4a36fef363a4363ee4cdadd20b948f8f8df # Parent 17c76e7bb9fc5ede507c07e9e136d938497d7543 provide json directly at alt link diff --git a/web.go b/web.go --- a/web.go +++ b/web.go @@ -1019,6 +1019,7 @@ func showonehonk(w http.ResponseWriter, r *http.Request) { name := mux.Vars(r)["name"] + xid := mux.Vars(r)["xid"] user, err := butwhatabout(name) if err != nil { http.NotFound(w, r) @@ -1028,12 +1029,14 @@ http.NotFound(w, r) return } - xid := fmt.Sprintf("https://%s%s", serverName, r.URL.Path) + xid = fmt.Sprintf("%s/%s/%s", user.URL, honkSep, xid) - if friendorfoe(r.Header.Get("Accept")) { + if fof := friendorfoe(r.Header.Get("Accept")); fof || strings.HasSuffix(r.URL.Path, ".json") { j, ok := gimmejonk(xid) if ok { - trackback(xid, r) + if fof { + trackback(xid, r) + } w.Header().Set("Content-Type", theonetruename) w.Write(j) } else { @@ -1079,7 +1082,7 @@ templinfo := getInfo(r) templinfo["ServerMessage"] = "one honk maybe more" templinfo["HonkCSRF"] = login.GetCSRF("honkhonk", r) - templinfo["APAltLink"] = templates.Sprintf("", xid) + templinfo["APAltLink"] = templates.Sprintf("", xid) honkpage(w, u, honks, templinfo) } @@ -2575,6 +2578,7 @@ getters.HandleFunc("/rss", showrss) getters.HandleFunc("/"+userSep+"/{name:[\\pL[:digit:]]+}", showuser) getters.HandleFunc("/"+userSep+"/{name:[\\pL[:digit:]]+}/"+honkSep+"/{xid:[\\pL[:digit:]]+}", showonehonk) + getters.HandleFunc("/"+userSep+"/{name:[\\pL[:digit:]]+}/"+honkSep+"/{xid:[\\pL[:digit:]]+}.json", showonehonk) getters.HandleFunc("/"+userSep+"/{name:[\\pL[:digit:]]+}/rss", showrss) posters.HandleFunc("/"+userSep+"/{name:[\\pL[:digit:]]+}/inbox", inbox) getters.HandleFunc("/"+userSep+"/{name:[\\pL[:digit:]]+}/outbox", outbox)