@@ -205,74 +205,18 @@ In `functions.go`, convert Google Cloud Function requests to Fiber and route the
205205package app
206206
207207import (
208- " io"
209- " net"
210208 " net/http"
211209
212210 " github.com/gofiber/fiber/v2"
213- " github.com/gofiber/fiber/v2/utils"
214- " github.com/valyala/fasthttp"
211+ adaptor " github.com/gofiber/fiber/v2/middleware/adaptor"
215212)
216213
217214// CloudFunctionRouteToFiber route cloud function http.Handler to *fiber.App
218215// Internally, google calls the function with the /execute base URL
219- func CloudFunctionRouteToFiber (fiberApp *fiber .App , w http .ResponseWriter , r *http .Request ) error {
220-
221- // Convert net/http -> fasthttp Ctx
222- ctx := ConvertNetHTTPRequestToFastHTTPCtx (r, w)
223-
224- // Run Fiber
225- fiberApp.Handler ()(ctx)
226-
227- // Convert fasthttp Ctx -> net/http
228- ctx.Response .Header .VisitAll (func (k, v []byte ) {
229- w.Header ().Add (string (k), string (v))
230- })
231- w.WriteHeader (ctx.Response .StatusCode ())
232- _ , err := w.Write (ctx.Response .Body ())
233-
234- return err
216+ func CloudFunctionRouteToFiber (fiberApp *fiber .App , w http .ResponseWriter , r *http .Request ) {
217+ adaptor.FiberApp (fiberApp)(w, r)
235218}
236219
237- // ConvertNetHTTPRequestToFastHTTPCtx converts a net/http.Request to fasthttp.RequestCtx
238- func ConvertNetHTTPRequestToFastHTTPCtx (r *http .Request , w http .ResponseWriter ) *fasthttp .RequestCtx {
239- // New fasthttp request
240- req := fasthttp.AcquireRequest ()
241- defer fasthttp.ReleaseRequest (req)
242- // Convert net/http -> fasthttp request
243- if r.Body != nil {
244- n , err := io.Copy (req.BodyWriter (), r.Body )
245- req.Header .SetContentLength (int (n))
246-
247- if err != nil {
248- http.Error (w, utils.StatusMessage (fiber.StatusInternalServerError ), fiber.StatusInternalServerError )
249- return nil
250- }
251- }
252- req.Header .SetMethod (r.Method )
253- req.SetRequestURI (r.RequestURI )
254- req.SetHost (r.Host )
255- req.Header .SetHost (r.Host )
256- for key , val := range r.Header {
257- for _ , v := range val {
258- req.Header .Set (key, v)
259- }
260- }
261-
262- if _ , _ , err := net.SplitHostPort (r.RemoteAddr ); err != nil && err.(*net.AddrError ).Err == " missing port in address" {
263- r.RemoteAddr = net.JoinHostPort (r.RemoteAddr , " 80" )
264- }
265- remoteAddr , err := net.ResolveTCPAddr (" tcp" , r.RemoteAddr )
266- if err != nil {
267- http.Error (w, utils.StatusMessage (fiber.StatusInternalServerError ), fiber.StatusInternalServerError )
268- return nil
269- }
270-
271- var fctx fasthttp.RequestCtx
272- fctx.Init (req, remoteAddr, nil )
273-
274- return &fctx
275- }
276220```
277221
278222## Main Application Entry
@@ -306,13 +250,9 @@ func Start(addr string) error {
306250 return app.Listen (addr)
307251}
308252
309- // MyCloudFunction Exported http.HandlerFunc to be deployed to as a Cloud Function
310- func MyCloudFunction (w http .ResponseWriter , r *http .Request ) {
311- err := CloudFunctionRouteToFiber (app, w, r)
312- if err != nil {
313- fmt.Fprintf (w, " err : %v " , err)
314- return
315- }
253+ // ServerFunction Exported http.HandlerFunc to be deployed to as a Cloud Function
254+ func ServerFunction (w http .ResponseWriter , r *http .Request ) {
255+ CloudFunctionRouteToFiber (app, w, r)
316256}
317257```
318258
0 commit comments