Blame view

node_modules/http-proxy-middleware/lib/router.js 1.04 KB
ce4c83ff   wxy   初始提交
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
  var _ = require('lodash')
  var logger = require('./logger.js').getInstance()
  
  module.exports = {
    getTarget: getTarget
  }
  
  function getTarget (req, config) {
    var newTarget
    var router = config.router
  
    if (_.isPlainObject(router)) {
      newTarget = getTargetFromProxyTable(req, router)
    } else if (_.isFunction(router)) {
      newTarget = router(req)
    }
  
    return newTarget
  }
  
  function getTargetFromProxyTable (req, table) {
    var result
    var host = req.headers.host
    var path = req.url
  
    var hostAndPath = host + path
  
    _.forIn(table, function (value, key) {
      if (containsPath(key)) {
        if (hostAndPath.indexOf(key) > -1) { // match 'localhost:3000/api'
          result = table[key]
          logger.debug('[HPM] Router table match: "%s"', key)
          return false
        }
      } else {
        if (key === host) { // match 'localhost:3000'
          result = table[key]
          logger.debug('[HPM] Router table match: "%s"', host)
          return false
        }
      }
    })
  
    return result
  }
  
  function containsPath (v) {
    return v.indexOf('/') > -1
  }