]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/controllers/services.ts
Add video channel tests
[github/Chocobozzz/PeerTube.git] / server / controllers / services.ts
CommitLineData
d8755eed
C
1import * as express from 'express'
2
164174a6 3import { CONFIG, PREVIEWS_SIZE, EMBED_SIZE } from '../initializers'
d8755eed
C
4import { oembedValidator } from '../middlewares'
5import { VideoInstance } from '../models'
6
7const servicesRouter = express.Router()
8
9servicesRouter.use('/oembed', oembedValidator, generateOEmbed)
10
11// ---------------------------------------------------------------------------
12
13export {
14 servicesRouter
15}
16
17// ---------------------------------------------------------------------------
18
19function generateOEmbed (req: express.Request, res: express.Response, next: express.NextFunction) {
20 const video = res.locals.video as VideoInstance
21 const webserverUrl = CONFIG.WEBSERVER.URL
22 const maxHeight = parseInt(req.query.maxheight, 10)
23 const maxWidth = parseInt(req.query.maxwidth, 10)
24
25 const embedUrl = webserverUrl + video.getEmbedPath()
164174a6
C
26 let thumbnailUrl = webserverUrl + video.getPreviewPath()
27 let embedWidth = EMBED_SIZE.width
28 let embedHeight = EMBED_SIZE.height
d8755eed
C
29
30 if (maxHeight < embedHeight) embedHeight = maxHeight
31 if (maxWidth < embedWidth) embedWidth = maxWidth
32
33 // Our thumbnail is too big for the consumer
34 if (
164174a6
C
35 (maxHeight !== undefined && maxHeight < PREVIEWS_SIZE.height) ||
36 (maxWidth !== undefined && maxWidth < PREVIEWS_SIZE.width)
d8755eed
C
37 ) {
38 thumbnailUrl = undefined
39 }
40
41 const html = `<iframe width="${embedWidth}" height="${embedHeight}" src="${embedUrl}" frameborder="0" allowfullscreen></iframe>`
42
43 const json: any = {
44 type: 'video',
45 version: '1.0',
46 html,
47 width: embedWidth,
48 height: embedHeight,
49 title: video.name,
72c7248b 50 author_name: video.VideoChannel.Author.name,
d8755eed
C
51 provider_name: 'PeerTube',
52 provider_url: webserverUrl
53 }
54
55 if (thumbnailUrl !== undefined) {
56 json.thumbnail_url = thumbnailUrl
164174a6
C
57 json.thumbnail_width = PREVIEWS_SIZE.width
58 json.thumbnail_height = PREVIEWS_SIZE.height
d8755eed
C
59 }
60
61 return res.json(json)
62}