/
uri_template_rewrite.proto
58 lines (53 loc) · 2.73 KB
/
uri_template_rewrite.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
syntax = "proto3";
package envoy.extensions.path.rewrite.uri_template.v3;
import "udpa/annotations/status.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.path.rewrite.uri_template.v3";
option java_outer_classname = "UriTemplateRewriteProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/path/rewrite/uri_template/v3;uri_templatev3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Uri Template Rewrite Config]
// [#extension: envoy.path.rewrite.uri_template.uri_template_rewriter]
// Indicates that during forwarding, portions of the path that match the
// pattern should be rewritten, even allowing the substitution of variables
// from the match pattern into the new path as specified by the rewrite template.
// This is useful to allow application paths to be
// rewritten in a way that is aware of segments with variable content like
// identifiers. The router filter will place the original path as it was
// before the rewrite into the :ref:`x-envoy-original-path
// <config_http_filters_router_x-envoy-original-path>` header.
//
// Only one of :ref:`prefix_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.prefix_rewrite>`,
// :ref:`regex_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.regex_rewrite>`,
// or *path_template_rewrite* may be specified.
//
// Template pattern matching types:
//
// * ``*`` : Matches a single path component, up to the next path separator: /
//
// * ``**`` : Matches zero or more path segments. If present, must be the last operator.
//
// * ``{name} or {name=*}`` : A named variable matching one path segment up to the next path separator: /.
//
// * ``{name=videos/*}`` : A named variable matching more than one path segment.
// The path component matching videos/* is captured as the named variable.
//
// * ``{name=**}`` : A named variable matching zero or more path segments.
//
// Only named matches can be used to perform rewrites.
//
// Examples using path_template_rewrite:
//
// * The pattern ``/{one}/{two}`` paired with a substitution string of ``/{two}/{one}`` would
// transform ``/cat/dog`` into ``/dog/cat``.
//
// * The pattern ``/videos/{language=lang/*}/*`` paired with a substitution string of
// ``/{language}`` would transform ``/videos/lang/en/video.m4s`` into ``lang/en``.
//
// * The path pattern ``/content/{format}/{lang}/{id}/{file}.vtt`` paired with a substitution
// string of ``/{lang}/{format}/{file}.vtt`` would transform ``/content/hls/en-us/12345/en_193913.vtt``
// into ``/en-us/hls/en_193913.vtt``.
message UriTemplateRewriteConfig {
string path_template_rewrite = 1 [(validate.rules).string = {min_len: 1 max_len: 256}];
}