浏览代码

Express and Koa integration

Gabriele Lauricella 6 年之前
父节点
当前提交
bf62557251
共有 4 个文件被更改,包括 46 次插入6 次删除
  1. 3 1
      examples/express.js
  2. 3 1
      examples/koa.js
  3. 20 2
      lib/express.js
  4. 20 2
      lib/koa.js

+ 3 - 1
examples/express.js

@@ -26,7 +26,9 @@ async function bootstrap(){
     // because of the asynchronous file-loaders, wait until it has been executed
     await _httpErrorPages.express(_webapp, {
         lang: 'en_US',
-        footer: 'Hello <strong>World</strong>'
+        footer: 'Hello <strong>World</strong>',
+        error: 'Error %code%',
+        page_title: "We've got some trouble | %code% - %title%",
     });
 
     // start service

+ 3 - 1
examples/koa.js

@@ -10,7 +10,9 @@ async function bootstrap(){
     // because of the asynchronous file-loaders, wait until it has been executed - it returns an async handler
     _webapp.use(await _httpErrorPages.koa({
         lang: 'en_US',
-        footer: 'Hello <strong>World</strong>'
+        footer: 'Hello <strong>World</strong>',
+        error: 'Error %code%',
+        page_title: "We've got some trouble | %code% - %title%",
     }));
 
     // demo handler

+ 20 - 2
lib/express.js

@@ -11,7 +11,9 @@ async function createDispatcher(options={}){
         template: options.template || _path.join(__dirname, '../assets/template.ejs'),
         css: options.css || _path.join(__dirname, '../assets/layout.css'),
         lang: options.lang || 'en_US',
-        footer: options.footer || null
+        footer: options.footer || null,
+        error: options.error || null,
+        page_title: options.page_title || null
     };
 
     // load page template
@@ -39,6 +41,19 @@ async function createDispatcher(options={}){
         // extract page date
         const pageData = pages[page];
 
+        // set page title
+        let page_title = undefined;
+        if(opt && opt.page_title) {
+            page_title = opt.page_title.replace('%code%', page);
+            page_title = page_title.replace('%title%', pageData.title);
+        }
+
+        // set error
+        let error = 'Error '+ page 
+        if(opt && opt.error) {
+            error = opt.error.replace('%code%', page);
+        }
+
         // multiple response formats
         res.format({
             // standard http-error-pages
@@ -48,7 +63,10 @@ async function createDispatcher(options={}){
                     code: httpStatusCode,
                     title: pageData.title,
                     message: pageData.message,
-                    footer: opt.footer
+                    footer: opt.footer,
+                    lang: opt.lang.substr(0, 2),
+                    error: error,
+                    page_title: page_title
                 }))
             },
 

+ 20 - 2
lib/koa.js

@@ -11,7 +11,9 @@ async function createDispatcher(options={}){
         template: options.template || _path.join(__dirname, '../assets/template.ejs'),
         css: options.css || _path.join(__dirname, '../assets/layout.css'),
         lang: options.lang || 'en_US',
-        footer: options.footer || null
+        footer: options.footer || null,
+        error: options.error || null,
+        page_title: options.page_title || null
     };
 
     // load page template
@@ -39,6 +41,19 @@ async function createDispatcher(options={}){
         // extract page date
         const pageData = pages[page];
 
+        // set page title
+        let page_title = undefined;
+        if(opt && opt.page_title) {
+            page_title = opt.page_title.replace('%code%', page);
+            page_title = page_title.replace('%title%', pageData.title);
+        }
+
+        // set error
+        let error = 'Error '+ page 
+        if(opt && opt.error) {
+            error = opt.error.replace('%code%', page);
+        }
+
         // multiple response formats
         switch (ctx.accepts('json', 'html', 'text')){
 
@@ -57,7 +72,10 @@ async function createDispatcher(options={}){
                     code: httpStatusCode,
                     title: pageData.title,
                     message: pageData.message,
-                    footer: opt.footer
+                    footer: opt.footer,
+                    lang: opt.lang.substr(0, 2),
+                    error: error,
+                    page_title: page_title
                 });
                 break;