Skip to content

Commit 747bbd3

Browse files
feat(s3): add request handler config for proxy (#13)
* feat(s3): add request handler config for proxy * test(s3-provider): update test
1 parent 4c48525 commit 747bbd3

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

packages/providers/s3/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ Check information about **@mdf.js** providers in the documentation of the core m
6060
- **CONFIG\_S3\_ACCESS\_KEY\_ID**: S3 AWS connection access key identifier
6161
- **CONFIG\_S3\_SECRET\_ACCESS\_KEY**: S3 AWS connection secret access key
6262
- **CONFIG\_S3\_SERVICE\_ID**: S3 unique service identifier
63+
- **CONFIG\_S3\_PROXY\_HTTP**: HTTP Proxy URI
64+
- **CONFIG\_S3\_PROXY\_HTTP**: HTTPs Proxy URI
6365
- **NODE\_APP\_INSTANCE**: undefined
6466

6567
## **License**

packages/providers/s3/src/config/config.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
*/
77
// *************************************************************************************************
88
// #region Arrange
9+
process.env['CONFIG_S3_PROXY_HTTP'] = 'http://localhost:8080';
10+
process.env['CONFIG_S3_PROXY_HTTPS'] = 'https://localhost:443';
11+
912
import { CONFIG_PROVIDER_BASE_NAME } from '.';
1013
import { defaultConfig } from './default';
1114
// #endregion

packages/providers/s3/src/config/env.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
* or at https://opensource.org/licenses/MIT.
66
*/
77

8+
import { NodeHttpHandler, NodeHttpHandlerOptions } from '@smithy/node-http-handler';
9+
import { HttpProxyAgent } from 'http-proxy-agent';
10+
import { HttpsProxyAgent } from 'https-proxy-agent';
811
import { Config } from '../provider';
912
import { DEFAULT_CONFIG_S3_ACCESS_KEY_ID, DEFAUTLT_CONFIG_S3_SECRET_ACCESS_KEY } from './default';
1013

@@ -19,6 +22,22 @@ const CONFIG_S3_ACCESS_KEY_ID = process.env['CONFIG_S3_ACCESS_KEY_ID'];
1922
const CONFIG_S3_SECRET_ACCESS_KEY = process.env['CONFIG_S3_SECRET_ACCESS_KEY'];
2023
/** S3 unique service identifier */
2124
const CONFIG_S3_SERVICE_ID = process.env['CONFIG_S3_SERVICE_ID'];
25+
/** HTTP Proxy URI */
26+
const CONFIG_S3_PROXY_HTTP = process.env['CONFIG_S3_PROXY_HTTP'];
27+
/** HTTPS Proxy URI */
28+
const CONFIG_S3_PROXY_HTTPS = process.env['CONFIG_S3_PROXY_HTTPS'];
29+
30+
const requestHandlerConfig: NodeHttpHandlerOptions = {};
31+
if (CONFIG_S3_PROXY_HTTP) {
32+
requestHandlerConfig.httpAgent = new HttpProxyAgent(CONFIG_S3_PROXY_HTTP);
33+
}
34+
if (CONFIG_S3_PROXY_HTTPS) {
35+
requestHandlerConfig.httpsAgent = new HttpsProxyAgent(CONFIG_S3_PROXY_HTTPS);
36+
}
37+
let requestHandler: NodeHttpHandler | undefined = undefined;
38+
if (requestHandlerConfig.httpAgent || requestHandlerConfig.httpsAgent) {
39+
requestHandler = new NodeHttpHandler(requestHandlerConfig);
40+
}
2241

2342
export const envBasedConfig: Config = {
2443
region: CONFIG_S3_REGION,
@@ -27,5 +46,6 @@ export const envBasedConfig: Config = {
2746
secretAccessKey: CONFIG_S3_SECRET_ACCESS_KEY ?? DEFAUTLT_CONFIG_S3_SECRET_ACCESS_KEY,
2847
},
2948
serviceId: CONFIG_S3_SERVICE_ID,
49+
requestHandler,
3050
};
3151
// #endregion

packages/providers/s3/src/config/schema.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ export const schema = Joi.object({
1414
secretAccessKey: Joi.string().required(),
1515
}),
1616
serviceId: Joi.string().optional(),
17+
requestHandler: Joi.any().optional(),
1718
}).unknown(true);

0 commit comments

Comments
 (0)