Spaces:
Paused
Paused
| import { | |
| Controller, | |
| DefaultValuePipe, | |
| Get, | |
| Logger, | |
| Param, | |
| ParseIntPipe, | |
| Query, | |
| Request, | |
| Response, | |
| } from '@nestjs/common'; | |
| import { FeedsService } from './feeds.service'; | |
| import { Response as Res, Request as Req } from 'express'; | |
| ('feeds') | |
| export class FeedsController { | |
| private readonly logger = new Logger(this.constructor.name); | |
| constructor(private readonly feedsService: FeedsService) {} | |
| ('/') | |
| async getFeedList() { | |
| return this.feedsService.getFeedList(); | |
| } | |
| ('/all.(json|rss|atom)') | |
| async getFeeds( | |
| () req: Req, | |
| () res: Res, | |
| ('limit', new DefaultValuePipe(30), ParseIntPipe) limit: number = 30, | |
| ('page', new DefaultValuePipe(1), ParseIntPipe) page: number = 1, | |
| ('mode') mode: string, | |
| ('title_include') title_include: string, | |
| ('title_exclude') title_exclude: string, | |
| ) { | |
| const path = req.path; | |
| const type = path.split('.').pop() || ''; | |
| const { content, mimeType } = await this.feedsService.handleGenerateFeed({ | |
| type, | |
| limit, | |
| page, | |
| mode, | |
| title_include, | |
| title_exclude, | |
| }); | |
| res.setHeader('Content-Type', mimeType); | |
| res.send(content); | |
| } | |
| ('/:feed') | |
| async getFeed( | |
| () res: Res, | |
| ('feed') feed: string, | |
| ('limit', new DefaultValuePipe(10), ParseIntPipe) limit: number = 10, | |
| ('page', new DefaultValuePipe(1), ParseIntPipe) page: number = 1, | |
| ('mode') mode: string, | |
| ('title_include') title_include: string, | |
| ('title_exclude') title_exclude: string, | |
| ('update') update: boolean = false, | |
| ) { | |
| const [id, type] = feed.split('.'); | |
| this.logger.log('getFeed: ', id); | |
| if (update) { | |
| this.feedsService.updateFeed(id); | |
| } | |
| const { content, mimeType } = await this.feedsService.handleGenerateFeed({ | |
| id, | |
| type, | |
| limit, | |
| page, | |
| mode, | |
| title_include, | |
| title_exclude, | |
| }); | |
| res.setHeader('Content-Type', mimeType); | |
| res.send(content); | |
| } | |
| } | |