-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
18 changed files
with
10,283 additions
and
526 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Upgrading to V2 | ||
|
||
## Breaking Changes | ||
- `forRoot`, `forRootAsync`, `register` and `registerAsync` doesn't receive an array of items anymore. | ||
- `registerAsync` is now used to register async providers like: useFactory, useExisting or useClass. | ||
- Property `name` was renamed to `clientName` in `SoapModuleOptions` and `SoapModuleAsyncOptions` interfaces; | ||
- Defined `SoapModuleOptionsFactoryType` for `createSoapModuleOptions` and `useFactory` functions return types. | ||
|
||
### So, what you need to do is basically: | ||
- ***Create an import for each client;*** | ||
- ***Use `register` instead of `registerAsync`;*** | ||
- ***Use `clientName` instead of `name`;*** | ||
- ***Use `SoapModuleOptionsFactoryType` instead of `SoapModuleOptions` on the return type of the `createSoapModuleOptions`/`useFactory` function.*** |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
# 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. | ||
|
||
```javascript | ||
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](#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](https://docs.nestjs.com/fundamentals/custom-providers#factory-providers-usefactory). Our factory function can be `async` and can inject dependencies through `inject`: | ||
|
||
```javascript | ||
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. | ||
```javascript | ||
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](https://www.npmjs.com/package/soap). | ||
|
||
### Soap Module Factory | ||
|
||
You can also create your own factory implemeting SoapModuleOptionsFactory | ||
|
||
```typescript | ||
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](https://www.npmjs.com/package/soap#options) . |
Oops, something went wrong.