From 4ad1167284ebb849410d36a10c3e8119e76fc17e Mon Sep 17 00:00:00 2001 From: Reed Allman Date: Wed, 2 Aug 2017 15:40:50 -0700 Subject: [PATCH] simplify env var setting, precisely allocate maps --- api/server/runner.go | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/api/server/runner.go b/api/server/runner.go index dae8a72db..dae350af0 100644 --- a/api/server/runner.go +++ b/api/server/runner.go @@ -142,19 +142,6 @@ func (s *Server) serve(ctx context.Context, c *gin.Context, appName string, rout if route.Format == "" { route.Format = "default" } - envVars := map[string]string{ - "METHOD": c.Request.Method, - "APP_NAME": appName, - "ROUTE": route.Path, - "REQUEST_URL": fmt.Sprintf("%v//%v%v", func() string { - if c.Request.TLS == nil { - return "http" - } - return "https" - }(), c.Request.Host, c.Request.URL.String()), - "CALL_ID": reqID, - "FN_FORMAT": route.Format, - } // baseVars are the vars on the route & app, not on this specific request [for hot functions] baseVars := make(map[string]string, len(app.Config)+len(route.Config)+3) @@ -165,15 +152,29 @@ func (s *Server) serve(ctx context.Context, c *gin.Context, appName string, rout // app config for k, v := range app.Config { k = toEnvName("", k) - envVars[k] = v baseVars[k] = v } for k, v := range route.Config { k = toEnvName("", k) - envVars[k] = v baseVars[k] = v } + // envVars contains the full set of env vars, per request + base + envVars := make(map[string]string, len(baseVars)+len(params)+len(c.Request.Header)+3) + + for k, v := range baseVars { + envVars[k] = v + } + + envVars["CALL_ID"] = reqID + envVars["METHOD"] = c.Request.Method + envVars["REQUEST_URL"] = fmt.Sprintf("%v//%v%v", func() string { + if c.Request.TLS == nil { + return "http" + } + return "https" + }(), c.Request.Host, c.Request.URL.String()) + // params for _, param := range params { envVars[toEnvName("PARAM", param.Key)] = param.Value