Socket
Socket
Sign inDemoInstall

@ffdc/nestjs-proxy

Package Overview
Dependencies
4
Maintainers
5
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @ffdc/nestjs-proxy

NestJS module to decorate and proxy calls.\ It exposes a `/proxy` endpoint.


Version published
Weekly downloads
22
increased by214.29%
Maintainers
5
Install size
878 kB
Created
Weekly downloads
 

Readme

Source

Proxy module

NestJS module to decorate and proxy calls.
It exposes a /proxy endpoint.

Use it

You can import the module like so :

app.module.ts

ProxyModule.forRoot({
    config: {},
    services: [
      {
        id: 'ACCOUNT_INFORMATION_US',
        url: `https://api.fusionfabric.cloud/retail-us/me/account/v1/accounts`,
        config: {}
      }
    ]
}),

Or asynchronously

app.module.ts

ProxyModule.forRootAsync({
    useClass: ProxyConfigService,
    imports: [ConfigModule],
}),

proxy-config.service.ts

import { ConfigService } from '@nestjs/config';
import { Injectable, Logger } from '@nestjs/common';
import { ProxyModuleOptions, ProxyModuleOptionsFactory } from '@ffdc/nestjs-proxy';

@Injectable()
export class ProxyConfigService implements ProxyModuleOptionsFactory {
  constructor(private configService: ConfigService) {}

  createModuleConfig(): ProxyModuleOptions {
    const FFDC = this.configService.get('FFDC');

    const services = [
      {
        id: 'ACCOUNT_INFORMATION_US',
        url: `${FFDC}/retail-us/me/account/v1/accounts`,
        config: {}
      };
    ];

    return {
      services,
    };
  }
}

Configuration

Whether synchronously or asynchronously, the module takes two parameters (both optionals).

  • services : which is a collection of urls with a given id so that you can query them more efficiently
  • config : which is the configuration from http-proxy which we're using under the hood. Find the offical documentation of this configuration here.

A service can also take an optional config, which is the same signature as the parent one, allowing you to override configuration for that particular service !

Default module configuration

If you do not provide any, the default proxy configuration for this module can be found in proxy.constants.ts, under defaultProxyOptions

Client-side usage examples

Requesting without pre-defined service

const serverUri = 'http://localhost:3000';
const target = 'http://localhost:3001/cats';

// GET
fetch(`${serverUri}/proxy?target=${target}`);

// POST
const data = { name: 'Garfield' };
fetch(`${serverUri}/proxy?target=${target}`, {
  method: 'POST',
  body: JSON.stringify(data),
});

Requesting a specific service

const serverUri = 'http://localhost:3000';
const serviceId = 'ACCOUNT_INFORMATION_US';

fetch(`${serverUri}/proxy?serviceId=${serviceId}`);

// Defining path
const accountId = '112';
const target = `${accountId}/details`;
fetch(`${serverUri}/proxy?serviceId=${serviceId}&target=${target}`);

Using module with a service using OIDC module with multitenancy configuration

All proxy calls need to be prefixed by /${TENANT_ID}/${CHANEL_TYPE}

FAQs

Last updated on 17 Sep 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc