mirror of
https://codeberg.org/video-prize-ranch/rimgo.git
synced 2025-12-13 11:45:18 +00:00
Add user favorites (#133)
Closes #10 Co-authored-by: video-prize-ranch <cb.8a3w5@simplelogin.co> Reviewed-on: https://codeberg.org/rimgo/rimgo/pulls/133 Reviewed-by: video-prize-ranch <video-prize-ranch@noreply.codeberg.org> Co-authored-by: orangix <uleo8b8g@anonaddy.me> Co-committed-by: orangix <uleo8b8g@anonaddy.me>
This commit is contained in:
committed by
video-prize-ranch
parent
877ee7faa9
commit
0fea1e46a3
53
api/user.go
53
api/user.go
@@ -70,7 +70,7 @@ func (client *Client) FetchUser(username string) (User, error) {
|
||||
}
|
||||
|
||||
func (client *Client) FetchSubmissions(username string, sort string, page string) ([]Submission, error) {
|
||||
cacheData, found := client.Cache.Get(username + "-submissions")
|
||||
cacheData, found := client.Cache.Get(username + "-submissions-" + sort + page)
|
||||
if found {
|
||||
return cacheData.([]Submission), nil
|
||||
}
|
||||
@@ -98,7 +98,56 @@ func (client *Client) FetchSubmissions(username string, sort string, page string
|
||||
)
|
||||
wg.Wait()
|
||||
|
||||
client.Cache.Set(username+"-submissions", submissions, 15*time.Minute)
|
||||
client.Cache.Set(username+"-submissions-"+sort+page, submissions, 15*time.Minute)
|
||||
return submissions, nil
|
||||
}
|
||||
|
||||
func (client *Client) FetchUserFavorites(username string, sort string, page string) ([]Submission, error) {
|
||||
cacheData, found := client.Cache.Get(username + "-favorites-" + sort + page)
|
||||
if found {
|
||||
return cacheData.([]Submission), nil
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("GET", "https://api.imgur.com/3/account/"+username+"/gallery_favorites/"+page+"/"+sort, nil)
|
||||
if err != nil {
|
||||
return []Submission{}, err
|
||||
}
|
||||
utils.SetReqHeaders(req)
|
||||
q := req.URL.Query()
|
||||
q.Add("client_id", client.ClientID)
|
||||
req.URL.RawQuery = q.Encode()
|
||||
|
||||
res, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
return []Submission{}, err
|
||||
}
|
||||
|
||||
body, err := io.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
return []Submission{}, err
|
||||
}
|
||||
|
||||
data := gjson.Parse(string(body))
|
||||
|
||||
submissions := []Submission{}
|
||||
|
||||
wg := sync.WaitGroup{}
|
||||
data.Get("data").ForEach(
|
||||
func(key, value gjson.Result) bool {
|
||||
wg.Add(1)
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
submissions = append(submissions, parseSubmission(value))
|
||||
}()
|
||||
|
||||
return true
|
||||
},
|
||||
)
|
||||
wg.Wait()
|
||||
|
||||
client.Cache.Set(username+"-favorites-"+sort+page, submissions, 15*time.Minute)
|
||||
return submissions, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user