diff --git a/web.go b/web.go
index a82f1df..b054cf2 100644
--- a/web.go
+++ b/web.go
@@ -1019,6 +1019,7 @@ func trackback(xid string, r *http.Request) {
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 @@ func showonehonk(w http.ResponseWriter, r *http.Request) {
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 @@ func showonehonk(w http.ResponseWriter, r *http.Request) {
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 @@ func serve() {
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)