Live video on the AT Protocol
79
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v0.8.18 71 lines 2.3 kB view raw
1package linking 2 3import ( 4 "context" 5 "io" 6 "net/url" 7 "strings" 8 "testing" 9 10 "github.com/bluesky-social/indigo/api/atproto" 11 "github.com/bluesky-social/indigo/api/bsky" 12 lexutil "github.com/bluesky-social/indigo/lex/util" 13 "github.com/stretchr/testify/require" 14 "stream.place/streamplace/js/app" 15 "stream.place/streamplace/pkg/streamplace" 16) 17 18func IndexHTML(t *testing.T) []byte { 19 allFiles, err := app.Files() 20 require.NoError(t, err) 21 require.NotNil(t, allFiles) 22 index, err := allFiles.Open("index.html") 23 require.NoError(t, err) 24 indexBs, err := io.ReadAll(index) 25 require.NoError(t, err) 26 require.NotNil(t, indexBs) 27 return indexBs 28} 29 30func TestNewLinker(t *testing.T) { 31 index := IndexHTML(t) 32 linker, err := NewLinker(context.Background(), index) 33 require.NoError(t, err) 34 require.NotNil(t, linker) 35} 36 37func TestGenerateLinkCard(t *testing.T) { 38 index := IndexHTML(t) 39 linker, err := NewLinker(context.Background(), index) 40 require.NoError(t, err) 41 require.NotNil(t, linker) 42 43 u, err := url.Parse("https://stream.place/iame.li") 44 require.NoError(t, err) 45 sp := "https://stream.place" 46 ls := &streamplace.Livestream{ 47 CreatedAt: "2025-03-25T00:39:49.121Z", 48 Post: &atproto.RepoStrongRef{ 49 Cid: "bafyreiczmyne5jd4lpax5ttyb5p2fbcageyt6fsthdpyymecokcsmyh4a4", 50 Uri: "at://did:plc:2zmxikig2sj7gqaezl5gntae/app.bsky.feed.post/3ll5zuomua22x", 51 }, 52 Title: "Back up! Once again water in the firehose. Link cards if this stays stable", 53 Url: &sp, 54 } 55 lsv := &streamplace.Livestream_LivestreamView{ 56 Author: &bsky.ActorDefs_ProfileViewBasic{ 57 Handle: "iame.li", 58 Did: "did:plc:2zmxikig2sj7gqaezl5gntae", 59 }, 60 Cid: "bafyreib2ohz45jileumnuwa3wdoo3o7caikfyq467eanleqcscouh5wery", 61 IndexedAt: "2025-03-25T01:16:14Z", 62 Record: &lexutil.LexiconTypeDecoder{Val: ls}, 63 Uri: "at://did:plc:2zmxikig2sj7gqaezl5gntae/place.stream.livestream/3ll5zuop2k22x", 64 } 65 linkCard, err := linker.GenerateStreamerCard(context.Background(), u, lsv, "") 66 require.NoError(t, err) 67 linkStr := string(linkCard) 68 require.True(t, strings.Contains(linkStr, "iame.li")) 69 require.True(t, strings.Contains(linkStr, ls.Title), "should contain the livestream title") 70 require.True(t, strings.Count(linkStr, "<title>") == 1, "should have exactly one title tag") 71}