bluesky appview implementation using microcosm and other services server.reddwarf.app
appview bluesky reddwarf microcosm

PostView_Embed nest adjust

Changed files
+44 -17
shims
lex
app
bsky
feed
+2 -2
main.go
··· 408 408 go func(i int, raw string) { 409 409 defer wg.Done() 410 410 411 - post, _, _ := appbskyfeeddefs.PostView(ctx, raw, sl, cs, BSKYIMAGECDN_URL, viewer, false) 411 + post, _, _ := appbskyfeeddefs.PostView(ctx, raw, sl, cs, BSKYIMAGECDN_URL, viewer, 2) 412 412 413 413 results[i].view = post 414 414 }(i, raw) ··· 537 537 skeletonposts, 538 538 20, 539 539 func(ctx context.Context, raw *appbsky.FeedDefs_SkeletonFeedPost) (*appbsky.FeedDefs_FeedViewPost, error) { 540 - post, _, err := appbskyfeeddefs.PostView(ctx, raw.Post, sl, cs, BSKYIMAGECDN_URL, viewer, false) 540 + post, _, err := appbskyfeeddefs.PostView(ctx, raw.Post, sl, cs, BSKYIMAGECDN_URL, viewer, 2) 541 541 if err != nil { 542 542 return nil, err 543 543 }
+33 -9
shims/lex/app/bsky/feed/defs/embed.go
··· 2 2 3 3 import ( 4 4 "context" 5 + "fmt" 5 6 "log" 6 7 7 8 "github.com/bluesky-social/indigo/api/atproto" ··· 24 25 }} 25 26 } 26 27 27 - func PostView_Embed(ctx context.Context, postaturi string, feedPost *appbsky.FeedPost, sl *microcosm.MicrocosmClient, cs *microcosm.MicrocosmClient, imgcdn string, viewer *utils.DID) (*appbsky.FeedDefs_PostView_Embed, error) { 28 + func PostView_Embed(ctx context.Context, postaturi string, feedPost *appbsky.FeedPost, sl *microcosm.MicrocosmClient, cs *microcosm.MicrocosmClient, imgcdn string, viewer *utils.DID, disableTripleNestedRecord int) (*appbsky.FeedDefs_PostView_Embed, error) { 29 + log.Println("(PostView_Embed) hey its: " + postaturi + " at depth: " + fmt.Sprint(disableTripleNestedRecord)) 28 30 if feedPost.Embed == nil { 29 31 return nil, nil 30 32 } ··· 62 64 embedExternal := EmbedExternalViewExtractor(ctx, aturi, feedPost.Embed.EmbedExternal, sl, cs, imgcdn, viewer) 63 65 return embedExternal, nil 64 66 } 65 - if feedPost.Embed.EmbedRecord != nil { 67 + if feedPost.Embed.EmbedRecord != nil && disableTripleNestedRecord > 0 { 66 68 //return nil, nil 67 69 // sigh this is a big one 68 70 //embedType = "EmbedRecord" ··· 91 93 }); 92 94 */ 93 95 94 - var record *appbsky.EmbedRecord_View_Record = EmbedRecordViewExtractor(ctx, feedPost.Embed.EmbedRecord.Record, sl, cs, imgcdn, viewer) 96 + var record *appbsky.EmbedRecord_View_Record = EmbedRecordViewExtractor(ctx, feedPost.Embed.EmbedRecord.Record, sl, cs, imgcdn, viewer, disableTripleNestedRecord) 95 97 if record == nil { 96 98 return nil, nil 97 99 } ··· 120 122 // EmbedRecordWithMedia_View *EmbedRecordWithMedia_View 121 123 }, nil 122 124 } 123 - if feedPost.Embed.EmbedRecordWithMedia != nil { 125 + if feedPost.Embed.EmbedRecordWithMedia != nil && disableTripleNestedRecord > 0 { 124 126 //return nil, nil 125 127 //embedType = "EmbedRecordWithMedia" 126 128 127 - var record *appbsky.EmbedRecord_View_Record = EmbedRecordViewExtractor(ctx, feedPost.Embed.EmbedRecordWithMedia.Record.Record, sl, cs, imgcdn, viewer) 129 + var record *appbsky.EmbedRecord_View_Record = EmbedRecordViewExtractor(ctx, feedPost.Embed.EmbedRecordWithMedia.Record.Record, sl, cs, imgcdn, viewer, disableTripleNestedRecord) 128 130 if record == nil { 129 131 return nil, nil 130 132 } ··· 163 165 // } 164 166 } 165 167 if feedPost.Embed.EmbedRecordWithMedia.Media.EmbedExternal != nil { 166 - embedExternal := EmbedExternalViewExtractor(ctx, aturi, feedPost.Embed.EmbedExternal, sl, cs, imgcdn, viewer) 168 + embedExternal := EmbedExternalViewExtractor(ctx, aturi, feedPost.Embed.EmbedRecordWithMedia.Media.EmbedExternal, sl, cs, imgcdn, viewer) 167 169 embedmediaview = &appbsky.EmbedRecordWithMedia_View_Media{ 168 170 // EmbedImages_View *EmbedImages_View 169 171 // EmbedVideo_View *EmbedVideo_View ··· 275 277 } 276 278 } 277 279 278 - func EmbedRecordViewExtractor(ctx context.Context, record *atproto.RepoStrongRef, sl *microcosm.MicrocosmClient, cs *microcosm.MicrocosmClient, imgcdn string, viewer *utils.DID) *appbsky.EmbedRecord_View_Record { 280 + func EmbedRecordViewExtractor(ctx context.Context, record *atproto.RepoStrongRef, sl *microcosm.MicrocosmClient, cs *microcosm.MicrocosmClient, imgcdn string, viewer *utils.DID, disableTripleNestedRecord int) *appbsky.EmbedRecord_View_Record { 279 281 if record == nil { 280 282 log.Println("[EmbedRecord_View_Record] no record *(????)") 281 283 return nil ··· 296 298 return notFoundRecordEmbed(aturi.String()) 297 299 } 298 300 299 - postView, _, err := PostView(ctx, aturi.String(), sl, cs, imgcdn, viewer, true) 301 + postView, _, err := PostView(ctx, aturi.String(), sl, cs, imgcdn, viewer, disableTripleNestedRecord-1) 300 302 if err != nil { 301 303 log.Println("[EmbedRecord_View_Record] postview failed") 302 304 return notFoundRecordEmbed(aturi.String()) ··· 312 314 // } 313 315 314 316 // lexicontypedecoder := &util.LexiconTypeDecoder{Val: &postRecord} 317 + //var has string /*image | video | external*/ 318 + 319 + var embeds []*appbsky.EmbedRecord_ViewRecord_Embeds_Elem 320 + if postView.Embed != nil { 321 + if postView.Embed.EmbedImages_View != nil { 322 + embeds = []*appbsky.EmbedRecord_ViewRecord_Embeds_Elem{ 323 + { 324 + EmbedImages_View: postView.Embed.EmbedImages_View, 325 + }, 326 + } 327 + } 328 + if postView.Embed.EmbedVideo_View != nil { 329 + //has = "video" 330 + } 331 + if postView.Embed.EmbedExternal_View != nil { 332 + embeds = []*appbsky.EmbedRecord_ViewRecord_Embeds_Elem{ 333 + { 334 + EmbedExternal_View: postView.Embed.EmbedExternal_View, 335 + }, 336 + } 337 + } 338 + } 315 339 316 340 return &appbsky.EmbedRecord_View_Record{ 317 341 // EmbedRecord_ViewRecord *EmbedRecord_ViewRecord ··· 323 347 // Cid string `json:"cid" cborgen:"cid"` 324 348 Cid: postView.Cid, 325 349 // Embeds []*EmbedRecord_ViewRecord_Embeds_Elem `json:"embeds,omitempty" cborgen:"embeds,omitempty"` 326 - Embeds: nil, 350 + Embeds: embeds, 327 351 // IndexedAt string `json:"indexedAt" cborgen:"indexedAt"` 328 352 IndexedAt: postView.IndexedAt, 329 353 // Labels []*comatproto.LabelDefs_Label `json:"labels,omitempty" cborgen:"labels,omitempty"`
+9 -6
shims/lex/app/bsky/feed/defs/postview.go
··· 3 3 import ( 4 4 "context" 5 5 "encoding/json" 6 + "fmt" 7 + "log" 6 8 7 9 "github.com/bluesky-social/indigo/api/agnostic" 8 10 comatproto "github.com/bluesky-social/indigo/api/atproto" ··· 18 20 "tangled.org/whey.party/red-dwarf-server/shims/utils" 19 21 ) 20 22 21 - func PostView(ctx context.Context, postaturi string, sl *microcosm.MicrocosmClient, cs *microcosm.MicrocosmClient, imgcdn string, viewer *utils.DID, disableEmbed bool) (*appbsky.FeedDefs_PostView, *appbsky.FeedPost, error) { 23 + func PostView(ctx context.Context, postaturi string, sl *microcosm.MicrocosmClient, cs *microcosm.MicrocosmClient, imgcdn string, viewer *utils.DID, disableTripleNestedRecord int) (*appbsky.FeedDefs_PostView, *appbsky.FeedPost, error) { 24 + log.Println("(PostView) hey its: " + postaturi + " at depth: " + fmt.Sprint(disableTripleNestedRecord)) 22 25 aturi, err := syntax.ParseATURI(postaturi) 23 26 if err != nil { 24 27 return nil, nil, err ··· 41 44 return nil, nil, err 42 45 } 43 46 var postView_Embed *appbsky.FeedDefs_PostView_Embed 44 - if !disableEmbed { 45 - postView_Embed, err = PostView_Embed(ctx, postaturi, &postRecord, sl, cs, imgcdn, viewer) 46 - if err != nil { 47 - postView_Embed = nil 48 - } 47 + //if !disableTripleNestedRecord { 48 + postView_Embed, err = PostView_Embed(ctx, postaturi, &postRecord, sl, cs, imgcdn, viewer, disableTripleNestedRecord) 49 + if err != nil { 50 + postView_Embed = nil 49 51 } 52 + //} 50 53 51 54 profile, _, _ := appbskyactordefs.ProfileViewBasic(ctx, repoDID, sl, imgcdn) 52 55