# proxy

## assertStatusCode

Assert whether HTTP response status code matches the specified value.

**Parameters:**

| Name             | Type               | Description                                           |
| ---------------- | ------------------ | ----------------------------------------------------- |
| `url`            | `String`\|`RegExp` | A request URL to match verbatim or a RegExp.          |
| `statusCode`     | `Number`           | A response status code to match verbatim or a RegExp. |
| `failureMessage` | `String`           | `optional` An optional failure message.               |
| `timeout`        | `Number`           | `optional` Timeout. Default is 60 seconds.            |

**Returns:**

`Object` - Network request details if the network request was found.

## assertUrl

Assert if network request matching the specified URL.

**Parameters:**

| Name      | Type               | Description                                  |
| --------- | ------------------ | -------------------------------------------- |
| `url`     | `String`\|`RegExp` | A request URL to match verbatim or a RegExp. |
| `timeout` | `Number`           | `optional` Timeout. Default is 60 seconds.   |

**Returns:**

`Object` - Network request details if the network request was found.

## dispose

Disposes this module.

## getRequests

Return all the collected network requests so far.

**Returns:**

`Array.<Object>` - Array containing network requests.

## init

Initializes proxy.

\*\* Launching mitmproxy manually:\*\*

```shell
mitmdump --anticache -s mitmproxy-node\scripts\proxy.py --ssl-insecure --set httpCommPort=8765
```

**Parameters:**

| Name               | Type      | Description                                                                                                                                                   |
| ------------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `proxyPort`        | `Number`  | Proxy port.                                                                                                                                                   |
| `proxyCommPort`    | `Number`  | `optional` Port for internal proxy communication. If specified, then mitmproxy should be launched manually.Otherwise mitmpoxy will be launched automatically. |
| `saveRequestBody`  | `Boolean` | `optional` Save request bodies.                                                                                                                               |
| `saveResponseBody` | `Boolean` | `optional` Save response bodies.                                                                                                                              |

## start

Begin collecting network requests.

Any previously collected requests will be discarded.

\*\* Usage example:\*\*

```javascript
proxy.init(8080);
proxy.start();
// print the collected request so far:
let requests = proxy.getRequests();
for (let req of requests) {
 log.info(req);
}
// wait for a request using a verbatim URL match:
proxy.waitForUrl('https://www.yourwebsite.com/foo/bar');
// wait for a request using a regular expression URL match:
proxy.waitForUrl(/https:\/\/.*\/foo\/bar/);
// wait for a request using a custom matcher:
proxy.waitFor(function (request) {
 return request.status === '200' && request.url === 'https://www.yourwebsite.com/foo/bar';
});
```

## stop

Stop collecting network requests.

## waitFor

Wait for a network request.

**Parameters:**

| Name      | Type       | Description                                                         |
| --------- | ---------- | ------------------------------------------------------------------- |
| `matcher` | `Function` | Matching function. Should return true on match, or false otherwise. |
| `timeout` | `Number`   | `optional` Timeout. Default is 60 seconds.                          |

**Returns:**

`Object` - Network request details if the network request was found.

## waitForUrl

Wait for a network request matching the specified URL.

**Parameters:**

| Name      | Type               | Description                                |
| --------- | ------------------ | ------------------------------------------ |
| `pattern` | `String`\|`RegExp` | An URL to match verbatim or a RegExp.      |
| `timeout` | `Number`           | `optional` Timeout. Default is 60 seconds. |

**Returns:**

`Object` - Network request details if the network request was found.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.oxygenhq.org/download-installation-start/modules/module-proxy.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
