Skip to content

Commit

Permalink
Merge pull request #938 from Portkey-AI/feat/mutator-webhook-plugin
Browse files Browse the repository at this point in the history
feat: allow mutations in webhook plugin
  • Loading branch information
VisargD authored Feb 13, 2025
2 parents 690dc70 + 9b5fa50 commit 249054f
Showing 1 changed file with 42 additions and 4 deletions.
46 changes: 42 additions & 4 deletions plugins/default/webhook.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import { PluginContext, PluginHandler, PluginParameters } from '../types';
import {
HookEventType,
PluginContext,
PluginHandler,
PluginParameters,
} from '../types';
import { post } from '../utils';

function parseHeaders(headers: unknown): Record<string, string> {
Expand All @@ -22,11 +27,23 @@ function parseHeaders(headers: unknown): Record<string, string> {

export const handler: PluginHandler = async (
context: PluginContext,
parameters: PluginParameters
parameters: PluginParameters,
eventType: HookEventType
) => {
let error = null;
let verdict = false;
let data: any = null;
const transformedData: Record<string, any> = {
request: {
json: null,
text: null,
},
response: {
json: null,
text: null,
},
};
let transformed = false;

try {
const url = parameters.webhookURL;
Expand All @@ -49,9 +66,30 @@ export const handler: PluginHandler = async (
throw new Error(`Failed to parse headers: ${e.message}`);
}

const response = await post(url, context, { headers }, 3000);
const response = await post(
url,
{ ...context, eventType },
{ headers },
3000
);
verdict = response.verdict;

if (
response.transformedData?.request?.json &&
eventType === 'beforeRequestHook'
) {
transformedData.request.json = response.transformedData.request.json;
transformed = true;
}

if (
response.transformedData?.response?.json &&
eventType === 'afterRequestHook'
) {
transformedData.response.json = response.transformedData.response.json;
transformed = true;
}

data = {
verdict,
explanation: verdict
Expand All @@ -78,5 +116,5 @@ export const handler: PluginHandler = async (
};
}

return { error, verdict, data };
return { error, verdict, data, transformedData, transformed };
};

0 comments on commit 249054f

Please sign in to comment.