proxyrequest

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: 0

README

proxyrequest

Package proxyrequest is an Ambient plugin with middleware that proxies requests.

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

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 (1):

  • Name: router.middleware:write
    • Description: Access to proxy requests based on request URL.

Settings

The plugin does not have any settings.

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"
	"net/url"

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

func main() {
	URL, err := url.Parse("http://localhost:8080")
	if err != nil {
		log.Fatalln(err.Error())
	}

	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.
			proxyrequest.New(URL, "/api"),
		},
	}
	_, _, 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 proxyrequest is an Ambient plugin with middleware that proxies requests.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Plugin

type Plugin struct {
	*ambient.PluginBase
	// contains filtered or unexported fields
}

Plugin represents an Ambient plugin.

func New

func New(urlForProxy *url.URL, prefixForAPI string) *Plugin

New returns an Ambient plugin with middleware that proxies requests.

Example
package main

import (
	"log"
	"net/url"

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

func main() {
	URL, err := url.Parse("http://localhost:8080")
	if err != nil {
		log.Fatalln(err.Error())
	}

	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.
			proxyrequest.New(URL, "/api"),
		},
	}
	_, _, err = ambientapp.NewApp("myapp", "1.0",
		zaplogger.New(),
		ambient.StoragePluginGroup{
			Storage: memorystorage.New(),
		},
		plugins)
	if err != nil {
		log.Fatalln(err.Error())
	}
}
Output:

func (*Plugin) Enable

func (p *Plugin) Enable(toolkit *ambient.Toolkit) error

Enable accepts the toolkit.

func (*Plugin) GrantRequests

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

GrantRequests returns a list of grants requested by the plugin.

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) ProxyRequest

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

ProxyRequest will send all requests prefixed with the specified API path to the Ambient app while all other requests to the proxy URL.

Jump to

Keyboard shortcuts

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