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