feat: use custom http client instead of default one
This commit is contained in:
parent
213f90d779
commit
4926480a7e
@ -56,7 +56,7 @@ func (s *song) parseSongData(doc *goquery.Document) {
|
||||
songID := strings.Replace(attr, "genius://songs/", "", 1)
|
||||
u := fmt.Sprintf("https://genius.com/api/songs/%s?text_format=plain", songID)
|
||||
|
||||
res, err := http.Get(u)
|
||||
res, err := sendRequest(u)
|
||||
if err != nil {
|
||||
logger.Errorln(err)
|
||||
}
|
||||
@ -112,7 +112,7 @@ func lyricsHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("https://genius.com/%s-lyrics", id)
|
||||
resp, err := http.Get(url)
|
||||
resp, err := sendRequest(url)
|
||||
if err != nil {
|
||||
logger.Errorln(err)
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
|
9
main.go
9
main.go
@ -14,8 +14,13 @@ import (
|
||||
)
|
||||
|
||||
var logger = logrus.New()
|
||||
var client = &http.Client{}
|
||||
|
||||
func main() {
|
||||
client = &http.Client{
|
||||
Timeout: 20 * time.Second,
|
||||
}
|
||||
|
||||
c, err := bigcache.NewBigCache(bigcache.DefaultConfig(time.Hour * 24))
|
||||
if err != nil {
|
||||
logger.Fatalln("can't initialize caching")
|
||||
@ -42,8 +47,8 @@ func main() {
|
||||
|
||||
server := &http.Server{
|
||||
Handler: r,
|
||||
WriteTimeout: 10 * time.Second,
|
||||
ReadTimeout: 10 * time.Second,
|
||||
WriteTimeout: 25 * time.Second,
|
||||
ReadTimeout: 25 * time.Second,
|
||||
}
|
||||
|
||||
port, _ := strconv.Atoi(os.Getenv("PORT"))
|
||||
|
2
proxy.go
2
proxy.go
@ -47,7 +47,7 @@ func proxyHandler(w http.ResponseWriter, r *http.Request) {
|
||||
// first segment of URL resize the image to reduce bandwith usage.
|
||||
url := fmt.Sprintf("https://t2.genius.com/unsafe/300x300/https://images.genius.com/%s.%s", f, ext)
|
||||
|
||||
res, err := http.Get(url)
|
||||
res, err := sendRequest(url)
|
||||
if err != nil {
|
||||
logger.Errorln(err)
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
|
@ -37,7 +37,7 @@ func searchHandler(w http.ResponseWriter, r *http.Request) {
|
||||
query := r.URL.Query().Get("q")
|
||||
url := fmt.Sprintf(`https://genius.com/api/search/multi?q=%s`, query)
|
||||
|
||||
res, err := http.Get(url)
|
||||
res, err := sendRequest(url)
|
||||
if err != nil {
|
||||
logger.Errorln(err)
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
|
21
utils.go
21
utils.go
@ -4,6 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"path"
|
||||
"text/template"
|
||||
|
||||
@ -76,3 +77,23 @@ func render(n string, w http.ResponseWriter, data interface{}) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
const UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
|
||||
|
||||
func sendRequest(u string) (*http.Response, error) {
|
||||
url, err := url.Parse(u)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req := &http.Request{
|
||||
Method: http.MethodGet,
|
||||
URL: url,
|
||||
Header: map[string][]string{
|
||||
"Accept-Language": {"en-US"},
|
||||
"User-Agent": {UA},
|
||||
},
|
||||
}
|
||||
|
||||
return client.Do(req)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user