Logs
erockmKua
created pr with ps-48
on erockmKua
added ps-49
on erockmKua
added ps-50
on Patchsets
Diff ↕
refactor(pgs): use httputil rev proxy to external service
Eric Bower <me@erock.io>
pgs/api.go | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-)
1From 6de64fd62a4ede2c8dc7cde91a4984f81a45a173 Mon Sep 17 00:00:00 2001
2From: Eric Bower <me@erock.io>
3Date: Sun, 13 Oct 2024 22:28:12 -0400
4Subject: [PATCH] refactor(pgs): use httputil rev proxy to external service
5
6---
7 pgs/api.go | 22 ++++++++++------------
8 1 file changed, 10 insertions(+), 12 deletions(-)
9
10diff --git a/pgs/api.go b/pgs/api.go
11index a566677..acb28a6 100644
12--- a/pgs/api.go
13+++ b/pgs/api.go
14@@ -13,6 +13,7 @@ import (
15 "strings"
16 "time"
17
18+ "net/http/httputil"
19 _ "net/http/pprof"
20
21 "github.com/gorilla/feeds"
22@@ -229,24 +230,21 @@ func (h *AssetHandler) handle(logger *slog.Logger, w http.ResponseWriter, r *htt
23 "destination", fp.Filepath,
24 "status", fp.Status,
25 )
26- // fetch content from url and serve it
27- resp, err := http.Get(fp.Filepath)
28+
29+ destUrl, err := url.Parse(fp.Filepath)
30 if err != nil {
31- logger.Error(
32- "external service not found",
33- "err", err,
34- "status", http.StatusNotFound,
35- )
36- http.Error(w, "404 not found", http.StatusNotFound)
37+ http.Error(w, err.Error(), http.StatusInternalServerError)
38 return
39 }
40+ proxy := httputil.NewSingleHostReverseProxy(destUrl)
41
42- w.Header().Set("content-type", resp.Header.Get("content-type"))
43- w.WriteHeader(status)
44- _, err = io.Copy(w, resp.Body)
45+ req, err := http.NewRequest("GET", fp.Filepath, nil)
46 if err != nil {
47- logger.Error("io copy", "err", err.Error())
48+ http.Error(w, err.Error(), http.StatusInternalServerError)
49+ return
50 }
51+
52+ proxy.ServeHTTP(w, req)
53 return
54 }
55
56
57base-commit: ae3f38949770e4b92367f074ee9e172f93e518b8
58--
592.45.2
60
ps-48
by
erockmKua
on Diff ↕
fix: dont need to create a new request
Eric Bower <me@erock.io>
pgs/api.go | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-)
1From 7581b29116c46d4ddc53b4bb151d9afadee5e488 Mon Sep 17 00:00:00 2001
2From: Eric Bower <me@erock.io>
3Date: Sun, 13 Oct 2024 22:34:59 -0400
4Subject: [PATCH 2/2] fix: dont need to create a new request
5
6---
7 pgs/api.go | 9 +--------
8 1 file changed, 1 insertion(+), 8 deletions(-)
9
10diff --git a/pgs/api.go b/pgs/api.go
11index acb28a6..62afff5 100644
12--- a/pgs/api.go
13+++ b/pgs/api.go
14@@ -237,14 +237,7 @@ func (h *AssetHandler) handle(logger *slog.Logger, w http.ResponseWriter, r *htt
15 return
16 }
17 proxy := httputil.NewSingleHostReverseProxy(destUrl)
18-
19- req, err := http.NewRequest("GET", fp.Filepath, nil)
20- if err != nil {
21- http.Error(w, err.Error(), http.StatusInternalServerError)
22- return
23- }
24-
25- proxy.ServeHTTP(w, req)
26+ proxy.ServeHTTP(w, r)
27 return
28 }
29
30--
312.45.2
32
ps-49
by
erockmKua
on Diff ↕
chore: get it to work
Eric Bower <me@erock.io>
pgs/api.go | 6 ++++++ 1 file changed, 6 insertions(+)
1From 3050d2040a07127136fcc164813d2d7fce38eba2 Mon Sep 17 00:00:00 2001
2From: Eric Bower <me@erock.io>
3Date: Sun, 13 Oct 2024 23:30:17 -0400
4Subject: [PATCH 3/3] chore: get it to work
5
6---
7 pgs/api.go | 6 ++++++
8 1 file changed, 6 insertions(+)
9
10diff --git a/pgs/api.go b/pgs/api.go
11index 62afff5..47b5cae 100644
12--- a/pgs/api.go
13+++ b/pgs/api.go
14@@ -237,6 +237,12 @@ func (h *AssetHandler) handle(logger *slog.Logger, w http.ResponseWriter, r *htt
15 return
16 }
17 proxy := httputil.NewSingleHostReverseProxy(destUrl)
18+ oldDirector := proxy.Director
19+ proxy.Director = func(r *http.Request) {
20+ oldDirector(r)
21+ r.Host = destUrl.Host
22+ r.URL = destUrl
23+ }
24 proxy.ServeHTTP(w, r)
25 return
26 }
27--
282.45.2
29
ps-50
by
erockmKua
on refactor(pgs): use httputil rev proxy to external service
Eric Bower <me@erock.io>
pgs/api.go | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-)
1From 6de64fd62a4ede2c8dc7cde91a4984f81a45a173 Mon Sep 17 00:00:00 2001
2From: Eric Bower <me@erock.io>
3Date: Sun, 13 Oct 2024 22:28:12 -0400
4Subject: [PATCH 1/3] refactor(pgs): use httputil rev proxy to external service
5
6---
7 pgs/api.go | 22 ++++++++++------------
8 1 file changed, 10 insertions(+), 12 deletions(-)
9
10diff --git a/pgs/api.go b/pgs/api.go
11index a566677..acb28a6 100644
12--- a/pgs/api.go
13+++ b/pgs/api.go
14@@ -13,6 +13,7 @@ import (
15 "strings"
16 "time"
17
18+ "net/http/httputil"
19 _ "net/http/pprof"
20
21 "github.com/gorilla/feeds"
22@@ -229,24 +230,21 @@ func (h *AssetHandler) handle(logger *slog.Logger, w http.ResponseWriter, r *htt
23 "destination", fp.Filepath,
24 "status", fp.Status,
25 )
26- // fetch content from url and serve it
27- resp, err := http.Get(fp.Filepath)
28+
29+ destUrl, err := url.Parse(fp.Filepath)
30 if err != nil {
31- logger.Error(
32- "external service not found",
33- "err", err,
34- "status", http.StatusNotFound,
35- )
36- http.Error(w, "404 not found", http.StatusNotFound)
37+ http.Error(w, err.Error(), http.StatusInternalServerError)
38 return
39 }
40+ proxy := httputil.NewSingleHostReverseProxy(destUrl)
41
42- w.Header().Set("content-type", resp.Header.Get("content-type"))
43- w.WriteHeader(status)
44- _, err = io.Copy(w, resp.Body)
45+ req, err := http.NewRequest("GET", fp.Filepath, nil)
46 if err != nil {
47- logger.Error("io copy", "err", err.Error())
48+ http.Error(w, err.Error(), http.StatusInternalServerError)
49+ return
50 }
51+
52+ proxy.ServeHTTP(w, req)
53 return
54 }
55
56
57base-commit: ae3f38949770e4b92367f074ee9e172f93e518b8
58--
592.45.2
60
fix: dont need to create a new request
Eric Bower <me@erock.io>
pgs/api.go | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-)
1From 7581b29116c46d4ddc53b4bb151d9afadee5e488 Mon Sep 17 00:00:00 2001
2From: Eric Bower <me@erock.io>
3Date: Sun, 13 Oct 2024 22:34:59 -0400
4Subject: [PATCH 2/3] fix: dont need to create a new request
5
6---
7 pgs/api.go | 9 +--------
8 1 file changed, 1 insertion(+), 8 deletions(-)
9
10diff --git a/pgs/api.go b/pgs/api.go
11index acb28a6..62afff5 100644
12--- a/pgs/api.go
13+++ b/pgs/api.go
14@@ -237,14 +237,7 @@ func (h *AssetHandler) handle(logger *slog.Logger, w http.ResponseWriter, r *htt
15 return
16 }
17 proxy := httputil.NewSingleHostReverseProxy(destUrl)
18-
19- req, err := http.NewRequest("GET", fp.Filepath, nil)
20- if err != nil {
21- http.Error(w, err.Error(), http.StatusInternalServerError)
22- return
23- }
24-
25- proxy.ServeHTTP(w, req)
26+ proxy.ServeHTTP(w, r)
27 return
28 }
29
30--
312.45.2
32
chore: get it to work
Eric Bower <me@erock.io>
pgs/api.go | 6 ++++++ 1 file changed, 6 insertions(+)
1From 3050d2040a07127136fcc164813d2d7fce38eba2 Mon Sep 17 00:00:00 2001
2From: Eric Bower <me@erock.io>
3Date: Sun, 13 Oct 2024 23:30:17 -0400
4Subject: [PATCH 3/3] chore: get it to work
5
6---
7 pgs/api.go | 6 ++++++
8 1 file changed, 6 insertions(+)
9
10diff --git a/pgs/api.go b/pgs/api.go
11index 62afff5..47b5cae 100644
12--- a/pgs/api.go
13+++ b/pgs/api.go
14@@ -237,6 +237,12 @@ func (h *AssetHandler) handle(logger *slog.Logger, w http.ResponseWriter, r *htt
15 return
16 }
17 proxy := httputil.NewSingleHostReverseProxy(destUrl)
18+ oldDirector := proxy.Director
19+ proxy.Director = func(r *http.Request) {
20+ oldDirector(r)
21+ r.Host = destUrl.Host
22+ r.URL = destUrl
23+ }
24 proxy.ServeHTTP(w, r)
25 return
26 }
27--
282.45.2
29