APP_IDS = require '../../config/APP_IDS'
request = require 'request'

class DustHelpers

  constructor: (req, logger) ->
    @req = req
    @logger = logger

  tradePolicyData: (chunk) =>
    chunk.write @req.tradePolicy

  topbarData: (chunk) =>
    # topbarData = JSON.parse @req.licenseManagerResponse
    # topbarData.config.monetaryUnitCode = @req.tradePolicy.CurrencyCode if @req.tradePolicy?

    # chunk.write JSON.stringify topbarData
    chunk.write @req.licenseManagerResponse

  featuresData: (chunk)  =>
    featuresData = {}
    featuresData = @req.featureToggleResponse if @req.featureToggleResponse?

    chunk.write JSON.stringify featuresData

  version: (chunk, context, body, params) =>
    app = params.app
    major = params.major
    env = params.env or (@req.env if @req.env isnt 'local') or 'stable'
    version = @req.tags[app][env][major]
    @logger.debug "(dust helper 'version') Found #{app} v#{version}"
    chunk.write version

  aclData: (chunk, context, body, params) =>
    env = params.env or @req.env
    app = params.app
    vtexIdCookie = @req.cookies.VtexIdclientAutCookie
    licenseManagerEnv = env
    licenseManagerEnv = '' if env is 'stable' or env is 'local'
    grantedUrl = "http://#{@req.vtex.store}.licensemanager#{licenseManagerEnv}.vtex.com.br/api/license-manager/pvt/resources/granted/#{APP_IDS[app]}"
    headers = 'Cookie': "VtexIdclientAutCookie=#{vtexIdCookie}"
    requestOptions =
      url: grantedUrl
      headers: headers
    @logger.info 'Calling License Manager for ACL data  '
    return chunk.map (chunk) ->
      request requestOptions, (err, response, aclObj) ->
        chunk.end aclObj

  conciergeData: (chunk) =>
    data =
      accountName: @req.vtex.store
      environment: @req.env

    chunk.write JSON.stringify(data)

module.exports = DustHelpers
