@ijodkor/nest-payme
Version:
NestJs ilovalar uchun Payme ETT bilan integratsiya qilish uchun kutubxona.
87 lines (76 loc) • 2.79 kB
text/typescript
import { DynamicModule, Module, UseGuards } from '@nestjs/common';
import { HttpModule } from "@nestjs/axios";
import { ConfigModule } from "@nestjs/config";
import { ApiExcludeController } from "@nestjs/swagger";
import { EncryptionModule } from "../modules/encryption";
import { CardService } from './card/card.service';
import { RequestService } from "../request/request.service";
import { ReceiptService } from './receipt/receipt.service';
import { CardController } from "./card/card.controller";
import { ReceiptController } from "./receipt/receipt.controller";
import { AUTH_GUARD_OPTIONS, AuthOption } from "../support/config/auth-option.config";
import { ISubscriptionModuleFeatureOptions, ISubscriptionModuleOptions } from "./definitions/subscription.options";
import { BasicAuthGuard } from "../support/guards/basic-auth.guard";
({
imports: [HttpModule, EncryptionModule, ConfigModule],
controllers: [CardController, ReceiptController],
providers: [
CardService, RequestService, ReceiptService, BasicAuthGuard,
{
provide: AUTH_GUARD_OPTIONS,
useValue: null
}
],
exports: [CardService, ReceiptService]
})
export class SubscriptionModule {
static forFeature(options: ISubscriptionModuleFeatureOptions): DynamicModule {
const decorators = [ApiExcludeController(options.hidden)];
if (options.options?.auth == AuthOption.BASIC_AUTH) {
decorators.push(UseGuards(BasicAuthGuard))
}
const controllers = [CardController, ReceiptController];
// Apply decorators
decorators.map(dec => {
controllers.map(controller => {
dec(controller)
})
});
return {
module: SubscriptionModule,
imports: [HttpModule, EncryptionModule, ConfigModule],
controllers: [CardController, ReceiptController],
providers: [
CardService, RequestService, ReceiptService, BasicAuthGuard,
{
provide: AUTH_GUARD_OPTIONS,
useValue: options.options
}
],
exports: [CardService, ReceiptService]
};
}
static registerAsync(options: ISubscriptionModuleOptions): DynamicModule {
const decorators = [ApiExcludeController(options.hidden)];
const controllers = [CardController, ReceiptController];
// Apply decorators
decorators.map(dec => {
controllers.map(controller => {
dec(controller)
})
});
return {
module: SubscriptionModule,
imports: [HttpModule, EncryptionModule, ConfigModule],
controllers: controllers,
providers: [
CardService, RequestService, ReceiptService, BasicAuthGuard,
{
provide: AUTH_GUARD_OPTIONS,
useFactory: options.useFactory
}
],
exports: [CardService, ReceiptService]
};
}
}