sensible/trackets-ruby

View on GitHub
lib/trackets/configuration.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Trackets
  class Configuration

    DEFAULT_WHITELISTED_ENV_KEYS = [
      "REQUEST_METHOD",
      "PATH_INFO",
      "QUERY_STRING",
      "SCRIPT_NAME",
      "REMOTE_ADDR",
      "SERVER_ADDR",
      "SERVER_NAME",
      "SERVER_PORT",
      "HTTP_HOST",
      "HTTP_CONNECTION",
      "CONTENT_LENGTH",
      "HTTP_ACCEPT",
      "HTTP_ORIGIN",
      "HTTP_USER_AGENT",
      "CONTENT_TYPE",
      "HTTP_REFERER",
      "HTTP_ACCEPT_ENCODING",
      "HTTP_ACCEPT_LANGUAGE",
      "REMOTE_PORT",
      "ORIGINAL_FULLPATH"
    ].freeze
    DEFAULT_BLACKLISTED_PARAMS = ["password", "password_confirmation", "card_number", "cvv"].freeze
    DEFAULT_API_URL = "https://trackets.com"
    DEFAULT_LOAD_PLUGINS = [:sidekiq]
    DEFAULT_ENABLED_ENV = [:production]

    attr_accessor :api_url, :public_api_key, :private_api_key, :environment_name,
      :project_root, :framework, :whitelisted_env, :blacklisted_params, :async,
      :load_plugins, :enabled_env, :force
    alias_method :async?, :async
    alias_method :force?, :force

    def initialize
      @api_url = DEFAULT_API_URL
      @whitelisted_env = DEFAULT_WHITELISTED_ENV_KEYS
      @blacklisted_params = DEFAULT_BLACKLISTED_PARAMS
      @async = false
      @load_plugins = DEFAULT_LOAD_PLUGINS
      @enabled_env = DEFAULT_ENABLED_ENV
      @force = false
    end

    def rack_filter_keys(rack_env = nil)
      @rack_filter_keys ||= rack_env ? Array(rack_env["action_dispatch.parameter_filter"]) : []
    end

    def blacklisted_keys(rack_env = nil)
      @blacklisted_keys ||= (blacklisted_params + rack_filter_keys).map(&:to_s)
    end

    def blacklisted_key?(key, rack_env = nil)
      blacklisted_keys.include?(key)
    end

    def enabled?
      enabled_env.include?(environment_name.to_sym) || force?
    end

  end
end