rest

package
v0.4.3 Latest Latest
Warning

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

Go to latest
Published: Aug 3, 2018 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Overview

Package rest is a generated protocol buffer package.

It is generated from these files:

spec.proto

It has these top-level messages:

RouteExtension
Parameters
TransformationSpec

Index

Constants

View Source
const (
	ServiceTypeREST = "REST"
)

Variables

This section is empty.

Functions

func EncodeFunctionSpec

func EncodeFunctionSpec(spec TransformationSpec) *types.Struct

func EncodeRouteExtension

func EncodeRouteExtension(spec RouteExtension) *types.Struct

Types

type Parameters

type Parameters struct {
	// headers that will be used to extract data for processing output templates
	// Gloo will search for parameters by their name in header value strings, enclosed in single
	// curly braces
	// Example:
	//   extensions:
	//     parameters:
	//         headers:
	//           x-user-id: { userId }
	Headers map[string]string `` /* 148-byte string literal not displayed */
	// part of the (or the entire) path that will be used extract data for processing output templates
	// Gloo will search for parameters by their name in header value strings, enclosed in single
	// curly braces
	// Example:
	//   extensions:
	//     parameters:
	//         path: /users/{ userId }
	Path *google_protobuf1.StringValue `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"`
}

Parameters define a set of parameters for REST Transformations Parameters can be extracted from HTTP Headers and Request Path Parameters can also be extracted from the HTTP Body, provided that it is valid JSON-encoded Gloo will search for parameters by their name in strings, enclosed in single curly braces, and attempt to match them to the variables in REST Function Templates for example:

# route
match: {...}
destination: {...}
extensions:
  parameters:
      headers:
        x-user-id: { userId }
---
# function
name: myfunc
spec:
  body: |
  {
    "id": {{ userId }}
  }

func (*Parameters) Descriptor added in v0.4.2

func (*Parameters) Descriptor() ([]byte, []int)

func (*Parameters) Equal added in v0.4.2

func (this *Parameters) Equal(that interface{}) bool

func (*Parameters) GetHeaders added in v0.4.2

func (m *Parameters) GetHeaders() map[string]string

func (*Parameters) GetPath added in v0.4.2

func (m *Parameters) GetPath() *google_protobuf1.StringValue

func (*Parameters) ProtoMessage added in v0.4.2

func (*Parameters) ProtoMessage()

func (*Parameters) Reset added in v0.4.2

func (m *Parameters) Reset()

func (*Parameters) String added in v0.4.2

func (m *Parameters) String() string

type Plugin

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

func NewPlugin

func NewPlugin() *Plugin

func (*Plugin) HttpFilters

func (*Plugin) Init added in v0.4.2

func (p *Plugin) Init(options bootstrap.Options) error

func (*Plugin) ProcessRoute

func (p *Plugin) ProcessRoute(pluginParams *plugins.RoutePluginParams, in *v1.Route, out *envoyroute.Route) error

func (*Plugin) ProcessUpstream

func (p *Plugin) ProcessUpstream(params *plugins.UpstreamPluginParams, in *v1.Upstream, out *envoyapi.Cluster) error

type RouteExtension

type RouteExtension struct {
	// If specified, these parameters will be used as inputs for REST templates for
	// the destination function for the route
	// (if the route destination is a functional destination that has a REST transformation)
	Parameters *Parameters `protobuf:"bytes,1,opt,name=parameters" json:"parameters,omitempty"`
	// If specified, responses on this route will be transformed according to the template(s) provided
	// in the transformation spec here
	ResponseTransformation *TransformationSpec `protobuf:"bytes,2,opt,name=response_transformation,json=responseTransformation" json:"response_transformation,omitempty"`
	// If specified, paremeters for the response transformation will be extracted from these sources
	ResponseParams *Parameters `protobuf:"bytes,3,opt,name=response_params,json=responseParams" json:"response_params,omitempty"`
}

The REST Route Extension contains two components: * parameters for calling REST functions * Response Transformation

func DecodeRouteExtension

func DecodeRouteExtension(generic *types.Struct) (RouteExtension, error)

func (*RouteExtension) Descriptor added in v0.4.2

func (*RouteExtension) Descriptor() ([]byte, []int)

func (*RouteExtension) Equal added in v0.4.2

func (this *RouteExtension) Equal(that interface{}) bool

func (*RouteExtension) GetParameters added in v0.4.2

func (m *RouteExtension) GetParameters() *Parameters

func (*RouteExtension) GetResponseParams added in v0.4.2

func (m *RouteExtension) GetResponseParams() *Parameters

func (*RouteExtension) GetResponseTransformation added in v0.4.2

func (m *RouteExtension) GetResponseTransformation() *TransformationSpec

func (*RouteExtension) ProtoMessage added in v0.4.2

func (*RouteExtension) ProtoMessage()

func (*RouteExtension) Reset added in v0.4.2

func (m *RouteExtension) Reset()

func (*RouteExtension) String added in v0.4.2

func (m *RouteExtension) String() string

type TransformationSpec added in v0.4.2

type TransformationSpec struct {
	// a Jinja-style Template string for the outbound request path. Only useful for request transformation
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// a map of keys to Jinja-style Template strings HTTP Headers. Useful for request and response transformations
	Headers map[string]string `` /* 148-byte string literal not displayed */
	// a Jinja-style Template string for the outbound HTTP Body. Useful for request and response transformations
	// If this is nil, the body will be passed through unmodified. If set to an empty string, the body will be removed
	// from the HTTP message.
	Body *google_protobuf1.StringValue `protobuf:"bytes,3,opt,name=body" json:"body,omitempty"`
}

TransformationSpec can act as part of a Route Extension (as a Response Transformation), or as a FunctionSpec (as a Request Transformation). Use TransformationSpec as the Function Spec for REST Services (where `Upstream.ServiceInfo.Type == "REST"`) TransformationSpec contains a set of templates that will be used to modify the Path, Headers, and Body Parameters for the tempalte come from the following sources: path: HTTP Request path (if present) method: HTTP Request method (if present) parameters specified in the RouteExtension.Parameters (or, in the case of ResponseTransformation, RouteExtension.ResponseParams) Parameters can also be extracted from the Request / Response Body provided that they are JSON To do so, specify the field using JSONPath syntax any field from the request body, assuming it's json (http://goessner.net/articles/JsonPath/index.html#e2) Note: REST Service detection and configuration can be performed automatically by Gloo for services that implement Swagger and serve their `swagger.json` file on a common endpoint (e.g. /v1/swagger.json). Custom endpoints for swagger.json can be added via the Function Discovery configuration. Requires Function Discovery to be enabled.

func DecodeFunctionSpec

func DecodeFunctionSpec(generic *types.Struct) (TransformationSpec, error)

func (*TransformationSpec) Descriptor added in v0.4.2

func (*TransformationSpec) Descriptor() ([]byte, []int)

func (*TransformationSpec) Equal added in v0.4.2

func (this *TransformationSpec) Equal(that interface{}) bool

func (*TransformationSpec) GetBody added in v0.4.2

func (*TransformationSpec) GetHeaders added in v0.4.2

func (m *TransformationSpec) GetHeaders() map[string]string

func (*TransformationSpec) GetPath added in v0.4.2

func (m *TransformationSpec) GetPath() string

func (*TransformationSpec) ProtoMessage added in v0.4.2

func (*TransformationSpec) ProtoMessage()

func (*TransformationSpec) Reset added in v0.4.2

func (m *TransformationSpec) Reset()

func (*TransformationSpec) String added in v0.4.2

func (m *TransformationSpec) String() string

Jump to

Keyboard shortcuts

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