summaryrefslogtreecommitdiff
path: root/internal/ap/normalize.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/ap/normalize.go')
-rw-r--r--internal/ap/normalize.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/internal/ap/normalize.go b/internal/ap/normalize.go
index a27527b84..8e0a022c1 100644
--- a/internal/ap/normalize.go
+++ b/internal/ap/normalize.go
@@ -391,6 +391,36 @@ func NormalizeOutgoingAttachmentProp(item WithAttachment, rawJSON map[string]int
rawJSON["attachment"] = []interface{}{attachment}
}
+// NormalizeOutgoingAlsoKnownAsProp replaces single-entry alsoKnownAs values with
+// single-entry arrays, for better compatibility with other AP implementations.
+//
+// Ie:
+//
+// "alsoKnownAs": "https://example.org/users/some_user"
+//
+// becomes:
+//
+// "alsoKnownAs": ["https://example.org/users/some_user"]
+//
+// Noop for items with no attachments, or with attachments that are already a slice.
+func NormalizeOutgoingAlsoKnownAsProp(item WithAlsoKnownAs, rawJSON map[string]interface{}) {
+ alsoKnownAs, ok := rawJSON["alsoKnownAs"]
+ if !ok {
+ // No 'alsoKnownAs',
+ // nothing to change.
+ return
+ }
+
+ if _, ok := alsoKnownAs.([]interface{}); ok {
+ // Already slice,
+ // nothing to change.
+ return
+ }
+
+ // Coerce single-object to slice.
+ rawJSON["alsoKnownAs"] = []interface{}{alsoKnownAs}
+}
+
// NormalizeOutgoingContentProp normalizes go-fed's funky formatting of content and
// contentMap properties to a format better understood by other AP implementations.
//