Skip to content

Latest commit

 

History

History
105 lines (83 loc) · 3.21 KB

v1.md

File metadata and controls

105 lines (83 loc) · 3.21 KB

Nestjs Soap v1 Docs

It's highly recommended to upgrade to v2 as v1 will not be maintained anymore.

Getting Started

After installing the package, just import the SoapModule on the module you want to use the soap client.

import { Module } from '@nestjs/common';
import { SoapModule } from 'nestjs-soap';

@Module({
  imports: [
    SoapModule.registerAsync([
      { name: 'MY_SOAP_CLIENT', uri: 'http://yourserver/yourservice.wso?wsdl' },
    ]),
  ],
})
export class ExampleModule {}

The registerAsync or forRoot function receives an array of SoapModuleOptions. This means you can create as many clients you need. You just need to create unique names for each one.

Another way to import the SoapModule is using forRootAsync, like other factory provider. Our factory function can be async and can inject dependencies through inject:

import { Module } from '@nestjs/common';
import { SoapModule, SoapModuleOptions } from 'nestjs-soap';
import { ConfigService } from '@nestjs/config';

@Module({
  imports: [
    SoapModule.forRootAsync([
      { 
        name: 'MY_SOAP_CLIENT',
        inject: [ConfigService],
        useFactory: async (
          configService: ConfigService,
        ): Promise<SoapModuleOptions> => ({
          uri: configService.get<string>('soap.uri'),
          auth: {
            username: configService.get<string>('soap.username'),
            password: configService.get<string>('soap.password'),
          },
        }),        
      }
    ]),
  ],
})
export class ExampleModule {}

Then inject the client where you want to use it.

import { Inject, Injectable } from '@nestjs/common';
import { Client } from 'nestjs-soap';

@Injectable()
export class ExampleService {
  constructor(@Inject('MY_SOAP_CLIENT') private readonly mySoapClient: Client) {}

  async exampleFunction() {
    return await this.mySoapClient.YourFunctionAsync();
  }
}

The injected Client is from the soap npm package. From here, please follow the use instructions on the soap repository.

Soap Module Factory

You can also create your own factory implemeting SoapModuleOptionsFactory

import { Injectable, Inject } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { SoapModuleOptions, SoapModuleOptionsFactory } from 'nestjs-soap';

@Injectable()
export class ExampleSoapConfigService implements SoapModuleOptionsFactory {
  constructor(
    @Inject(ConfigService) private readonly configService: ConfigService
  )

  createSoapModuleOptions(): SoapModuleOptions {
    return {
      uri: configService.get<string>('soap.uri'),
      auth: {
        username: configService.get<string>('soap.username'),
        password: configService.get<string>('soap.password'),
      },
    };
  }
}

SoapModuleOptions

name: The unique client name for class injection.

uri: The SOAP service uri.

auth: Basic authentication filling in the username and password fields when needed.

clientOptions: The soap client options as in soap repository .