mirror of
https://codeberg.org/video-prize-ranch/rimgo.git
synced 2025-07-17 16:48:24 +00:00
add cache, fix query
This commit is contained in:
parent
d17d06853f
commit
be88c02d99
@ -1,39 +1,35 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"codeberg.org/rimgo/rimgo/utils"
|
||||
"github.com/patrickmn/go-cache"
|
||||
"github.com/tidwall/gjson"
|
||||
)
|
||||
|
||||
func (client *Client) FetchTrending(section, sort, page string) ([]Submission, error) {
|
||||
req, err := http.NewRequest("GET", "https://api.imgur.com/post/v1/posts?client_id="+client.ClientID+"&filter[section]=eq:"+section+"&include=cover,viral&page=1", nil)
|
||||
cacheData, found := client.Cache.Get(fmt.Sprintf("trending-%s-%s-%s", section, sort, page))
|
||||
if found {
|
||||
return cacheData.([]Submission), nil
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("GET", "https://api.imgur.com/post/v1/posts", nil)
|
||||
if err != nil {
|
||||
return []Submission{}, err
|
||||
}
|
||||
utils.SetReqHeaders(req)
|
||||
|
||||
q := req.URL.Query()
|
||||
q.Add("client_id", client.ClientID)
|
||||
q.Add("include", "cover")
|
||||
q.Add("page", page)
|
||||
|
||||
switch section {
|
||||
case "hot":
|
||||
q.Add("filter[section]", "eq:hot")
|
||||
q.Add("sort", "-viral")
|
||||
case "new":
|
||||
q.Add("filter[section]", "eq:new")
|
||||
q.Add("sort", "-viral")
|
||||
case "top":
|
||||
q.Add("filter[section]", "eq:top")
|
||||
q.Add("sort", "-viral")
|
||||
default:
|
||||
q.Add("filter[section]", "eq:hot")
|
||||
section = "hot"
|
||||
}
|
||||
switch sort {
|
||||
case "newest":
|
||||
q.Add("filter[window]", "week")
|
||||
@ -48,6 +44,18 @@ func (client *Client) FetchTrending(section, sort, page string) ([]Submission, e
|
||||
q.Add("sort", "-viral")
|
||||
sort = "popular"
|
||||
}
|
||||
switch section {
|
||||
case "hot":
|
||||
q.Add("filter[section]", "eq:hot")
|
||||
case "new":
|
||||
q.Add("filter[section]", "eq:new")
|
||||
case "top":
|
||||
q.Add("filter[section]", "eq:top")
|
||||
q.Add("filter[window]", "day")
|
||||
default:
|
||||
q.Add("filter[section]", "eq:hot")
|
||||
section = "hot"
|
||||
}
|
||||
|
||||
req.URL.RawQuery = q.Encode()
|
||||
|
||||
@ -56,11 +64,12 @@ func (client *Client) FetchTrending(section, sort, page string) ([]Submission, e
|
||||
return []Submission{}, err
|
||||
}
|
||||
|
||||
body, err := ioutil.ReadAll(res.Body)
|
||||
body, err := io.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
return []Submission{}, err
|
||||
}
|
||||
|
||||
os.Stdout.Write(body)
|
||||
data := gjson.Parse(string(body))
|
||||
|
||||
wg := sync.WaitGroup{}
|
||||
@ -95,6 +104,7 @@ func (client *Client) FetchTrending(section, sort, page string) ([]Submission, e
|
||||
|
||||
wg.Wait()
|
||||
|
||||
client.Cache.Set(fmt.Sprintf("trending-%s-%s-%s", section, sort, page), posts, cache.DefaultExpiration)
|
||||
// TODO: Cache trending
|
||||
// client.Cache.Set(tag+sort+page+"-tag", tagData, cache.DefaultExpiration)
|
||||
return posts, nil
|
||||
|
@ -2,7 +2,7 @@
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>{{query}} - rimgo</title>
|
||||
<title>Trending - rimgo</title>
|
||||
|
||||
{{> partials/head }}
|
||||
</head>
|
||||
|
Loading…
Reference in New Issue
Block a user