etagcache

package
v0.0.0-...-ecdd364 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 30, 2022 License: MIT Imports: 5 Imported by: 1

README

etagcache

Package etagcache is an Ambient plugin that provides caching using etag.

Import: github.com/ambientkit/plugin/middleware/etagcache

Version: 1.0.0

Plugin Type

The plugin can be used as the following core types:

  • Logger: false
  • Storage System: false
  • Router: false
  • Template Engine: false
  • Session Manager: false

Grants

The plugin request the following grants (2):

  • Name: router.middleware:write
    • Description: Access to read and write ETag headers on responses.
  • Name: plugin.setting:read
    • Description: Access to read MaxAge setting.

Settings

The plugin has the follow settings (1):

  • Name: MaxAge
    • Type: input
    • Description: MaxAge in seconds before Etag is checked. 30 days is 2592000.
    • Hidden: false

Routes

The plugin does not have any routes.

Middleware

The plugin has middleware (1).

FuncMap

The plugin does not have a FuncMap.

Assets

The plugin does not inject any assets.

Embedded Files

The plugin does not have any embedded files.

Example Usage

package main

import (
	"log"

	"github.com/ambientkit/ambient"
	"github.com/ambientkit/ambient/pkg/ambientapp"
	"github.com/ambientkit/plugin/logger/zaplogger"
	"github.com/ambientkit/plugin/middleware/etagcache"
	"github.com/ambientkit/plugin/storage/memorystorage"
)

func main() {
	plugins := &ambient.PluginLoader{
		// Core plugins are implicitly trusted.
		Router:         nil,
		TemplateEngine: nil,
		SessionManager: nil,
		// Trusted plugins are those that are typically needed to boot so they
		// will be enabled and given full access.
		TrustedPlugins: map[string]bool{},
		Plugins:        []ambient.Plugin{},
		Middleware: []ambient.MiddlewarePlugin{
			// Middleware - executes top to bottom.
			etagcache.New(),
		},
	}
	_, _, err := ambientapp.NewApp("myapp", "1.0",
		zaplogger.New(),
		ambient.StoragePluginGroup{
			Storage: memorystorage.New(),
		},
		plugins)
	if err != nil {
		log.Fatalln(err.Error())
	}
}

Docgen by Ambient

Documentation

Overview

Package etagcache is an Ambient plugin that provides caching using etag.

Index

Examples

Constants

View Source
const (
	// MaxAge allows user to set MaxAge in seconds.
	MaxAge = "MaxAge"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CustomResponseWriter

type CustomResponseWriter struct {
	// contains filtered or unexported fields
}

CustomResponseWriter can be used

func NewCustomResponseWriter

func NewCustomResponseWriter() *CustomResponseWriter

NewCustomResponseWriter stores the response without writing it.

func (*CustomResponseWriter) Header

func (w *CustomResponseWriter) Header() http.Header

Header return custom header.

func (*CustomResponseWriter) Write

func (w *CustomResponseWriter) Write(b []byte) (int, error)

Write to the custom body.

func (*CustomResponseWriter) WriteHeader

func (w *CustomResponseWriter) WriteHeader(statusCode int)

WriteHeader will write to the custom status code.

func (*CustomResponseWriter) WriteTo

func (w *CustomResponseWriter) WriteTo(wr http.ResponseWriter)

WriteTo will write to the response writer.

type Plugin

type Plugin struct {
	*ambient.PluginBase
}

Plugin represents an Ambient plugin.

func New

func New() *Plugin

New returns an Ambient plugin that provides gzip content compression midddleware.

Example
package main

import (
	"log"

	"github.com/ambientkit/ambient"
	"github.com/ambientkit/ambient/pkg/ambientapp"
	"github.com/ambientkit/plugin/logger/zaplogger"
	"github.com/ambientkit/plugin/middleware/etagcache"
	"github.com/ambientkit/plugin/storage/memorystorage"
)

func main() {
	plugins := &ambient.PluginLoader{
		// Core plugins are implicitly trusted.
		Router:         nil,
		TemplateEngine: nil,
		SessionManager: nil,
		// Trusted plugins are those that are typically needed to boot so they
		// will be enabled and given full access.
		TrustedPlugins: map[string]bool{},
		Plugins:        []ambient.Plugin{},
		Middleware: []ambient.MiddlewarePlugin{
			// Middleware - executes top to bottom.
			etagcache.New(),
		},
	}
	_, _, err := ambientapp.NewApp("myapp", "1.0",
		zaplogger.New(),
		ambient.StoragePluginGroup{
			Storage: memorystorage.New(),
		},
		plugins)
	if err != nil {
		log.Fatalln(err.Error())
	}
}
Output:

func (*Plugin) GrantRequests

func (p *Plugin) GrantRequests() []ambient.GrantRequest

GrantRequests returns a list of grants requested by the plugin.

func (*Plugin) Handler

func (p *Plugin) Handler(next http.Handler) http.Handler

Handler returns middleware.

func (*Plugin) Middleware

func (p *Plugin) Middleware() []func(next http.Handler) http.Handler

Middleware returns router middleware.

func (*Plugin) PluginName

func (p *Plugin) PluginName() string

PluginName returns the plugin name.

func (*Plugin) PluginVersion

func (p *Plugin) PluginVersion() string

PluginVersion returns the plugin version.

func (*Plugin) Settings

func (p *Plugin) Settings() []ambient.Setting

Settings returns a list of user settable fields.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL