保誠-保戶業務員媒合平台
HelenHuang
2022-06-09 9bdb95c9e34cef640534e5e5a1e2225a80442000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
const path = require('path')
const defu = require('defu')
 
const defaults = require('./defaults')
 
module.exports = function createServePlaceholder (_options) {
  // Assign default options
  const options = defu(_options, defaults)
 
  return function servePlaceholderMiddleware (req, res, next) {
    // If response already sent, skip
    if (res.writableEnded) {
      return
    }
    // Get url from req object
    const url = req.url.split('?')[0]
 
    // Get ext of requst url
    const ext = path.extname(url)
 
    // Try to find a handler based on ext
    let handler = options.handlers[ext]
 
    // Skip middleware is handler is explictly set to false
    if (handler === false) {
      return next()
    }
 
    // In case of no handler guessed
    if (typeof handler === 'undefined') {
      if (options.skipUnknown) {
        // Skip this middleware
        return next()
      } else {
        // Use 'default' handler
        handler = 'default'
      }
    }
 
    // Set statusCode
    if (options.statusCode) {
      res.statusCode = options.statusCode
    }
 
    // Try to set appreciate mime type based on handler
    const mime = options.mimes[handler]
    if (mime) {
      res.setHeader('Content-Type', mime)
    }
 
    // Prevent caching
    if (options.noCache) {
      res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate') // HTTP 1.1
      res.setHeader('Pragma', 'no-cache') // HTTP 1.0
      res.setHeader('Expires', '0') // Proxies
    }
 
    // Try to find placeholder based on handler
    const placeholder = options.placeholders[handler]
 
    // Send placeholder and end response
    res.end(placeholder)
  }
}