# Author: VTEX

class GetAccountName

  constructor: (options) ->
    @options = options

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

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

    storeHeader = req.headers['x-vtex-account-name']
    storeCookie = req.cookies['concierge-account']
    storeQuery = req.query?['an']?.replace('/', '')
    storeHost = req.vtex.hostParts?[1]

    req.vtex.store = storeHeader or storeCookie or storeQuery or storeHost # example: basedevmkp

    # TODO -> return if its not a well formed name

    return next() if not req.cookies.VtexIdclientAutCookie

    if not req.vtex.store
      @options.logger?.warn 'Could not get store name!'
      @options.logger?.debug {storeHeader: storeHeader, storeCookie: storeCookie, storeQuery: storeQuery, storeHost: storeHost}

    next()

module.exports = GetAccountName
