@@ -11,29 +11,33 @@ func main() {
11
11
port := getPort ()
12
12
fmt .Printf ("# Proxy API\n " )
13
13
fmt .Printf ("# Server listening on port %s...\n " , port )
14
- fasthttp .ListenAndServe (":" + port , receiveHandler )
14
+ fasthttp .ListenAndServe (":" + port , requestHandler )
15
15
}
16
16
17
- func receiveHandler (ctx * fasthttp.RequestCtx ) {
18
- if string (ctx .Method ()) != fasthttp .MethodPost {
19
- sendErrorResponse (ctx , fasthttp .StatusMethodNotAllowed , "Only POST requests are allowed" )
20
- return
21
- }
22
-
23
- targetURL := string (ctx .Request .Header .Peek ("proxy-url" ))
17
+ func requestHandler (ctx * fasthttp.RequestCtx ) {
18
+ targetURL := string (ctx .Request .Header .Peek ("X-Proxy-Url" ))
24
19
if targetURL == "" {
25
- sendErrorResponse (ctx , fasthttp .StatusBadRequest , "Missing proxy-url header" )
20
+ sendErrorResponse (ctx , fasthttp .StatusBadRequest , "Missing X-Proxy-Url header" )
26
21
return
27
22
}
28
23
29
- statusCode , body , err := fasthttp .Post (nil , targetURL , ctx .PostArgs ())
30
- if err != nil {
31
- sendErrorResponse (ctx , fasthttp .StatusInternalServerError , "Failed to send: " + err .Error ())
24
+ req := fasthttp .AcquireRequest ()
25
+ resp := fasthttp .AcquireResponse ()
26
+ defer fasthttp .ReleaseRequest (req )
27
+ defer fasthttp .ReleaseResponse (resp )
28
+
29
+ ctx .Request .Header .CopyTo (& req .Header )
30
+ req .SetBody (ctx .PostBody ())
31
+ req .SetRequestURI (targetURL )
32
+ req .Header .SetUserAgent ("Proxy API" )
33
+
34
+ if err := fasthttp .Do (req , resp ); err != nil {
35
+ sendErrorResponse (ctx , fasthttp .StatusInternalServerError , err .Error ())
32
36
return
33
37
}
34
38
35
- ctx . SetStatusCode ( statusCode )
36
- ctx .SetBody (body )
39
+ resp . Header . CopyTo ( & ctx . Response . Header )
40
+ ctx .SetBody (resp . Body () )
37
41
}
38
42
39
43
func sendErrorResponse (ctx * fasthttp.RequestCtx , statusCode int , message string ) {
0 commit comments