Add litepub context caching
This commit is contained in:
parent
8c7ebbd865
commit
a0425aaf4c
3 changed files with 64 additions and 6 deletions
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"@context": [
|
||||
"https://www.w3.org/ns/activitystreams",
|
||||
"https://w3id.org/security/v1",
|
||||
{
|
||||
"Emoji": "toot:Emoji",
|
||||
"Hashtag": "as:Hashtag",
|
||||
"PropertyValue": "schema:PropertyValue",
|
||||
"atomUri": "ostatus:atomUri",
|
||||
"conversation": {
|
||||
"@id": "ostatus:conversation",
|
||||
"@type": "@id"
|
||||
},
|
||||
"discoverable": "toot:discoverable",
|
||||
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
|
||||
"capabilities": "litepub:capabilities",
|
||||
"ostatus": "http://ostatus.org#",
|
||||
"schema": "http://schema.org#",
|
||||
"toot": "http://joinmastodon.org/ns#",
|
||||
"misskey": "https://misskey-hub.net/ns#",
|
||||
"fedibird": "http://fedibird.com/ns#",
|
||||
"value": "schema:value",
|
||||
"sensitive": "as:sensitive",
|
||||
"litepub": "http://litepub.social/ns#",
|
||||
"invisible": "litepub:invisible",
|
||||
"directMessage": "litepub:directMessage",
|
||||
"listMessage": {
|
||||
"@id": "litepub:listMessage",
|
||||
"@type": "@id"
|
||||
},
|
||||
"quoteUrl": "as:quoteUrl",
|
||||
"quoteUri": "fedibird:quoteUri",
|
||||
"oauthRegistrationEndpoint": {
|
||||
"@id": "litepub:oauthRegistrationEndpoint",
|
||||
"@type": "@id"
|
||||
},
|
||||
"EmojiReact": "litepub:EmojiReact",
|
||||
"ChatMessage": "litepub:ChatMessage",
|
||||
"alsoKnownAs": {
|
||||
"@id": "as:alsoKnownAs",
|
||||
"@type": "@id"
|
||||
},
|
||||
"vcard": "http://www.w3.org/2006/vcard/ns#",
|
||||
"formerRepresentations": "litepub:formerRepresentations",
|
||||
"contentMap": {
|
||||
"@id": "as:content",
|
||||
"@container": "@language"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -11,25 +11,26 @@ public static class LdHelpers {
|
|||
private static readonly Dictionary<string, RemoteDocument> ContextCache = new() {
|
||||
{
|
||||
"https://www.w3.org/ns/activitystreams", new RemoteDocument {
|
||||
ContextUrl = new Uri("https://www.w3.org/ns/activitystreams"),
|
||||
DocumentUrl = new Uri("https://www.w3.org/ns/activitystreams"),
|
||||
Document = JToken.Parse(File.ReadAllText(Path.Combine("Core", "Federation", "ActivityStreams",
|
||||
"Contexts", "as.json")))
|
||||
}
|
||||
}, {
|
||||
"https://w3id.org/security/v1", new RemoteDocument {
|
||||
ContextUrl = new Uri("https://w3id.org/security/v1"),
|
||||
DocumentUrl = new Uri("https://w3c-ccg.github.io/security-vocab/contexts/security-v1.jsonld"),
|
||||
Document = JToken.Parse(File.ReadAllText(Path.Combine("Core", "Federation", "ActivityStreams",
|
||||
"Contexts", "security.json")))
|
||||
}
|
||||
}, {
|
||||
"http://joinmastodon.org/ns", new RemoteDocument {
|
||||
ContextUrl = new Uri("http://joinmastodon.org/ns"),
|
||||
DocumentUrl = new Uri("http://joinmastodon.org/ns"),
|
||||
Document = JToken.Parse(File.ReadAllText(Path.Combine("Core", "Federation", "ActivityStreams",
|
||||
"Contexts", "toot.json")))
|
||||
}
|
||||
}, {
|
||||
"litepub-0.1", new RemoteDocument {
|
||||
Document = JToken.Parse(File.ReadAllText(Path.Combine("Core", "Federation", "ActivityStreams",
|
||||
"Contexts", "litepub.json")))
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -57,9 +58,14 @@ public static class LdHelpers {
|
|||
};
|
||||
|
||||
private static RemoteDocument CustomLoader(Uri uri, JsonLdLoaderOptions jsonLdLoaderOptions) {
|
||||
var key = uri.AbsolutePath == "/schemas/litepub-0.1.jsonld" ? "litepub-0.1" : uri.ToString();
|
||||
ContextCache.TryGetValue(key, out var result);
|
||||
if (result != null) {
|
||||
result.ContextUrl = uri;
|
||||
return result;
|
||||
}
|
||||
|
||||
//TODO: cache in redis
|
||||
ContextCache.TryGetValue(uri.ToString(), out var result);
|
||||
if (result != null) return result;
|
||||
result = DefaultDocumentLoader.LoadJson(uri, jsonLdLoaderOptions);
|
||||
ContextCache.Add(uri.ToString(), result);
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Iceshrimp/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=litepub/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=misskeymarkdown/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=nodeinfo/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=renote/@EntryIndexedValue">True</s:Boolean>
|
||||
|
|
Loading…
Add table
Reference in a new issue