aboutsummaryrefslogtreecommitdiff
path: root/backend/fetchers/app.bsky.go
diff options
context:
space:
mode:
Diffstat (limited to 'backend/fetchers/app.bsky.go')
-rw-r--r--backend/fetchers/app.bsky.go20
1 files changed, 11 insertions, 9 deletions
diff --git a/backend/fetchers/app.bsky.go b/backend/fetchers/app.bsky.go
index b6a133b..6b25f0b 100644
--- a/backend/fetchers/app.bsky.go
+++ b/backend/fetchers/app.bsky.go
@@ -5,6 +5,7 @@ import (
"fmt"
"llostre/backend/auth"
"llostre/backend/notes"
+ "log/slog"
"net/http"
)
@@ -12,22 +13,22 @@ type ListRecordsResponse struct {
Records []notes.AppBskyFeedPostRecord `json:"records"`
}
-func FetchAppBskyFeedPosts(did, pdsURL, accessToken string, keypair *auth.DPoPKeyPair) ([]notes.Note, error) {
+func FetchAppBskyFeedPosts(logger *slog.Logger, did, pdsURL, accessToken string, keypair *auth.DPoPKeyPair, notesCache *Cache) ([]notes.Note, error) {
url := fmt.Sprintf("%s/xrpc/com.atproto.repo.listRecords?repo=%s&collection=app.bsky.feed.post", pdsURL, did)
- fmt.Printf("Generating DPoP proof for: %s\n", url)
+ logger.Debug("generating DPoP proof", "url", url)
dpopProof, err := keypair.GenerateDPoPProof("GET", url, "")
if err != nil {
- fmt.Printf("DPoP generation failed: %v\n", err)
+ logger.Error("DPoP generation failed", "error", err)
return nil, err
}
- fmt.Printf("Making request to PDS\n")
+ logger.Debug("making request to PDS")
req, err := http.NewRequest("GET", url, nil)
if err != nil {
return nil, err
}
- req.Header.Set("Authorization", "Bearer "+accessToken)
+ req.Header.Set("Authorization", "Bearer " + accessToken)
req.Header.Set("DPoP", dpopProof)
resp, err := http.DefaultClient.Do(req)
@@ -43,18 +44,19 @@ func FetchAppBskyFeedPosts(did, pdsURL, accessToken string, keypair *auth.DPoPKe
profile, err := FetchProfile(did, pdsURL)
if err != nil {
- fmt.Printf("Profile fetch failed for %s: %v\n", did, err)
+ logger.Error("profile fetch failed", "did", did, "error", err)
} else {
- fmt.Printf("Fetched profile: %+v\n", profile)
+ logger.Debug("fetched profile")
}
- var posts []notes.Note
+ posts := make([]notes.Note, 0, len(response.Records))
for _, record := range response.Records {
bp, err := notes.AppBskyFeedPostFromRecord(record, profile)
if err != nil {
- fmt.Printf("skipping malformed record %s: %v\n", record.URI, err)
+ logger.Error("failed to convert record", "error", err, "uri", record.URI)
continue
}
+ notesCache.Set(bp.URI, bp)
posts = append(posts, *bp)
}