Browse Source

code review changes

pull/5035/head
csehatt741 3 days ago
committed by Thomas Kaul
parent
commit
955fe31862
  1. 8
      apps/api/src/app/endpoints/sitemap/sitemap.controller.ts
  2. 50
      apps/api/src/app/endpoints/sitemap/sitemap.service.ts

8
apps/api/src/app/endpoints/sitemap/sitemap.controller.ts

@ -37,14 +37,14 @@ export class SitemapController {
response.setHeader('content-type', 'application/xml'); response.setHeader('content-type', 'application/xml');
response.send( response.send(
interpolate(this.sitemapXml, { interpolate(this.sitemapXml, {
publicRoutes: this.sitemapService.getPublicRoutes({
currentDate
}),
personalFinanceTools: this.configurationService.get( personalFinanceTools: this.configurationService.get(
'ENABLE_FEATURE_SUBSCRIPTION' 'ENABLE_FEATURE_SUBSCRIPTION'
) )
? this.sitemapService.getPersonalFinanceTools({ currentDate }) ? this.sitemapService.getPersonalFinanceTools({ currentDate })
: '' : '',
publicRoutes: this.sitemapService.getPublicRoutes({
currentDate
})
}) })
); );
} }

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

@ -7,11 +7,11 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
const translationTaggedMessageRegex =
/:.*@@(?<id>[a-zA-Z0-9.]+):(?<message>.+)/;
@Injectable() @Injectable()
export class SitemapService { export class SitemapService {
private static readonly TRANSLATION_TAGGED_MESSAGE_REGEX =
/:.*@@(?<id>[a-zA-Z0-9.]+):(?<message>.+)/;
public constructor( public constructor(
private readonly configurationService: ConfigurationService, private readonly configurationService: ConfigurationService,
private readonly i18nService: I18nService private readonly i18nService: I18nService
@ -26,9 +26,9 @@ export class SitemapService {
publicRoutes.resources.subRoutes.personalFinanceTools.subRoutes publicRoutes.resources.subRoutes.personalFinanceTools.subRoutes
.product; .product;
const params = { const params = {
rootUrl,
languageCode,
currentDate, currentDate,
languageCode,
rootUrl,
urlPostfix: alias ?? key urlPostfix: alias ?? key
}; };
@ -42,31 +42,31 @@ export class SitemapService {
return SUPPORTED_LANGUAGE_CODES.flatMap((languageCode) => { return SUPPORTED_LANGUAGE_CODES.flatMap((languageCode) => {
const params = { const params = {
rootUrl, currentDate,
languageCode, languageCode,
currentDate rootUrl
}; };
// add language specific root URL return [
const urls = [this.createRouteSitemapUrl(params)]; this.createRouteSitemapUrl(params), // create language specific root URL
...this.createSitemapUrls(params, publicRoutes)
urls.push(...this.createSitemapUrls(publicRoutes, params)); ];
return urls;
}).join('\n'); }).join('\n');
} }
private createSitemapUrls( private createSitemapUrls(
routes: Record<string, PublicRoute>, params: { currentDate: string; languageCode: string; rootUrl: string },
params: { rootUrl: string; languageCode: string; currentDate: string } routes: Record<string, PublicRoute>
): string[] { ): string[] {
return Object.values(routes).flatMap((route) => { return Object.values(routes).flatMap((route) => {
if (route.excludeFromSitemap) return []; if (route.excludeFromSitemap) {
return [];
}
const urls = [this.createRouteSitemapUrl({ route, ...params })]; const urls = [this.createRouteSitemapUrl({ route, ...params })];
if (route.subRoutes) { if (route.subRoutes) {
urls.push(...this.createSitemapUrls(route.subRoutes, params)); urls.push(...this.createSitemapUrls(params, route.subRoutes));
} }
return urls; return urls;
@ -74,21 +74,23 @@ export class SitemapService {
} }
private createRouteSitemapUrl({ private createRouteSitemapUrl({
route,
rootUrl,
languageCode,
currentDate, currentDate,
languageCode,
rootUrl,
route,
urlPostfix urlPostfix
}: { }: {
route?: PublicRoute;
rootUrl: string;
languageCode: string;
currentDate: string; currentDate: string;
languageCode: string;
rootUrl: string;
route?: PublicRoute;
urlPostfix?: string; urlPostfix?: string;
}): string { }): string {
const segments = const segments =
route?.routerLink.map((link) => { route?.routerLink.map((link) => {
const match = link.match(translationTaggedMessageRegex); const match = link.match(
SitemapService.TRANSLATION_TAGGED_MESSAGE_REGEX
);
const segment = match const segment = match
? (this.i18nService.getTranslation({ ? (this.i18nService.getTranslation({
languageCode, languageCode,

Loading…
Cancel
Save