Skip to content

Commit

Permalink
chore: bump version to 1.1.17 and updated dist
Browse files Browse the repository at this point in the history
  • Loading branch information
wrongsahil committed Mar 1, 2023
1 parent 7232110 commit 43c5770
Show file tree
Hide file tree
Showing 8 changed files with 54 additions and 22 deletions.
3 changes: 2 additions & 1 deletion dist/components/proxy-middleware/helpers/proxy_ctx_helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@ const get_original_request_headers = (ctx) => {
};
exports.get_original_request_headers = get_original_request_headers;
const get_original_response_headers = (ctx) => {
var _a;
// TODO: This needs to be fetched from ctx.clientToProxy headers
return ctx.serverToProxyResponse.headers;
return ((_a = ctx === null || ctx === void 0 ? void 0 : ctx.serverToProxyResponse) === null || _a === void 0 ? void 0 : _a.headers) || {};
};
exports.get_original_response_headers = get_original_response_headers;
const is_request_preflight = (ctx) => {
Expand Down
22 changes: 22 additions & 0 deletions dist/components/proxy-middleware/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,28 @@ class ProxyMiddlewareManager {
// Figure out a way to enable/disable middleware dynamically
// instead of re-initing this again
const rules_middleware = new rules_middleware_1.default(this.config[exports.MIDDLEWARE_TYPE.RULES], ctx, this.rulesHelper);
ctx.onError(function (ctx, err, kind, callback) {
return __awaiter(this, void 0, void 0, function* () {
// Should only modify response body & headers
ctx.rq_response_body = "" + kind + ": " + err, "utf8";
const { action_result_objs, continue_request } = yield rules_middleware.on_response(ctx);
// Only modify response if any modify_response action is applied
const modifyResponseActionExist = action_result_objs.some((action_result_obj) => { var _a; return ((_a = action_result_obj === null || action_result_obj === void 0 ? void 0 : action_result_obj.action) === null || _a === void 0 ? void 0 : _a.action) === "modify_response"; });
if (modifyResponseActionExist) {
const statusCode = ctx.rq_response_status_code || 404;
const responseHeaders = (0, proxy_ctx_helper_1.getResponseHeaders)(ctx) || {};
ctx.proxyToClientResponse.writeHead(statusCode, http_1.default.STATUS_CODES[statusCode], responseHeaders);
ctx.proxyToClientResponse.end(ctx.rq_response_body);
ctx.rq.set_final_response({
status_code: statusCode,
headers: responseHeaders,
body: ctx.rq_response_body,
});
logger_middleware.send_network_log(ctx, rules_middleware.action_result_objs, requestly_core_1.CONSTANTS.REQUEST_STATE.COMPLETE);
}
return callback();
});
});
let request_body_chunks = [];
ctx.onRequestData(function (ctx, chunk, callback) {
return __awaiter(this, void 0, void 0, function* () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ const process_modify_header_action = (action, ctx) => {
const allowed_handlers = [
proxy_1.PROXY_HANDLER_TYPE.ON_REQUEST,
proxy_1.PROXY_HANDLER_TYPE.ON_RESPONSE,
proxy_1.PROXY_HANDLER_TYPE.ON_ERROR,
];
if (!allowed_handlers.includes(ctx.currentHandler)) {
return (0, utils_1.build_action_processor_response)(action, false);
}
if (ctx.currentHandler == proxy_1.PROXY_HANDLER_TYPE.ON_REQUEST) {
modify_request_headers(action, ctx);
}
else if (ctx.currentHandler == proxy_1.PROXY_HANDLER_TYPE.ON_RESPONSE) {
else if (ctx.currentHandler === proxy_1.PROXY_HANDLER_TYPE.ON_RESPONSE || ctx.currentHandler === proxy_1.PROXY_HANDLER_TYPE.ON_ERROR) {
modify_response_headers(action, ctx);
}
return (0, utils_1.build_action_processor_response)(action, true);
Expand All @@ -30,6 +31,8 @@ const modify_request_headers = (action, ctx) => {
newRequestHeaders.forEach((pair) => (ctx.proxyToServerRequestOptions.headers[pair.name] = pair.value));
};
const modify_response_headers = (action, ctx) => {
ctx.serverToProxyResponse = ctx.serverToProxyResponse || {};
ctx.serverToProxyResponse.headers = ctx.serverToProxyResponse.headers || {};
// {"header1":"val1", "header2":"val2"}
const originalResponseHeadersObject = ctx.serverToProxyResponse.headers;
// ["header1","header2"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const capture_console_logs_1 = __importDefault(require("capture-console-logs"));
const utils_2 = require("../../../../utils");
const { types } = require("util");
const process_modify_response_action = (action, ctx) => __awaiter(void 0, void 0, void 0, function* () {
const allowed_handlers = [proxy_1.PROXY_HANDLER_TYPE.ON_RESPONSE_END];
const allowed_handlers = [proxy_1.PROXY_HANDLER_TYPE.ON_RESPONSE_END, proxy_1.PROXY_HANDLER_TYPE.ON_ERROR];
if (!allowed_handlers.includes(ctx.currentHandler)) {
return (0, utils_1.build_action_processor_response)(action, false);
}
Expand Down Expand Up @@ -55,7 +55,7 @@ const modify_response_using_local = (action, ctx) => {
}
};
const modify_response_using_code = (action, ctx) => __awaiter(void 0, void 0, void 0, function* () {
var _a, _b;
var _a, _b, _c, _d;
let userFunction = null;
try {
userFunction = (0, utils_2.getFunctionFromString)(action.response);
Expand All @@ -78,16 +78,16 @@ const modify_response_using_code = (action, ctx) => __awaiter(void 0, void 0, vo
? ctx.clientToProxyRequest.method
: null
: null,
response: ctx.rq_response_body,
response: ctx === null || ctx === void 0 ? void 0 : ctx.rq_response_body,
url: (0, proxy_ctx_helper_1.get_request_url)(ctx),
responseType: ctx.serverToProxyResponse.headers["content-type"],
responseType: (_b = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.serverToProxyResponse) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b["content-type"],
requestHeaders: ctx.clientToProxyRequest.headers,
requestData: (0, http_helpers_1.parseJsonBody)((_b = (_a = ctx.rq) === null || _a === void 0 ? void 0 : _a.final_request) === null || _b === void 0 ? void 0 : _b.body) || null,
requestData: (0, http_helpers_1.parseJsonBody)((_d = (_c = ctx.rq) === null || _c === void 0 ? void 0 : _c.final_request) === null || _d === void 0 ? void 0 : _d.body) || null,
};
try {
args.responseJSON = JSON.parse(args.response);
}
catch (_c) {
catch (_e) {
/*Do nothing -- could not parse body as JSON */
}
const consoleCapture = new capture_console_logs_1.default();
Expand Down
1 change: 1 addition & 0 deletions dist/lib/proxy/lib/proxy.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ declare const PROXY_HANDLER_TYPE: {
ON_RESPONSE_HEADERS: string;
ON_RESPONSE_DATA: string;
ON_RESPONSE_END: string;
ON_ERROR: string;
};
declare var ProxyFinalRequestFilter: (proxy: any, ctx: any) => void;
declare var ProxyFinalResponseFilter: (proxy: any, ctx: any) => any;
27 changes: 16 additions & 11 deletions dist/lib/proxy/lib/proxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ const PROXY_HANDLER_TYPE = {
ON_RESPONSE_HEADERS: "ON_RESPONSE_HEADERS",
ON_RESPONSE_DATA: "ON_RESPONSE_DATA",
ON_RESPONSE_END: "ON_RESPONSE_END",
ON_ERROR: "ON_ERROR",
};
module.exports.PROXY_HANDLER_TYPE = PROXY_HANDLER_TYPE;
Proxy.prototype.listen = function (options, callback = (e) => { }) {
Expand Down Expand Up @@ -561,20 +562,24 @@ Proxy.prototype.onCertificateMissing = function (ctx, files, callback) {
return this;
};
Proxy.prototype._onError = function (kind, ctx, err) {
this.onErrorHandlers.forEach(function (handler) {
return handler(ctx, err, kind);
});
if (ctx) {
ctx.onErrorHandlers.forEach(function (handler) {
return handler(ctx, err, kind);
});
if (ctx.proxyToClientResponse && !ctx.proxyToClientResponse.headersSent) {
ctx.proxyToClientResponse.writeHead(504, "Proxy Error");
ctx.currentHandler = PROXY_HANDLER_TYPE.ON_ERROR;
}
async.forEach(this.onErrorHandlers.concat((ctx === null || ctx === void 0 ? void 0 : ctx.onErrorHandlers) || []), function (fn, callback) {
if (fn) {
return fn(ctx, err, kind, callback);
}
if (ctx.proxyToClientResponse && !ctx.proxyToClientResponse.finished) {
ctx.proxyToClientResponse.end("" + kind + ": " + err, "utf8");
callback();
}, function () {
if (ctx) {
if (ctx.proxyToClientResponse && !ctx.proxyToClientResponse.headersSent) {
ctx.proxyToClientResponse.writeHead(504, "Proxy Error");
}
if (ctx.proxyToClientResponse && !ctx.proxyToClientResponse.finished) {
ctx.proxyToClientResponse.end("" + kind + ": " + err, "utf8");
}
}
}
});
};
Proxy.prototype._onWebSocketServerConnect = function (isSSL, ws, upgradeReq) {
var self = this;
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@requestly/requestly-proxy",
"version": "1.1.16",
"version": "1.1.17",
"description": "Proxy that gives superpowers to all the Requestly clients",
"main": "dist/index.js",
"scripts": {
Expand Down

0 comments on commit 43c5770

Please sign in to comment.