The module is a thin wrapper for the Mailchimp Transactional API.
npm i @mindik/mailchimp-nestjs
Import the module and pass your api key to it
// app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { MailchimpModule } from '@mindik/mailchimp-nestjs';
@Module({
imports: [MailchimpModule.forRoot(/* API_KEY */)],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
..or use forRootAsync({ })
// app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { MailchimpModule } from '@mindik/mailchimp-nestjs';
@Module({
imports: [
MailchimpModule.forRootAsync({
imports: [/* ConfigModule */]
/*
useExisting
useFactory
useClass
*/
useFactory: async () => /* API_KEY */,
inject: [/* ConfigService */]
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Inject Mailchimp in your service
// app.service.ts
import { InjectMailchimp } from '@mindik/mailchimp-nestjs';
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
constructor(
/*
or
@Inject(MAILCHIMP_TOKEN) private readonly mail
*/
@InjectMailchimp() private readonly mail
) {}
// Test connection function ( == this.mail.users.ping())
async checkMailchimp(): Promise<any> {
return this.mail.pingPong();
}
}
You can use a decorator
@InjectMailchimp() private readonly mail
that is an alias for a longer entry
@Inject(MAILCHIMP_TOKEN) private readonly mail
Further use in the application is no different from other modules...
Add the export to the decorator @Module()
// app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { MailchimpModule } from '@mindik/mailchimp-nestjs';
@Module({
imports: [MailchimpModule.forRoot(/* API_KEY */)],
controllers: [AppController],
providers: [AppService],
exports: [AppService],
})
export class AppModule {}
Import service in some module
// some.module.ts
import { Module } from '@nestjs/common';
import { AppService } from 'src/app.service';
import { SomeController } from './some.controller';
import { SomeService } from './some.service';
@Module({
controllers: [SomeController],
providers: [AppService, SomeService],
})
export class SomeModule {}
Use in your some service
// some.service.ts
import { Injectable } from '@nestjs/common';
import { AppService } from 'src/app.service';
@Injectable()
export class SomeService {
constructor(private readonly appService: AppService) {}
async getPong(): Promise<any> {
return 'SOME SERVICE ' + (await this.appService.checkMailchimp());
}
}
Any suggestions for improving the project are welcome.
- Fork the repository
- Create your branch (git checkout -b my-branch)
- Commit any changes to your branch
- Push your changes to your remote branch
- Open a pull request
Distributed under the MIT License. See LICENSE for more information.