local-aws/src/sns/sns.module.ts

98 lines
3.5 KiB
TypeScript

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AbstractActionHandler, Format } from '../abstract-action.handler';
import { Action } from '../action.enum';
import { AwsSharedEntitiesModule } from '../aws-shared-entities/aws-shared-entities.module';
import { ExistingActionHandlers } from '../default-action-handler/default-action-handler.constants';
import { DefaultActionHandlerProvider } from '../default-action-handler/default-action-handler.provider';
import { ExistingActionHandlersProvider } from '../default-action-handler/existing-action-handlers.provider';
import { SqsModule } from '../sqs/sqs.module';
import { CreateTopicHandler } from './create-topic.handler';
import { GetSubscriptionAttributesHandler } from './get-subscription-attributes.handler';
import { GetTopicAttributesHandler } from './get-topic-attributes.handler';
import { ListTagsForResourceHandler } from './list-tags-for-resource.handler';
import { ListTopicsHandler } from './list-topics.handler';
import { PublishHandler } from './publish.handler';
import { SetSubscriptionAttributesHandler } from './set-subscription-attributes.handler';
import { SetTopicAttributesHandler } from './set-topic-attributes.handler';
import { SnsTopicSubscription } from './sns-topic-subscription.entity';
import { SnsTopic } from './sns-topic.entity';
import { SnsHandlers } from './sns.constants';
import { SubscribeHandler } from './subscribe.handler';
import { UnsubscribeHandler } from './unsubscribe.handler';
const handlers = [
CreateTopicHandler,
GetSubscriptionAttributesHandler,
GetTopicAttributesHandler,
ListTagsForResourceHandler,
ListTopicsHandler,
PublishHandler,
SetSubscriptionAttributesHandler,
SetTopicAttributesHandler,
SubscribeHandler,
UnsubscribeHandler,
];
const actions = [
Action.SnsAddPermission,
Action.SnsCheckIfPhoneNumberIsOptedOut,
Action.SnsConfirmSubscription,
Action.SnsCreatePlatformApplication,
Action.SnsCreatePlatformEndpoint,
Action.SnsCreateSMSSandboxPhoneNumber,
Action.SnsCreateTopic,
Action.SnsDeleteEndpoint,
Action.SnsDeletePlatformApplication,
Action.SnsDeleteSMSSandboxPhoneNumber,
Action.SnsDeleteTopic,
Action.SnsGetDataProtectionPolicy,
Action.SnsGetEndpointAttributes,
Action.SnsGetPlatformApplicationAttributes,
Action.SnsGetSMSAttributes,
Action.SnsGetSMSSandboxAccountStatus,
Action.SnsGetSubscriptionAttributes,
Action.SnsGetTopicAttributes,
Action.SnsListEndpointsByPlatformApplication,
Action.SnsListOriginationNumbers,
Action.SnsListPhoneNumbersOptedOut,
Action.SnsListPlatformApplications,
Action.SnsListSMSSandboxPhoneNumbers,
Action.SnsListSubscriptions,
Action.SnsListSubscriptionsByTopic,
Action.SnsListTagsForResource,
Action.SnsListTopics,
Action.SnsOptInPhoneNumber,
Action.SnsPublish,
Action.SnsPublishBatch,
Action.SnsPutDataProtectionPolicy,
Action.SnsRemovePermission,
Action.SnsSetEndpointAttributes,
Action.SnsSetPlatformApplicationAttributes,
Action.SnsSetSMSAttributes,
Action.SnsSetSubscriptionAttributes,
Action.SnsSetTopicAttributes,
Action.SnsSubscribe,
Action.SnsTagResource,
Action.SnsUnsubscribe,
Action.SnsUntagResource,
Action.SnsVerifySMSSandboxPhoneNumber,
]
@Module({
imports: [
TypeOrmModule.forFeature([SnsTopic, SnsTopicSubscription]),
AwsSharedEntitiesModule,
SqsModule,
],
providers: [
...handlers,
ExistingActionHandlersProvider(handlers),
DefaultActionHandlerProvider(SnsHandlers, Format.Xml, actions),
],
exports: [
SnsHandlers,
]
})
export class SnsModule {}