mirror of
https://github.com/writeas/writefreely
synced 2024-12-27 08:15:15 +01:00
Correctly respond to application/ld+json requests
This returns ActivityStreams objects when the Accept header is `application/ld+json; profile="https://www.w3.org/ns/activitystreams"`, per the ActivityPub spec. Fixes #564
This commit is contained in:
parent
fe1f821422
commit
8f03da0ec1
@ -496,8 +496,7 @@ func apiCheckCollectionPermissions(app *App, r *http.Request, c *Collection) (in
|
||||
|
||||
// fetchCollection handles the API endpoint for retrieving collection data.
|
||||
func fetchCollection(app *App, w http.ResponseWriter, r *http.Request) error {
|
||||
accept := r.Header.Get("Accept")
|
||||
if strings.Contains(accept, "application/activity+json") {
|
||||
if IsActivityPubRequest(r) {
|
||||
return handleFetchCollectionActivities(app, w, r)
|
||||
}
|
||||
|
||||
|
3
posts.go
3
posts.go
@ -1119,8 +1119,7 @@ func fetchPost(app *App, w http.ResponseWriter, r *http.Request) error {
|
||||
|
||||
p.extractData()
|
||||
|
||||
accept := r.Header.Get("Accept")
|
||||
if strings.Contains(accept, "application/activity+json") {
|
||||
if IsActivityPubRequest(r) {
|
||||
if coll == nil {
|
||||
// This is a draft post; 404 for now
|
||||
// TODO: return ActivityObject
|
||||
|
@ -13,6 +13,7 @@ package writefreely
|
||||
import (
|
||||
"mime"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func IsJSON(r *http.Request) bool {
|
||||
@ -20,3 +21,9 @@ func IsJSON(r *http.Request) bool {
|
||||
accept := r.Header.Get("Accept")
|
||||
return ct == "application/json" || accept == "application/json"
|
||||
}
|
||||
|
||||
func IsActivityPubRequest(r *http.Request) bool {
|
||||
accept := r.Header.Get("Accept")
|
||||
return strings.Contains(accept, "application/activity+json") ||
|
||||
accept == "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user