Home / File/ envvar.go — fiber Source File

envvar.go — fiber Source File

Architecture documentation for envvar.go, a go file in the fiber codebase. 1 imports, 0 dependents.

File go FiberCore Adapters 1 imports 2 functions

Entity Profile

Dependency Diagram

graph LR
  979e39c4_cb8d_0bcd_f2b9_22752d950269["envvar.go"]
  8759af17_0eaa_9de8_b2fe_8f672f58a010["os"]
  979e39c4_cb8d_0bcd_f2b9_22752d950269 --> 8759af17_0eaa_9de8_b2fe_8f672f58a010
  style 979e39c4_cb8d_0bcd_f2b9_22752d950269 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

package envvar

import (
	"os"

	"github.com/gofiber/fiber/v3"
)

const hAllow = fiber.MethodGet + ", " + fiber.MethodHead

// EnvVar captures environment variables that are exposed through the
// middleware response.
type EnvVar struct {
	Vars map[string]string `json:"vars"`
}

func (envVar *EnvVar) set(key, val string) {
	envVar.Vars[key] = val
}

// New creates a handler that returns configured environment variables as a
// JSON response.
func New(config ...Config) fiber.Handler {
	cfg := configDefault(config...)

	return func(c fiber.Ctx) error {
		method := c.Method()
		if method != fiber.MethodGet && method != fiber.MethodHead {
			c.Set(fiber.HeaderAllow, hAllow)
			return fiber.ErrMethodNotAllowed
		}

		envVar := newEnvVar(cfg)
		varsByte, err := c.App().Config().JSONEncoder(envVar)
		if err != nil {
			return c.Status(fiber.StatusInternalServerError).SendString(err.Error())
		}
		c.Set(fiber.HeaderContentType, fiber.MIMEApplicationJSONCharsetUTF8)
		return c.Send(varsByte)
	}
}

func newEnvVar(cfg Config) *EnvVar {
	vars := &EnvVar{Vars: make(map[string]string)}

	if len(cfg.ExportVars) == 0 {
		// do not expose environment variables when no configuration
		// is supplied to prevent accidental information disclosure
		return vars
	}

	for key, defaultVal := range cfg.ExportVars {
		vars.set(key, defaultVal)
		if envVal, exists := os.LookupEnv(key); exists {
			vars.set(key, envVal)
		}
	}

	return vars
}

Domain

Subdomains

Functions

Types

Dependencies

  • os

Frequently Asked Questions

What does envvar.go do?
envvar.go is a source file in the fiber codebase, written in go. It belongs to the FiberCore domain, Adapters subdomain.
What functions are defined in envvar.go?
envvar.go defines 2 function(s): New, newEnvVar.
What does envvar.go depend on?
envvar.go imports 1 module(s): os.
Where is envvar.go in the architecture?
envvar.go is located at middleware/envvar/envvar.go (domain: FiberCore, subdomain: Adapters, directory: middleware/envvar).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free