1.0.10 • Published 10 months ago

@dbc-tech/nest-rex v1.0.10

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

nest-rex

nest-rex provides Nest integration module for Rex client.

Get started

In your Nest application update package.json and add the nest-rex package:

{
  "dependencies": {
    "@dbc-tech/nest-rex": "^1.0.0"
}

Register the module

You'll need to specify base url, client id & API key. The easiest way is to provide it directly during regisration in your app.module:

@Module({
  imports: [
    RexModule.register({
      baseUrl: 'https://api.rexsoftware.com/v1/rex/',
      email: '<your email>',
      password: '<your password>',
    })]
})

However, it's more likely the base url is provided via .env file:

REX_URL: https://api.rexsoftware.com/v1/rex/
REX_EMAIL: <your email>
REX_PASSWORD: <your password>

In which case this can be passed via ConfigService using module's registerAsync method:

@Module({
  imports: [
    RexModule.registerAsync({
      imports: [ConfigModule],
      useFactory: async (configService: ConfigService) => ({
        baseUrl: configService.get('REX_URL'),
        email: configService.get('REX_EMAIL'),
        password: configService.get('REX_PASSWORD'),
      }),
      inject: [ConfigService],
    })]
})

You may wish to register the module globally:

@Module({
  imports: [
    RexModule.register({
      global: true
    })]
})

Using RexClient service

Once the RexModule is registered, the RexClient service should be available to inject into your services:

export default class MyService {
  constructor(private readonly api: RexClient) {}

  async getAccountUsers() {
    const result = await rex.getAccountUsers()
    const accountUsers: RexAccountUser[] = [];
    for await (const item of result) {
      accountUsers.push(item)
    }

    return accountUsers
  }
}

Rex Factory module

An additional factory module RexFactoryModule is available for use in multi-tenancy applications. The factory module registers a factory service RexFactory which is used to create new RexClient instances by supplying the client id & api key.

Register the module

You'll need to specify base url. The easiest way is to provide it directly during regisration in your app.module:

@Module({
  imports: [
    RexFactoryModule.register({
      baseUrl: 'https://api.rexsoftware.com/v1/rex/',
    })]
})

However, it's more likely the base url is provided via .env file:

REX_URL: https://api.rexsoftware.com/v1/rex/

In which case this can be passed via ConfigService using module's registerAsync method:

@Module({
  imports: [
    RexFactoryModule.registerAsync({
      imports: [ConfigModule],
      useFactory: async (configService: ConfigService) => ({
        baseUrl: configService.get('REX_URL'),
      }),
      inject: [ConfigService],
    })]
})

You may wish to register the module globally:

@Module({
  imports: [
    RexFactoryModule.register({
      global: true
    })]
})

Using RexFactory service

Once the RexFactoryModule is registered, the RexFactory service should be available to inject into your services:

export default class MyService {
  constructor(private readonly factory: RexFactory) {}

  async getAccountUsers() {
    const api = factory.create('<my email>', '<my pass')
    return await this.api.getAccountUsers(..);
  }
}
1.0.10

10 months ago

1.0.9

11 months ago

1.0.8

11 months ago

1.0.7

11 months ago

1.0.6

11 months ago

1.0.5

11 months ago

1.0.4

11 months ago

1.0.3

11 months ago

1.0.2

11 months ago

1.0.1

11 months ago

1.0.0

11 months ago