123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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
- }
|