import { Controller, Get, Post, Body, Param, Delete, UseGuards, Req, Query, Res, } from '@nestjs/common'; import { CombinedAuthGuard } from '../auth/combined-auth.guard'; import { PodcastService } from './podcast.service'; import { Response } from 'express'; import * as path from 'path'; @Controller('podcasts') export class PodcastController { constructor(private readonly podcastService: PodcastService) {} @Post() @UseGuards(CombinedAuthGuard) create(@Req() req, @Body() createDto: any) { return this.podcastService.create(req.user.id, createDto); } @Get() @UseGuards(CombinedAuthGuard) findAll(@Req() req, @Query('groupId') groupId?: string) { return this.podcastService.findAll(req.user.id, groupId); } @Get(':id') @UseGuards(CombinedAuthGuard) findOne(@Req() req, @Param('id') id: string) { return this.podcastService.findOne(req.user.id, id); } @Delete(':id') @UseGuards(CombinedAuthGuard) remove(@Req() req, @Param('id') id: string) { return this.podcastService.delete(req.user.id, id); } // Public route for audio streaming (or protected if preferred) @Get('audio/:filename') async streamAudio(@Param('filename') filename: string, @Res() res: Response) { const filePath = path.join(process.cwd(), 'uploads', 'podcasts', filename); res.sendFile(filePath); } }