Fix JsonLD parsing problems with GoToSocial

This commit is contained in:
Michael 2023-07-25 04:33:55 +00:00
parent 98e50a49f0
commit 407e6389b3
3 changed files with 57 additions and 6 deletions

View file

@ -55,6 +55,12 @@ class JsonLD
case 'https://funkwhale.audio/ns': case 'https://funkwhale.audio/ns':
$url = DI::basePath() . '/static/funkwhale.audio.jsonld'; $url = DI::basePath() . '/static/funkwhale.audio.jsonld';
break; break;
case 'http://schema.org':
$url = DI::basePath() . '/static/schema.jsonld';
break;
case 'http://joinmastodon.org/ns':
$url = DI::basePath() . '/static/joinmastodon.jsonld';
break;
default: default:
switch (parse_url($url, PHP_URL_PATH)) { switch (parse_url($url, PHP_URL_PATH)) {
case '/schemas/litepub-0.1.jsonld'; case '/schemas/litepub-0.1.jsonld';
@ -177,12 +183,6 @@ class JsonLD
if (!in_array('https://w3id.org/security/v1', $json['@context'])) { if (!in_array('https://w3id.org/security/v1', $json['@context'])) {
$json['@context'][] = 'https://w3id.org/security/v1'; $json['@context'][] = 'https://w3id.org/security/v1';
} }
// Issue 12419: Workaround for GoToSocial
$pos = array_search('http://joinmastodon.org/ns', $json['@context']);
if (is_int($pos)) {
$json['@context'][$pos] = ['toot' => 'http://joinmastodon.org/ns#'];
}
} }
// Bookwyrm transmits "id" fields with "null", which isn't allowed. // Bookwyrm transmits "id" fields with "null", which isn't allowed.

View file

@ -0,0 +1,44 @@
{
"@context":[
"https://www.w3.org/ns/activitystreams",
"https://w3id.org/security/v1",
{
"manuallyApprovesFollowers":"as:manuallyApprovesFollowers",
"toot":"http://joinmastodon.org/ns#",
"featured":{"@id":"toot:featured","@type":"@id"},
"featuredTags":{"@id":"toot:featuredTags","@type":"@id"},
"alsoKnownAs":{"@id":"as:alsoKnownAs","@type":"@id"},
"movedTo":{"@id":"as:movedTo","@type":"@id"},
"schema":"http://schema.org#",
"PropertyValue":"schema:PropertyValue",
"value":"schema:value",
"discoverable":"toot:discoverable",
"Device":"toot:Device",
"Ed25519Signature":"toot:Ed25519Signature",
"Ed25519Key":"toot:Ed25519Key",
"Curve25519Key":"toot:Curve25519Key",
"EncryptedMessage":"toot:EncryptedMessage",
"publicKeyBase64":"toot:publicKeyBase64",
"deviceId":"toot:deviceId",
"claim":{"@type":"@id","@id":"toot:claim"},
"fingerprintKey":{"@type":"@id","@id":"toot:fingerprintKey"},
"identityKey":{"@type":"@id","@id":"toot:identityKey"},
"devices":{"@type":"@id","@id":"toot:devices"},
"messageFranking":"toot:messageFranking",
"messageType":"toot:messageType",
"cipherText":"toot:cipherText",
"suspended":"toot:suspended",
"focalPoint":{"@container":"@list","@id":"toot:focalPoint"},
"ostatus":"http://ostatus.org#",
"atomUri":"ostatus:atomUri",
"inReplyToAtomUri":"ostatus:inReplyToAtomUri",
"conversation":"ostatus:conversation",
"sensitive":"as:sensitive",
"votersCount":"toot:votersCount",
"Hashtag":"as:Hashtag",
"quoteUrl":"as:quoteUrl",
"Emoji":"toot:Emoji",
"vcard":"http://www.w3.org/2006/vcard/ns#"
}
]
}

7
static/schema.jsonld Normal file
View file

@ -0,0 +1,7 @@
{
"@context": {
"schema": "http://schema.org#",
"value": "schema:value",
"PropertyValue": "schema:PropertyValue"
}
}