Skip to content

Commit

Permalink
Deal with unknown json-ld schemas (#644)
Browse files Browse the repository at this point in the history
Rather than raising an error, returns an empty schema.
  • Loading branch information
osmaa authored Sep 20, 2023
1 parent 8c83238 commit 1e8a392
Showing 1 changed file with 14 additions and 14 deletions.
28 changes: 14 additions & 14 deletions core/ld.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,18 @@

from dateutil import parser
from pyld import jsonld
from pyld.jsonld import JsonLdError

from core.exceptions import ActivityPubFormatError
from core.exceptions import ActivityPubFormatError, capture_message

schemas = {
"unknown": {
"contentType": "application/ld+json",
"documentUrl": "unknown",
"contextUrl": None,
"document": {
"@context": {},
},
},
"www.w3.org/ns/activitystreams": {
"contentType": "application/ld+json",
"documentUrl": "http://www.w3.org/ns/activitystreams",
Expand Down Expand Up @@ -622,12 +629,8 @@ def builtin_document_loader(url: str, options={}):
# Get URL without scheme
pieces = urllib_parse.urlparse(url)
if pieces.hostname is None:
raise JsonLdError(
f"No schema built-in for {url!r}",
"jsonld.LoadDocumentError",
code="loading document failed",
cause="NoHostnameError",
)
capture_message(f"No host name for json-ld schema: {url!r}")
return schemas["unknown"]
key = pieces.hostname + pieces.path.rstrip("/")
try:
return schemas[key]
Expand All @@ -636,12 +639,9 @@ def builtin_document_loader(url: str, options={}):
key = "*" + pieces.path.rstrip("/")
return schemas[key]
except KeyError:
raise JsonLdError(
f"No schema built-in for {key!r}",
"jsonld.LoadDocumentError",
code="loading document failed",
cause="KeyError",
)
# return an empty context instead of throwing an error
capture_message(f"Ignoring unknown json-ld schema: {url!r}")
return schemas["unknown"]


def canonicalise(json_data: dict, include_security: bool = False) -> dict:
Expand Down

0 comments on commit 1e8a392

Please sign in to comment.