feat: use custom http client instead of default one

This commit is contained in:
rramiachraf 2023-03-12 13:29:33 +01:00
parent 213f90d779
commit 4926480a7e
5 changed files with 32 additions and 6 deletions

View File

@ -56,7 +56,7 @@ func (s *song) parseSongData(doc *goquery.Document) {
songID := strings.Replace(attr, "genius://songs/", "", 1) songID := strings.Replace(attr, "genius://songs/", "", 1)
u := fmt.Sprintf("https://genius.com/api/songs/%s?text_format=plain", songID) 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 { if err != nil {
logger.Errorln(err) logger.Errorln(err)
} }
@ -112,7 +112,7 @@ func lyricsHandler(w http.ResponseWriter, r *http.Request) {
} }
url := fmt.Sprintf("https://genius.com/%s-lyrics", id) url := fmt.Sprintf("https://genius.com/%s-lyrics", id)
resp, err := http.Get(url) resp, err := sendRequest(url)
if err != nil { if err != nil {
logger.Errorln(err) logger.Errorln(err)
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)

View File

@ -14,8 +14,13 @@ import (
) )
var logger = logrus.New() var logger = logrus.New()
var client = &http.Client{}
func main() { func main() {
client = &http.Client{
Timeout: 20 * time.Second,
}
c, err := bigcache.NewBigCache(bigcache.DefaultConfig(time.Hour * 24)) c, err := bigcache.NewBigCache(bigcache.DefaultConfig(time.Hour * 24))
if err != nil { if err != nil {
logger.Fatalln("can't initialize caching") logger.Fatalln("can't initialize caching")
@ -42,8 +47,8 @@ func main() {
server := &http.Server{ server := &http.Server{
Handler: r, Handler: r,
WriteTimeout: 10 * time.Second, WriteTimeout: 25 * time.Second,
ReadTimeout: 10 * time.Second, ReadTimeout: 25 * time.Second,
} }
port, _ := strconv.Atoi(os.Getenv("PORT")) port, _ := strconv.Atoi(os.Getenv("PORT"))

View File

@ -47,7 +47,7 @@ func proxyHandler(w http.ResponseWriter, r *http.Request) {
// first segment of URL resize the image to reduce bandwith usage. // 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) 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 { if err != nil {
logger.Errorln(err) logger.Errorln(err)
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)

View File

@ -37,7 +37,7 @@ func searchHandler(w http.ResponseWriter, r *http.Request) {
query := r.URL.Query().Get("q") query := r.URL.Query().Get("q")
url := fmt.Sprintf(`https://genius.com/api/search/multi?q=%s`, query) url := fmt.Sprintf(`https://genius.com/api/search/multi?q=%s`, query)
res, err := http.Get(url) res, err := sendRequest(url)
if err != nil { if err != nil {
logger.Errorln(err) logger.Errorln(err)
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)

View File

@ -4,6 +4,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"net/http" "net/http"
"net/url"
"path" "path"
"text/template" "text/template"
@ -76,3 +77,23 @@ func render(n string, w http.ResponseWriter, data interface{}) {
return 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)
}