Latest Threat ResearchGlassWorm Loader Hits Open VSX via Developer Account Compromise.Details
Socket
Book a DemoInstallSign in
Socket

proxy-git.cwkhome.fun/gowebly/helpers

Package Overview
Dependencies
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

proxy-git.cwkhome.fun/gowebly/helpers

Go Modules
Version
v0.4.0
Version published
Created
Source

Helpers for the Gowebly CLI (and not so)

Go version Go report Code coverage License

A most useful helpers for build the best Go web applications with Gowebly CLI.

💡 Note: You can use these helpers in other projects as well.

📖 List of helpers

gowebly.Getenv

Helper to get the given environment variable. If key is not found, sets a fallback value.

import (
    gowebly "github.com/gowebly/helpers"
)

// Get a value of the environment variable 'BACKEND_PORT'
// or sets it to a fallback value '5000'.
gowebly.Getenv("BACKEND_PORT", "5000")

💡 Note: This is a more advanced version of the built-in os.Getenv function.

gowebly.ParseTemplates

Helper to parse list of the given templates to the HTTP handler.

import (
    "log/slog"

    gowebly "github.com/gowebly/helpers"
)

func handler(w http.ResponseWriter, r *http.Request) {
    // Define paths to the user templates.
    indexPage := filepath.Join("templates", "pages", "index.html")
    indexLoginForm := filepath.Join("templates", "components", "index-login-form.html")

    // Parse user templates, using gowebly helper, or return error.
    tmpl, err := gowebly.ParseTemplates(indexPage, indexLoginForm)
    if err != nil {
        w.WriteHeader(http.StatusBadRequest)
        slog.Error(err.Error(), "method", r.Method, "status", http.StatusBadRequest, "path", r.URL.Path)
        return
    }

    // Execute (render) all templates or return error.
    if err := tmpl.Execute(w, nil); err != nil {
        w.WriteHeader(http.StatusInternalServerError)
        slog.Error(err.Error(), "method", r.Method, "status", http.StatusInternalServerError, "path", r.URL.Path)
        return
    }
}

💡 Note: The main layout template (templates/main.html) is already included.

gowebly.ParseTemplatesWithCustomMainLayout

Helper to parse a list of the given templates with a custom main layout to the HTTP handler. Useful to use at times when you want to override file name of the default templates/main.html layout template.

import (
    "log/slog"

    gowebly "github.com/gowebly/helpers"
)

func handler(w http.ResponseWriter, r *http.Request) {
    // Define path to the main layout template.
    customMainLayout := filepath.Join("templates", "my-custom-main.html")

    // Define paths to the user templates.
    indexPage := filepath.Join("templates", "pages", "index.html")
    indexLoginForm := filepath.Join("templates", "components", "index-login-form.html")

    // Parse user templates or return error.
    tmpl, err := gowebly.ParseTemplatesWithCustomMainLayout(customMainLayout, indexPage, indexLoginForm)
    if err != nil {
        w.WriteHeader(http.StatusBadRequest)
        slog.Error(err.Error(), "method", r.Method, "status", http.StatusBadRequest, "path", r.URL.Path)
        return
    }

    // Execute (render) all templates or return error.
    if err := tmpl.Execute(w, nil); err != nil {
        w.WriteHeader(http.StatusInternalServerError)
        slog.Error(err.Error(), "method", r.Method, "status", http.StatusInternalServerError, "path", r.URL.Path)
        return
    }
}

gowebly.StaticFileServerHandler

Helpers to create a custom handler for serve embed ./static folder.

import (
    "embed"
    "net/http"

    gowebly "github.com/gowebly/helpers"
)

//go:embed static/*
var static embed.FS

// Create the gowebly helper for serve embed static folder.
staticFileServer := gowebly.StaticFileServerHandler(http.FS(static))

// Handle static files (with a custom handler).
http.Handle("/static/", staticFileServer)

⚠️ License

The Gowebly Helpers is free and open-source software licensed under the Apache 2.0 License, created and supported by Vic Shóstak with 🩵 for people and robots.

FAQs

Package last updated on 17 Apr 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts