postiz/libraries/nestjs-libraries/src/integrations/integration.manager.ts

54 lines
2.1 KiB
TypeScript

import { Injectable } from '@nestjs/common';
import { XProvider } from '@gitroom/nestjs-libraries/integrations/social/x.provider';
import { SocialProvider } from '@gitroom/nestjs-libraries/integrations/social/social.integrations.interface';
import { LinkedinProvider } from '@gitroom/nestjs-libraries/integrations/social/linkedin.provider';
import { RedditProvider } from '@gitroom/nestjs-libraries/integrations/social/reddit.provider';
import { DevToProvider } from '@gitroom/nestjs-libraries/integrations/article/dev.to.provider';
import { HashnodeProvider } from '@gitroom/nestjs-libraries/integrations/article/hashnode.provider';
import { MediumProvider } from '@gitroom/nestjs-libraries/integrations/article/medium.provider';
import { ArticleProvider } from '@gitroom/nestjs-libraries/integrations/article/article.integrations.interface';
import { FacebookProvider } from '@gitroom/nestjs-libraries/integrations/social/facebook.provider';
import { InstagramProvider } from '@gitroom/nestjs-libraries/integrations/social/instagram.provider';
const socialIntegrationList = [
new XProvider(),
new LinkedinProvider(),
new RedditProvider(),
new FacebookProvider(),
new InstagramProvider(),
];
const articleIntegrationList = [
new DevToProvider(),
new HashnodeProvider(),
new MediumProvider(),
];
@Injectable()
export class IntegrationManager {
getAllIntegrations() {
return {
social: socialIntegrationList.map((p) => ({
name: p.name,
identifier: p.identifier,
})),
article: articleIntegrationList.map((p) => ({
name: p.name,
identifier: p.identifier,
})),
};
}
getAllowedSocialsIntegrations() {
return socialIntegrationList.map((p) => p.identifier);
}
getSocialIntegration(integration: string): SocialProvider {
return socialIntegrationList.find((i) => i.identifier === integration)!;
}
getAllowedArticlesIntegrations() {
return articleIntegrationList.map((p) => p.identifier);
}
getArticlesIntegration(integration: string): ArticleProvider {
return articleIntegrationList.find((i) => i.identifier === integration)!;
}
}