v1.4.1 Latest Latest

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

Go to latest
Published: Jun 8, 2021 License: Apache-2.0 Imports: 11 Imported by: 2



Package plugin provides plugin register interfaces for building http client plugins.

Usage example:

package main

import (

// ClientRegisterer is the symbol the plugin loader will try to load. It must implement the RegisterClient interface
var ClientRegisterer = registerer("lura-example")

type registerer string

func (r registerer) RegisterClients(f func(
	name string,
	handler func(context.Context, map[string]interface{}) (http.Handler, error),
)) {
	f(string(r), r.registerClients)

func (r registerer) registerClients(ctx context.Context, extra map[string]interface{}) (http.Handler, error) {
	// check the passed configuration and initialize the plugin
	name, ok := extra["name"].(string)
	if !ok {
		return nil, errors.New("wrong config")
	if name != string(r) {
		return nil, fmt.Errorf("unknown register %s", name)
	// return the actual handler wrapping or your custom logic so it can be used as a replacement for the default http client
	return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
		fmt.Fprintf(w, "Hello, %q", html.EscapeString(req.URL.Path))
	}), nil

func init() {
	fmt.Println("lura-example client plugin loaded!!!")

func main() {}

SPDX-License-Identifier: Apache-2.0

SPDX-License-Identifier: Apache-2.0

SPDX-License-Identifier: Apache-2.0



View Source
const Namespace = ""


This section is empty.


func HTTPRequestExecutor

func HTTPRequestExecutor(
	logger logging.Logger,
	next func(*config.Backend) client.HTTPRequestExecutor,
) func(*config.Backend) client.HTTPRequestExecutor

func Load

func Load(path, pattern string, rcf RegisterClientFunc) (int, error)

func LoadWithLogger added in v1.4.1

func LoadWithLogger(path, pattern string, rcf RegisterClientFunc, logger logging.Logger) (int, error)

func RegisterClient

func RegisterClient(
	name string,
	handler func(context.Context, map[string]interface{}) (http.Handler, error),


type LoggerRegisterer added in v1.4.1

type LoggerRegisterer interface {

type Plugin

type Plugin interface {
	Lookup(name string) (plugin.Symbol, error)

Plugin is the interface of the loaded plugins

type RegisterClientFunc

type RegisterClientFunc func(
	name string,
	handler func(context.Context, map[string]interface{}) (http.Handler, error),

type Registerer

type Registerer interface {
		name string,
		handler func(context.Context, map[string]interface{}) (http.Handler, error),


Path Synopsis
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: Apache-2.0

Jump to

Keyboard shortcuts

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