aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/client-html.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/client-html.ts')
-rw-r--r--server/lib/client-html.ts42
1 files changed, 39 insertions, 3 deletions
diff --git a/server/lib/client-html.ts b/server/lib/client-html.ts
index d97d23180..32f5d29ab 100644
--- a/server/lib/client-html.ts
+++ b/server/lib/client-html.ts
@@ -1,4 +1,5 @@
1import * as express from 'express' 1import * as express from 'express'
2import * as Bluebird from 'bluebird'
2import { buildFileLocale, getDefaultLocale, is18nLocale, POSSIBLE_LOCALES } from '../../shared/core-utils/i18n/i18n' 3import { buildFileLocale, getDefaultLocale, is18nLocale, POSSIBLE_LOCALES } from '../../shared/core-utils/i18n/i18n'
3import { 4import {
4 AVATARS_SIZE, 5 AVATARS_SIZE,
@@ -6,7 +7,8 @@ import {
6 EMBED_SIZE, 7 EMBED_SIZE,
7 PLUGIN_GLOBAL_CSS_PATH, 8 PLUGIN_GLOBAL_CSS_PATH,
8 WEBSERVER, 9 WEBSERVER,
9 FILES_CONTENT_HASH 10 FILES_CONTENT_HASH,
11 ACCEPT_HEADERS
10} from '../initializers/constants' 12} from '../initializers/constants'
11import { join } from 'path' 13import { join } from 'path'
12import { escapeHTML, isTestInstance, sha256 } from '../helpers/core-utils' 14import { escapeHTML, isTestInstance, sha256 } from '../helpers/core-utils'
@@ -18,7 +20,6 @@ import { readFile } from 'fs-extra'
18import { getActivityStreamDuration } from '../models/video/video-format-utils' 20import { getActivityStreamDuration } from '../models/video/video-format-utils'
19import { AccountModel } from '../models/account/account' 21import { AccountModel } from '../models/account/account'
20import { VideoChannelModel } from '../models/video/video-channel' 22import { VideoChannelModel } from '../models/video/video-channel'
21import * as Bluebird from 'bluebird'
22import { CONFIG } from '../initializers/config' 23import { CONFIG } from '../initializers/config'
23import { logger } from '../helpers/logger' 24import { logger } from '../helpers/logger'
24import { MAccountActor, MChannelActor } from '../types/models' 25import { MAccountActor, MChannelActor } from '../types/models'
@@ -53,7 +54,7 @@ type Tags = {
53 } 54 }
54} 55}
55 56
56export class ClientHtml { 57class ClientHtml {
57 58
58 private static htmlCache: { [path: string]: string } = {} 59 private static htmlCache: { [path: string]: string } = {}
59 60
@@ -505,3 +506,38 @@ export class ClientHtml {
505 return htmlStringPage.replace(CUSTOM_HTML_TAG_COMMENTS.META_TAGS, tagsString) 506 return htmlStringPage.replace(CUSTOM_HTML_TAG_COMMENTS.META_TAGS, tagsString)
506 } 507 }
507} 508}
509
510function sendHTML (html: string, res: express.Response) {
511 res.set('Content-Type', 'text/html; charset=UTF-8')
512
513 return res.send(html)
514}
515
516async function serveIndexHTML (req: express.Request, res: express.Response) {
517 if (req.accepts(ACCEPT_HEADERS) === 'html' ||
518 !req.headers.accept) {
519 try {
520 await generateHTMLPage(req, res, req.params.language)
521 return
522 } catch (err) {
523 logger.error('Cannot generate HTML page.', err)
524 return res.sendStatus(HttpStatusCode.INTERNAL_SERVER_ERROR_500)
525 }
526 }
527
528 return res.sendStatus(HttpStatusCode.NOT_ACCEPTABLE_406)
529}
530
531// ---------------------------------------------------------------------------
532
533export {
534 ClientHtml,
535 sendHTML,
536 serveIndexHTML
537}
538
539async function generateHTMLPage (req: express.Request, res: express.Response, paramLang?: string) {
540 const html = await ClientHtml.getDefaultHTMLPage(req, res, paramLang)
541
542 return sendHTML(html, res)
543}