diff options
| author | Guillermo Serrahima <dev@vylion.com> | 2026-02-19 14:27:24 +0100 |
|---|---|---|
| committer | Guillermo Serrahima <dev@vylion.com> | 2026-02-19 14:27:24 +0100 |
| commit | 8f39d3c036588782f36d5ff90ce2839fd75fa496 (patch) | |
| tree | 38bfd8304057828b4e30d704b093e79f6b931bb3 /backend/fetchers/app.bsky.go | |
| parent | b8614b16e958cbacfff05a8e2f79f8e4410654b8 (diff) | |
| download | llostre-8f39d3c036588782f36d5ff90ce2839fd75fa496.tar.xz llostre-8f39d3c036588782f36d5ff90ce2839fd75fa496.zip | |
added bsky posts
Diffstat (limited to 'backend/fetchers/app.bsky.go')
| -rw-r--r-- | backend/fetchers/app.bsky.go | 47 |
1 files changed, 47 insertions, 0 deletions
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 +} |
