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)
|
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)
|
||||||
|
9
main.go
9
main.go
@ -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"))
|
||||||
|
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.
|
// 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)
|
||||||
|
@ -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)
|
||||||
|
21
utils.go
21
utils.go
@ -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)
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user