Documentation ¶
Overview ¶
Package plugin provides plugin register interfaces for building http client plugins.
Usage example:
package main import ( "context" "errors" "fmt" "html" "net/http" ) // 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() {}
Index ¶
- Constants
- func HTTPRequestExecutor(logger logging.Logger, next func(*config.Backend) client.HTTPRequestExecutor) func(*config.Backend) client.HTTPRequestExecutor
- func HTTPRequestExecutorWithContext(ctx context.Context, logger logging.Logger, ...) func(*config.Backend) client.HTTPRequestExecutor
- func Load(path, pattern string, rcf RegisterClientFunc) (int, error)
- func LoadWithLogger(path, pattern string, rcf RegisterClientFunc, logger logging.Logger) (int, error)
- func RegisterClient(name string, ...)
- type LoggerRegisterer
- type Plugin
- type RegisterClientFunc
- type Registerer
Constants ¶
View Source
const Namespace = "github.com/devopsfaith/krakend/transport/http/client/executor"
Variables ¶
This section is empty.
Functions ¶
func HTTPRequestExecutor ¶
func HTTPRequestExecutor( logger logging.Logger, next func(*config.Backend) client.HTTPRequestExecutor, ) func(*config.Backend) client.HTTPRequestExecutor
func HTTPRequestExecutorWithContext ¶ added in v2.4.0
func LoadWithLogger ¶
Types ¶
type LoggerRegisterer ¶
type LoggerRegisterer interface {
RegisterLogger(interface{})
}
type RegisterClientFunc ¶
Click to show internal directories.
Click to hide internal directories.