# Author: VTEX

class GetEnvironment

  constructor: (options) ->
    @options = options

  ########################
  # Handler              #
  ########################

  handler: (req, res, next) =>
    @options.logger?.debug('GetEnvironment middleware')
    return next() if req.url.indexOf('/meta/whoami') is 0

    envHeader = req.headers['x-vtex-environment']
    envCookie = req.cookies['concierge-env']
    envQuery = req.query?['environment']?.replace('/', '')
    envHost = req.vtex.hostParts?[2].replace('commerce', '')

    req.vtex.environment = req.env = envHeader or envCookie or envQuery or envHost or 'stable' # example: stable

    return next() if not req.cookies.VtexIdclientAutCookie

    if not req.vtex.environment
      @options.logger?.warn 'Could not get environment!'
      @options.logger?.debug {envHeader: envHeader, envCookie: envCookie, envQuery: envQuery, envHost: envHost}

    next()

module.exports = GetEnvironment
