Files
gridpilot.gg/adapters/media/ports/InMemoryImageServiceAdapter.ts
2025-12-30 00:15:35 +01:00

49 lines
1.8 KiB
TypeScript

import type { IImageServicePort } from '@core/racing/application/ports/IImageServicePort';
import type { Logger } from '@core/shared/application';
export class InMemoryImageServiceAdapter implements IImageServicePort {
constructor(private readonly logger: Logger) {
this.logger.info('InMemoryImageServiceAdapter initialized.');
}
getDriverAvatar(driverId: string): string {
this.logger.debug(`[InMemoryImageServiceAdapter] Getting avatar for driver: ${driverId}`);
const driverNumber = Number(driverId.replace('driver-', ''));
const index = Number.isFinite(driverNumber) ? driverNumber % 3 : 0;
const avatars = [
'/images/avatars/male-default-avatar.jpg',
'/images/avatars/female-default-avatar.jpeg',
'/images/avatars/neutral-default-avatar.jpeg',
] as const;
return avatars[index] ?? avatars[0];
}
getTeamLogo(teamId: string): string {
this.logger.debug(`[InMemoryImageServiceAdapter] Getting logo for team: ${teamId}`);
const teamNumber = Number(teamId.replace('team-', ''));
const index = Number.isFinite(teamNumber) ? teamNumber % 6 : 0;
const logos = [
'/images/ff1600.jpeg',
'/images/header.jpeg',
'/images/avatars/male-default-avatar.jpg',
'/images/avatars/female-default-avatar.jpeg',
'/images/avatars/neutral-default-avatar.jpeg',
'/images/leagues/placeholder-cover.svg',
] as const;
return logos[index] ?? logos[0];
}
getLeagueCover(leagueId: string): string {
this.logger.debug(`[InMemoryImageServiceAdapter] Getting cover for league: ${leagueId}`);
return '/images/header.jpeg';
}
getLeagueLogo(leagueId: string): string {
this.logger.debug(`[InMemoryImageServiceAdapter] Getting logo for league: ${leagueId}`);
return '/images/ff1600.jpeg';
}
}