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)
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)

View File

@ -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"))

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.
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)

View File

@ -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)

View File

@ -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)
}