###
Module dependencies.
###

class WhiteList

  constructor: (@publicUris) ->
    @publicUris or= [
      '/admin/Content'
      '/admin/Scripts'
      '/meta/whoami'
      '/admin/login'
      /api\/.*/
      /admin\/[\w_-]*\/lib\/.*/
      /admin\/[\w_-]*\/script\/.*/
      /admin\/[\w_-]*\/style\/.*/
      /admin\/[\w_-]*\/i18n\/.*/
    ]

  isInWhiteList: (url) ->
    throw new Error '"url" parameter is required' if not url?

    for publicUri in @publicUris
      return true if typeof publicUri is 'string' and url.indexOf(publicUri) is 0
      return true if typeof publicUri is 'object' and publicUri.test(url)

    return false

  addToPublicUris: (publicUris) ->
    throw new Error '"publicUris" is required' if not publicUris?
    
    if typeof publicUris.push is 'function'
      @publicUris = @publicUris.concat publicUris
    else
      @publicUris.push publicUris

module.exports = WhiteList