Refactor duplicate code

This commit is contained in:
Gianni Carafa
2023-11-02 22:06:16 +01:00
parent 7f4d749c55
commit 62e03a384a
3 changed files with 21 additions and 60 deletions

View File

@@ -4,8 +4,6 @@ import (
_ "embed"
"log"
"net/http"
"net/url"
"github.com/gofiber/fiber/v2"
)
@@ -17,33 +15,13 @@ func Api(c *fiber.Ctx) error {
// Get the url from the URL
urlQuery := c.Params("*")
u, err := url.Parse(urlQuery)
body, req, resp, err := fetchSite(urlQuery)
if err != nil {
log.Println("ERROR:", err)
c.SendStatus(500)
return c.SendString(err.Error())
}
log.Println(u.String())
// Fetch the site
client := &http.Client{}
req, _ := http.NewRequest("GET", u.String(), nil)
req.Header.Set("User-Agent", UserAgent)
req.Header.Set("X-Forwarded-For", ForwardedFor)
req.Header.Set("Referer", u.String())
req.Header.Set("Host", u.Host)
resp, err := client.Do(req)
if err != nil {
return c.SendString(err.Error())
}
defer resp.Body.Close()
bodyB, err := io.ReadAll(resp.Body)
if err != nil {
log.Println("ERROR", err)
return c.SendString(err.Error())
}
body := rewriteHtml(bodyB, u)
response := Response{
Version: version,
Body: body,

View File

@@ -20,13 +20,23 @@ func ProxySite(c *fiber.Ctx) error {
// Get the url from the URL
urlQuery := c.Params("*")
u, err := url.Parse(urlQuery)
body, _, resp, err := fetchSite(urlQuery)
if err != nil {
log.Println("ERROR", err)
log.Println("ERROR:", err)
c.SendStatus(500)
return c.SendString(err.Error())
}
c.Set("Content-Type", resp.Header.Get("Content-Type"))
return c.SendString(body)
}
func fetchSite(urlQuery string) (string, *http.Request, *http.Response, error) {
u, err := url.Parse(urlQuery)
if err != nil {
return "", nil, nil, err
}
log.Println(u.String())
// Fetch the site
@@ -39,20 +49,17 @@ func ProxySite(c *fiber.Ctx) error {
resp, err := client.Do(req)
if err != nil {
return c.SendString(err.Error())
return "", nil, nil, err
}
defer resp.Body.Close()
bodyB, err := io.ReadAll(resp.Body)
if err != nil {
log.Println("ERROR", err)
c.SendStatus(500)
return c.SendString(err.Error())
return "", nil, nil, err
}
body := rewriteHtml(bodyB, u)
c.Set("Content-Type", resp.Header.Get("Content-Type"))
return c.SendString(body)
return body, req, resp, nil
}
func rewriteHtml(bodyB []byte, u *url.URL) string {

View File

@@ -1,10 +1,7 @@
package handlers
import (
"io"
"log"
"net/http"
"net/url"
"github.com/gofiber/fiber/v2"
)
@@ -13,32 +10,11 @@ func Raw(c *fiber.Ctx) error {
// Get the url from the URL
urlQuery := c.Params("*")
u, err := url.Parse(urlQuery)
body, _, _, err := fetchSite(urlQuery)
if err != nil {
log.Println("ERROR:", err)
c.SendStatus(500)
return c.SendString(err.Error())
}
log.Println(u.String())
// Fetch the site
client := &http.Client{}
req, _ := http.NewRequest("GET", u.String(), nil)
req.Header.Set("User-Agent", UserAgent)
req.Header.Set("X-Forwarded-For", ForwardedFor)
req.Header.Set("Referer", u.String())
req.Header.Set("Host", u.Host)
resp, err := client.Do(req)
if err != nil {
return c.SendString(err.Error())
}
defer resp.Body.Close()
bodyB, err := io.ReadAll(resp.Body)
if err != nil {
log.Println("ERROR", err)
return c.SendString(err.Error())
}
body := rewriteHtml(bodyB, u)
return c.SendString(body)
}