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() {
|
private static readonly Dictionary<string, RemoteDocument> ContextCache = new() {
|
||||||
{
|
{
|
||||||
"https://www.w3.org/ns/activitystreams", new RemoteDocument {
|
"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"),
|
DocumentUrl = new Uri("https://www.w3.org/ns/activitystreams"),
|
||||||
Document = JToken.Parse(File.ReadAllText(Path.Combine("Core", "Federation", "ActivityStreams",
|
Document = JToken.Parse(File.ReadAllText(Path.Combine("Core", "Federation", "ActivityStreams",
|
||||||
"Contexts", "as.json")))
|
"Contexts", "as.json")))
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
"https://w3id.org/security/v1", new RemoteDocument {
|
"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"),
|
DocumentUrl = new Uri("https://w3c-ccg.github.io/security-vocab/contexts/security-v1.jsonld"),
|
||||||
Document = JToken.Parse(File.ReadAllText(Path.Combine("Core", "Federation", "ActivityStreams",
|
Document = JToken.Parse(File.ReadAllText(Path.Combine("Core", "Federation", "ActivityStreams",
|
||||||
"Contexts", "security.json")))
|
"Contexts", "security.json")))
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
"http://joinmastodon.org/ns", new RemoteDocument {
|
"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",
|
Document = JToken.Parse(File.ReadAllText(Path.Combine("Core", "Federation", "ActivityStreams",
|
||||||
"Contexts", "toot.json")))
|
"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) {
|
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
|
//TODO: cache in redis
|
||||||
ContextCache.TryGetValue(uri.ToString(), out var result);
|
|
||||||
if (result != null) return result;
|
|
||||||
result = DefaultDocumentLoader.LoadJson(uri, jsonLdLoaderOptions);
|
result = DefaultDocumentLoader.LoadJson(uri, jsonLdLoaderOptions);
|
||||||
ContextCache.Add(uri.ToString(), result);
|
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_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/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/=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/=misskeymarkdown/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=nodeinfo/@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>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=renote/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
|
Loading…
Add table
Reference in a new issue