Browse Source

Refactor sitemap module

pull/4985/head
Thomas Kaul 2 weeks ago
parent
commit
f601420c80
  1. 3
      apps/api/src/app/endpoints/sitemap/sitemap.module.ts
  2. 57
      apps/api/src/app/endpoints/sitemap/sitemap.service.ts

3
apps/api/src/app/endpoints/sitemap/sitemap.module.ts

@ -1,4 +1,5 @@
import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module';
import { I18nModule } from '@ghostfolio/api/services/i18n/i18n.module';
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
@ -7,7 +8,7 @@ import { SitemapService } from './sitemap.service';
@Module({ @Module({
controllers: [SitemapController], controllers: [SitemapController],
imports: [ConfigurationModule], imports: [ConfigurationModule, I18nModule],
providers: [SitemapService] providers: [SitemapService]
}) })
export class SitemapModule {} export class SitemapModule {}

57
apps/api/src/app/endpoints/sitemap/sitemap.service.ts

@ -1,42 +1,39 @@
import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service';
import { SUPPORTED_LANGUAGE_CODES } from '@ghostfolio/common/config';
import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
@Injectable() @Injectable()
export class SitemapService { export class SitemapService {
public constructor(private readonly i18nService: I18nService) {}
public getPersonalFinanceTools({ currentDate }: { currentDate: string }) { public getPersonalFinanceTools({ currentDate }: { currentDate: string }) {
return personalFinanceTools return personalFinanceTools
.map(({ alias, key }) => { .map(({ alias, key }) => {
return [ return SUPPORTED_LANGUAGE_CODES.map((languageCode) => {
'<url>', const resourcesPath = this.i18nService.getTranslation({
` <loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-${alias ?? key}</loc>`, languageCode,
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`, id: 'routes.resources'
'</url>', });
'<url>',
` <loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-${alias ?? key}</loc>`, const personalFinanceToolsPath = this.i18nService.getTranslation({
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`, languageCode,
'</url>', id: 'routes.resources.personalFinanceTools'
'<url>', });
` <loc>https://ghostfol.io/es/recursos/personal-finance-tools/alternativa-de-software-libre-a-${alias ?? key}</loc>`,
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`, const openSourceAlternativeToPath = this.i18nService.getTranslation({
'</url>', languageCode,
'<url>', id: 'routes.resources.personalFinanceTools.openSourceAlternativeTo'
` <loc>https://ghostfol.io/fr/ressources/personal-finance-tools/alternative-open-source-a-${alias ?? key}</loc>`, });
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`,
'</url>', return [
'<url>', '<url>',
` <loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-${alias ?? key}</loc>`, ` <loc>https://ghostfol.io/${languageCode}/${resourcesPath}/${personalFinanceToolsPath}/${openSourceAlternativeToPath}-${alias ?? key}</loc>`,
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`, ` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`,
'</url>', '</url>'
'<url>', ].join('\n');
` <loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-${alias ?? key}</loc>`, });
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`,
'</url>',
'<url>',
` <loc>https://ghostfol.io/pt/recursos/personal-finance-tools/alternativa-de-software-livre-ao-${alias ?? key}</loc>`,
` <lastmod>${currentDate}T00:00:00+00:00</lastmod>`,
'</url>'
].join('\n');
}) })
.join('\n'); .join('\n');
} }

Loading…
Cancel
Save