@requestly/requestly-proxy 1.1.21 → 1.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,6 +33,19 @@ const bodyParser = (contentTypeHeader, buffer) => {
33
33
  });
34
34
  }
35
35
  return str_buffer;
36
+ /*
37
+ FOLLOWING IS HOW API CLIENT PARSES THE BODY
38
+ much simpler than above, but requires thorough testing
39
+ */
40
+ // // todo: add support for other content types
41
+ // let parsedResponse;
42
+ // if (contentTypeHeader?.includes("image/")) {
43
+ // const raw = Buffer.from(buffer).toString("base64");
44
+ // parsedResponse = `data:${contentTypeHeader};base64,${raw}`;
45
+ // } else {
46
+ // parsedResponse = new TextDecoder().decode(buffer);
47
+ // }
48
+ // return parsedResponse;
36
49
  };
37
50
  exports.bodyParser = bodyParser;
38
51
  const getContentType = (contentTypeHeader) => {
@@ -164,6 +164,10 @@ class ProxyMiddlewareManager {
164
164
  ctx.rq_response_body = body;
165
165
  ctx.rq_parsed_response_body = parsedBody;
166
166
  ctx.rq_response_status_code = (0, proxy_ctx_helper_1.getResponseStatusCode)(ctx);
167
+ if (constants_1.RQ_INTERCEPTED_CONTENT_TYPES.includes(contentType) && parsedBody) {
168
+ ctx.rq_response_body = parsedBody;
169
+ ctx.rq.set_original_response({ body: parsedBody });
170
+ }
167
171
  const { action_result_objs, continue_request } = yield rules_middleware.on_response_end(ctx);
168
172
  const statusCode = ctx.rq_response_status_code || (0, proxy_ctx_helper_1.getResponseStatusCode)(ctx);
169
173
  ctx.proxyToClientResponse.writeHead(statusCode, http_1.default.STATUS_CODES[statusCode], (0, proxy_ctx_helper_1.getResponseHeaders)(ctx));
@@ -689,6 +689,15 @@ Proxy.prototype._onWebSocketServerConnect = function (isSSL, ws, upgradeReq) {
689
689
  agent: ctx.isSSL ? self.httpsAgent : self.httpAgent,
690
690
  headers: ptosHeaders,
691
691
  };
692
+ if (ctopHeaders["sec-websocket-version"]) {
693
+ ctx.proxyToServerWebSocketOptions.protocolVersion = parseInt(ctopHeaders["sec-websocket-version"]);
694
+ }
695
+ if (ctopHeaders["sec-websocket-protocol"]) {
696
+ ctx.proxyToServerWebSocketOptions.subProtocol = ctopHeaders["sec-websocket-protocol"];
697
+ }
698
+ const socketOrigin = ctopHeaders["origin"] || ctopHeaders["sec-websocket-origin"];
699
+ if (socketOrigin)
700
+ ctx.proxyToServerWebSocketOptions.origin = socketOrigin;
692
701
  return self._onWebSocketConnection(ctx, function (err) {
693
702
  if (err) {
694
703
  return self._onWebSocketError(ctx, err);
@@ -696,7 +705,13 @@ Proxy.prototype._onWebSocketServerConnect = function (isSSL, ws, upgradeReq) {
696
705
  return makeProxyToServerWebSocket();
697
706
  });
698
707
  function makeProxyToServerWebSocket() {
699
- ctx.proxyToServerWebSocket = new WebSocket(ctx.proxyToServerWebSocketOptions.url, ctx.proxyToServerWebSocketOptions);
708
+ try {
709
+ ctx.proxyToServerWebSocket = new WebSocket(ctx.proxyToServerWebSocketOptions.url, ctx.proxyToServerWebSocketOptions.subProtocol || "", ctx.proxyToServerWebSocketOptions);
710
+ }
711
+ catch (error) {
712
+ // because some sub protocols are not accepted
713
+ ctx.proxyToServerWebSocket = new WebSocket(ctx.proxyToServerWebSocketOptions.url, ctx.proxyToServerWebSocketOptions);
714
+ }
700
715
  ctx.proxyToServerWebSocket.on("message", self._onWebSocketFrame.bind(self, ctx, "message", true));
701
716
  ctx.proxyToServerWebSocket.on("ping", self._onWebSocketFrame.bind(self, ctx, "ping", true));
702
717
  ctx.proxyToServerWebSocket.on("pong", self._onWebSocketFrame.bind(self, ctx, "pong", true));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@requestly/requestly-proxy",
3
- "version": "1.1.21",
3
+ "version": "1.1.23",
4
4
  "description": "Proxy that gives superpowers to all the Requestly clients",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {