aboutsummaryrefslogtreecommitdiff
path: root/backend/fetchers/profiles.go
diff options
context:
space:
mode:
Diffstat (limited to 'backend/fetchers/profiles.go')
-rw-r--r--backend/fetchers/profiles.go14
1 files changed, 9 insertions, 5 deletions
diff --git a/backend/fetchers/profiles.go b/backend/fetchers/profiles.go
index 01a27c0..3c0154a 100644
--- a/backend/fetchers/profiles.go
+++ b/backend/fetchers/profiles.go
@@ -128,7 +128,7 @@ func FetchHandleAndPDS(did string) (string, string, error) {
return handle, pds, nil
}
-func FetchProfile(did string, pdsURL string) (*general.Profile, error) {
+func FetchProfile(did, pdsURL string, cache *Cache) (*general.Profile, error) {
recordURL := fmt.Sprintf("%s/xrpc/com.atproto.repo.getRecord?repo=%s&collection=app.bsky.actor.profile&rkey=self", pdsURL, did)
resp, err := http.Get(recordURL)
@@ -159,20 +159,24 @@ func FetchProfile(did string, pdsURL string) (*general.Profile, error) {
bannerURL = fmt.Sprintf("https://cdn.bsky.app/img/banner/plain/%s/%s@jpeg", did, response.Value.Banner.Ref.Link)
}
- return &general.Profile{
+ profile := &general.Profile{
Handle: handle,
DisplayName: response.Value.DisplayName,
AvatarURL: avatarURL,
BannerURL: bannerURL,
Pronouns: response.Value.Pronouns,
- }, nil
+ }
+
+ cache.SetProfile(handle, profile)
+ return profile, nil
}
-func FetchProfiles(dids []string, pdsURL string) map[string]general.Profile {
+func FetchProfiles(dids []string, pdsURL string, cache *Cache) map[string]general.Profile {
profiles := make(map[string]general.Profile)
for _, did := range dids {
- profile, err := FetchProfile(did, pdsURL)
+ profile, err := FetchProfile(did, pdsURL, cache)
if err == nil {
+ cache.SetProfile(did, profile)
profiles[did] = *profile
}
}