Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -230,10 +230,9 @@ The `EchoRequestProcessor` is an example of using an ExtProc to _respond_ to a r
envoyexternalprocessor-echo-1 | Aug 20, 2023 3:27:40 PM extproc.processors.EchoRequestProcessor processRequestHeaders
envoyexternalprocessor-echo-1 | INFO: EchoRequestProcessor.processRequestBody: /echo/hello responding before upstream
```
and a JSON response like
and a response like
```json
{
"path": "/echo/hello",
"body": "some data here"
}
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public void shutdown() {
}

public void processRequestHeaders(RequestContext ctx, Map<String, String> headers) {
StringBuilder hashtext = new StringBuilder(ctx.getMethod() + ":" + ctx.getPath() + ":");
StringBuilder hashtext = new StringBuilder(ctx.getMethod() + ":" + ctx.getPath());
if (ctx.streamComplete()) {
String digest = SHAHash(hashtext);
ctx.addHeader("x-extproc-request-digest", digest);
Expand All @@ -47,6 +47,7 @@ public void processRequestHeaders(RequestContext ctx, Map<String, String> header

public void processRequestBody(RequestContext ctx, String body) {
StringBuilder hashtext = hashtexts.get(ctx.getRequestId());
hashtext.append(":");
hashtext.append(body);
if (ctx.streamComplete()) {
String digest = SHAHash(hashtext);
Expand All @@ -61,19 +62,15 @@ public void processResponseHeaders(RequestContext ctx, Map<String, String> heade
if (ctx.streamComplete()) {
String digest = digests.getOrDefault(ctx.getRequestId(), "");
ctx.addHeader("x-extproc-request-digest", digest);
ctx.addHeader("x-extproc-response-digest", digest);
hashtexts.remove(ctx.getRequestId());
digests.remove(ctx.getRequestId());
}
}

public void processResponseBody(RequestContext ctx, String body) {
StringBuilder hashtext = hashtexts.get(ctx.getRequestId());
hashtext.append(body);
if (ctx.streamComplete()) {
String digest = digests.get(ctx.getRequestId());
String digest = digests.getOrDefault(ctx.getRequestId(), "");
ctx.addHeader("x-extproc-request-digest", digest);
ctx.addHeader("x-extproc-response-digest", SHAHash(hashtext));
hashtexts.remove(ctx.getRequestId());
digests.remove(ctx.getRequestId());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
import com.github.wrossmorrow.extproc.RequestProcessorHealthManager;
import java.util.Map;
import java.util.logging.Logger;
import java.util.regex.Pattern;

public class EchoRequestProcessor implements RequestProcessor {
private static final Logger logger = Logger.getLogger(EchoRequestProcessor.class.getName());
private static final Pattern ECHO_PATH = Pattern.compile("/echo/.*");

public String getName() {
return "echo";
Expand All @@ -25,26 +27,24 @@ public void shutdown() {
}

public void processRequestHeaders(RequestContext ctx, Map<String, String> headers) {
if (ctx.getPath().startsWith("/echo")) {
if (ECHO_PATH.matcher(ctx.getPath()).matches()) {
if (ctx.streamComplete()) {
logger.info(
"EchoRequestProcessor.processRequestHeaders: "
+ ctx.getPath()
+ " responding before upstream");
String jsonResponse = "{\"path\": \"" + ctx.getPath() + "\"}";
ctx.cancelRequest(200, ctx.getRequestHeaders(), jsonResponse);
ctx.cancelRequest(200, ctx.getRequestHeaders(), "");
}
}
}

public void processRequestBody(RequestContext ctx, String body) {
if (ctx.getPath().startsWith("/echo")) {
if (ECHO_PATH.matcher(ctx.getPath()).matches()) {
logger.info(
"EchoRequestProcessor.processRequestBody: "
+ ctx.getPath()
+ " responding before upstream");
String jsonResponse = "{\"path\": \"" + ctx.getPath() + "\", \"body\": \"" + body + "\"}";
ctx.cancelRequest(200, ctx.getRequestHeaders(), jsonResponse);
ctx.cancelRequest(200, ctx.getRequestHeaders(), body);
}
}

Expand Down
Loading