diff options
Diffstat (limited to 'backend/fetchers/profiles.go')
| -rw-r--r-- | backend/fetchers/profiles.go | 14 |
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 } } |
