From 8f39d3c036588782f36d5ff90ce2839fd75fa496 Mon Sep 17 00:00:00 2001 From: Guillermo Serrahima Date: Thu, 19 Feb 2026 14:27:24 +0100 Subject: added bsky posts --- backend/fetchers/app.bsky.go | 47 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 backend/fetchers/app.bsky.go (limited to 'backend/fetchers') diff --git a/backend/fetchers/app.bsky.go b/backend/fetchers/app.bsky.go new file mode 100644 index 0000000..df89249 --- /dev/null +++ b/backend/fetchers/app.bsky.go @@ -0,0 +1,47 @@ +package fetchers + +import ( + "encoding/json" + "fmt" + "io" + "llostre/backend/notes" + "llostre/backend/records" + "net/http" +) + +type ListRecordsResponse struct { + Records []notes.AppBskyFeedPostRecord `json:"records"` +} + +func FetchBlueskyPosts(did string, pdsURL string) ([]notes.AppBskyFeedPostNote, error) { + url := fmt.Sprintf("%s/xrpc/com.atproto.repo.listRecords?repo=%s&collection=app.bsky.feed.post&limit=50", pdsURL, did) + + resp, err := http.Get(url) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + var response records.ListRecordsResponse + err = json.Unmarshal(body, &response) + if err != nil { + return nil, err + } + + var posts []notes.AppBskyFeedPostNote + for _, record := range response.Records { + bp, err := notes.AppBskyFeedPostFromRecord(record) + if err != nil { + fmt.Printf("skipping malformed record %s: %v\n", record.URI, err) + continue + } + posts = append(posts, *bp) + } + + return posts, nil +} -- cgit v1.2.3