Podcast episodes play; servers with NodeInfo2 only are described
Castopod announces an episode with a Note that only links to the episode's page, which serves a PodcastEpisode. PrivaPub reads PodcastEpisode (its words in description, its sound in audio, its cover in image), and a Note that is only a link to its author's own episode takes the episode's sound, title, cover and words, so the post plays. A server that publishes no NodeInfo is described from NodeInfo2 (/.well-known/x-nodeinfo2), as Castopod publishes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
1 parent
3df3c333bf
commit
69ab8e50eb
7 files changed
+163
-3
No files matched your search
@@ -48,6 +48,21 @@ namespace PrivaPub.Tests.Statistics
|
||||
Assert.Equal("mobilizon", InstanceDocuments.NodeInfo(Json("""{"software":{"name":"Mobilizon"}}"""), "2.1").Software);
|
||||
}
|
||||
|
||||
// Castopod publishes NodeInfo2 only
|
||||
[Fact]
|
||||
public void NodeInfo2_gives_the_server_and_its_usage()
|
||||
{
|
||||
var facts = InstanceDocuments.NodeInfo2(Json("""
|
||||
{"version":"1.0","server":{"baseUrl":"https://castopod.test/","name":"Castopod","software":"Castopod","version":"1.15.5"},
|
||||
"protocols":["activitypub"],"openRegistrations":false,"usage":{"users":{"total":1,"activeMonth":1,"activeHalfyear":1},"localPosts":3}}
|
||||
"""));
|
||||
|
||||
Assert.Equal(("castopod", "1.15.5", "Castopod", "nodeinfo2-1.0"), (facts.Software, facts.SoftwareVersion, facts.NodeName, facts.Version));
|
||||
Assert.Equal(new[] { "activitypub" }, facts.Protocols);
|
||||
Assert.Equal((1L, 3L), (facts.UsersTotal.Value, facts.LocalPosts.Value));
|
||||
Assert.Null(InstanceDocuments.NodeInfo2(Json("""{"version":"1.0","server":{}}""")));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void The_newest_https_nodeinfo_link_is_chosen()
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user