mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import express from 'express'
 | |
| import { HttpStatusCode } from '@peertube/peertube-models'
 | |
| import { ApiCache, APICacheOptions } from './shared/index.js'
 | |
| 
 | |
| const defaultOptions: APICacheOptions = {
 | |
|   excludeStatus: [
 | |
|     HttpStatusCode.FORBIDDEN_403,
 | |
|     HttpStatusCode.NOT_FOUND_404
 | |
|   ]
 | |
| }
 | |
| 
 | |
| export function cacheRoute (duration: string) {
 | |
|   const instance = new ApiCache(defaultOptions)
 | |
| 
 | |
|   return instance.buildMiddleware(duration)
 | |
| }
 | |
| 
 | |
| export function cacheRouteFactory (options: APICacheOptions = {}) {
 | |
|   const instance = new ApiCache({ ...defaultOptions, ...options })
 | |
| 
 | |
|   return { instance, middleware: instance.buildMiddleware.bind(instance) }
 | |
| }
 | |
| 
 | |
| // ---------------------------------------------------------------------------
 | |
| 
 | |
| export function buildPodcastGroupsCache (options: {
 | |
|   channelId: number
 | |
| }) {
 | |
|   return 'podcast-feed-' + options.channelId
 | |
| }
 | |
| 
 | |
| export function buildAPVideoChaptersGroupsCache (options: {
 | |
|   videoId: number | string
 | |
| }) {
 | |
|   return 'ap-video-chapters-' + options.videoId
 | |
| }
 | |
| 
 | |
| // ---------------------------------------------------------------------------
 | |
| 
 | |
| export const videoFeedsPodcastSetCacheKey = [
 | |
|   (req: express.Request, res: express.Response, next: express.NextFunction) => {
 | |
|     if (req.query.videoChannelId) {
 | |
|       res.locals.apicacheGroups = [ buildPodcastGroupsCache({ channelId: req.query.videoChannelId }) ]
 | |
|     }
 | |
| 
 | |
|     return next()
 | |
|   }
 | |
| ]
 | |
| 
 | |
| export const apVideoChaptersSetCacheKey = [
 | |
|   (req: express.Request, res: express.Response, next: express.NextFunction) => {
 | |
|     if (req.params.id) {
 | |
|       res.locals.apicacheGroups = [ buildAPVideoChaptersGroupsCache({ videoId: req.params.id }) ]
 | |
|     }
 | |
| 
 | |
|     return next()
 | |
|   }
 | |
| ]
 |