Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/axa-group/native-proxy-agent

A http and https agent for working with proxies that allow keep-alive connections
https://github.com/axa-group/native-proxy-agent

agent http https keep-alive nodejs proxy typescript

Last synced: 6 days ago
JSON representation

A http and https agent for working with proxies that allow keep-alive connections

Awesome Lists containing this project

README

        

# Native Proxy Agent

[![CI](https://github.com/axa-group/native-proxy-agent/actions/workflows/main.yml/badge.svg)](https://github.com/axa-group/native-proxy-agent/actions/workflows/main.yml)

A native proxy agent that uses the native nodejs `http.Agent` and `https.Agent` to proxy the requests.

**_All agents allow http or https proxy but you have to select over the agent depending on your target url._**

## How to install

```console
npm install @axa/native-proxy-agent
```

## Usage

```js
const { createAgent } = require('@axa/native-proxy-agent');
const got = require('got');

got('http://requestUrl.com/service/1', {
agent: createAgent('http://requestUrl.com/service/1')
});
```

- You can also directly create an httpsAgent or an httpAgent

```js
const { createHttpAgent } = require('@axa/native-proxy-agent');
const got = require('got');

got('http://requestUrl.com/service/1', {
agent: {
http: createHttpAgent()
}
});
```

```js
const { createHttpsAgent } = require('@axa/native-proxy-agent');
const got = require('got');

got('http://requestUrl.com/service/1', {
agent: {
https: createHttpsAgent()
}
});
```

- `createForeverAgent` will add to a singleton, agents with the same configuration to allow an easy reuse of the agents. Also this method will set the option `keepAlive` to true by default.

```js
const { createForeverAgent } = require('@axa/native-proxy-agent');
const got = require('got');

got('http://requestUrl.com/service/1', {
agent: {
https: createForeverAgent('http://requestUrl.com/service/1')
}
});

// Target with same protocol and agent options will share same agent
got('http://requestUrl.com/another-service', {
agent: {
http: createForeverAgent('http://requestUrl.com/another-service')
}
});
```

- If the protocol of the requests is always the same, you can create a target https or http `Agent`.
- `createHttpForeverAgent`
- `createHttpsForeverAgent`

### Environment variables

`@axa/native-proxy-agent` will pick the proxy configuration from the environment if the options are not provided at the creation of the agent. It will also pick environment variables for making unproxied (`no_proxy` and `NO_PROXY`) requests.

The environment variables used for this purpose are:

- Setting the proxy: http_proxy, https_proxy, HTTP_PROXY, and HTTPS_PROXY.
- Proxy exemptions: no_proxy and NO_PROXY.

The preference of variable is the order in which they are written in this readme.

## Contributing

You can read the guide of how to contribute at [Contributing](./CONTRIBUTING.md).

## Code of Conduct

You can read the Code of Conduct at [Code of Conduct](./CODE_OF_CONDUCT.md).

# Legal Notice

Copyright (c) AXA Group. All rights reserved.
Licensed under the MIT License.

## Third party dependencies licenses

### Production
- [[email protected]](https://github.com/mcollina/hyperid) - MIT
- [[email protected]](https://github.com/SkeLLLa/node-object-hash) - MIT

### Development
- [@commitlint/[email protected]](https://github.com/conventional-changelog/commitlint) - MIT
- [@types/[email protected]](https://github.com/DefinitelyTyped/DefinitelyTyped) - MIT
- [@types/[email protected]](https://github.com/DefinitelyTyped/DefinitelyTyped) - MIT
- [@typescript-eslint/[email protected]](https://github.com/typescript-eslint/typescript-eslint) - MIT
- [@typescript-eslint/[email protected]](https://github.com/typescript-eslint/typescript-eslint) - BSD-2-Clause
- [[email protected]](https://github.com/commitizen/cz-cli) - MIT
- [[email protected]](https://github.com/conventional-changelog/commitlint) - MIT
- [[email protected]](https://github.com/commitizen/cz-conventional-changelog) - MIT
- [[email protected]](https://github.com/eslint/eslint) - MIT
- [[email protected]](https://github.com/airbnb/javascript) - MIT
- [[email protected]](https://github.com/iamturns/eslint-config-airbnb-typescript) - MIT
- [[email protected]](https://github.com/prettier/eslint-config-prettier) - MIT
- [[email protected]](https://github.com/alexgorbatchev/eslint-import-resolver-typescript) - ISC
- [[email protected]](https://github.com/import-js/eslint-plugin-import) - MIT
- [[email protected]](https://github.com/jest-community/eslint-plugin-jest) - MIT
- [[email protected]](https://github.com/azeemba/eslint-plugin-json) - MIT
- [[email protected]](https://github.com/prettier/eslint-plugin-prettier) - MIT
- [[email protected]](https://github.com/sindresorhus/got) - MIT
- [[email protected]](https://github.com/typicode/husky) - MIT
- [[email protected]](https://github.com/facebook/jest) - MIT
- [[email protected]](https://github.com/nock/nock) - MIT
- [[email protected]](https://github.com/prettier/prettier) - MIT
- [[email protected]](https://github.com/isaacs/rimraf) - ISC
- [[email protected]](https://github.com/conventional-changelog/standard-version) - ISC
- [[email protected]](https://github.com/kulshekhar/ts-jest) - MIT
- [[email protected]](https://github.com/Microsoft/TypeScript) - Apache-2.0