require File.expand_path('../boot', __FILE__)

require 'rails/all'

# initialize ActiveRecord's db connection
# why? Because user.rb uses validates :acceptance, which needs a connection to the database. if there is better way...
ActiveRecord::Base.establish_connection(YAML::load(File.open('config/database.yml'))[Rails.env])

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line

  Bundler.require(*Rails.groups)
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

include JamRuby

User = JamRuby::User
Band = JamRuby::Band


module JamAdmin
  class Application < Rails::Application
    config.eager_load = false
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Custom directories with classes and modules you want to be autoloadable.
    config.autoload_paths += %W(#{config.root}/lib)

    # Only load the plugins named here, in the order given (default is alphabetical).
    # :all can be used as a placeholder for all plugins not explicitly named.
    # config.plugins = [ :exception_notification, :ssl_requirement, :all ]

    # Activate observers that should always be running.
    config.active_record.observers = "JamRuby::InvitedUserObserver"

    config.assets.paths << "#{Rails.root}/app/assets/csvs"
    config.assets.prefix = "#{ENV['RAILS_RELATIVE_URL_ROOT']}/assets"

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    # config.i18n.default_locale = :de

    # Configure the default encoding used in templates for Ruby 1.9.
    config.encoding = "utf-8"

    # Configure sensitive parameters which will be filtered from the log file.
    config.filter_parameters += [:password]

    # Enable escaping HTML in JSON.
    config.active_support.escape_html_entities_in_json = true

    # suppress locale complaint: http://stackoverflow.com/questions/20361428/rails-i18n-validation-deprecation-warning
    config.i18n.enforce_available_locales = false

    # Use SQL instead of Active Record's schema dumper when creating the database.
    # This is necessary if your schema can't be completely dumped by the schema dumper,
    # like if you have constraints or database-specific column types
    # config.active_record.schema_format = :sql

    # Enforce whitelist mode for mass assignment.
    # This will create an empty whitelist of attributes available for mass-assignment for all models
    # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
    # parameters by using an attr_accessible or attr_protected declaration.
    config.active_record.whitelist_attributes = true

    # Enable the asset pipeline
    config.assets.enabled = true

    # Version of your assets, change this if you want to expire all your assets
    config.assets.version = '1.0'

    # to make active_admin assets precompile
    config.assets.precompile += ['active_admin.css', 'active_admin.js', 'active_admin/print.css']

    ###### THESE ARE JAM-WEB VALUES
    config.external_hostname = ENV['EXTERNAL_HOSTNAME'] || 'localhost'
    config.external_port = ENV['EXTERNAL_PORT'] || 3000
    config.external_protocol = ENV['EXTERNAL_PROTOCOL'] || 'http://'
    config.external_root_url = "#{config.external_protocol}#{config.external_hostname}#{(config.external_port == 80 || config.external_port == 443) ? '' : ':' + config.external_port.to_s}"
    config.recurly_root_url = 'https://jamkazam-development.recurly.com'
    # Use Private API Keys to communicate with Recurly's API v2. See https://docs.recurly.com/api/basics/authentication to learn more.
    config.recurly_private_api_key = '55f2fdfa4d014e64a94eaba1e93f39bb'
    # Use Public Keys to identify your site when using Recurly.js. See https://docs.recurly.com/js/#include to learn more.
    config.recurly_public_api_key = 'ewr1-HciusxMNfSSjz5WlupGk0C'


    # where is rabbitmq?
    config.rabbitmq_host = "127.0.0.1"
    config.rabbitmq_port = 5672

    # set to false to instead use amazon. You will also need to supply amazon secrets
    config.store_artifacts_to_disk = false
    config.storage_type = :fog

    # these only need to be set if store_artifact_to_files = false
    config.aws_access_key_id = ENV['AWS_KEY']
    config.aws_secret_access_key = ENV['AWS_SECRET']
    config.aws_region = 'us-east-1'
    config.aws_bucket_public = 'jamkazam-dev-public'
    config.aws_bucket = 'jamkazam-dev'
    config.aws_cache = '315576000'
    config.aws_fullhost = "#{config.aws_bucket_public}.s3.amazonaws.com"

    # cloudfront host
    config.cloudfront_host = "d34f55ppvvtgi3.cloudfront.net"

    # for carrierwave_direct
    config.action_controller.allow_forgery_protection = false

    config.redis_host = "localhost:6379"

    config.bugs_alias                 = 'bugs@jamkazam.com'
    config.email_support_alias        = 'support@jamkazam.com'
    config.email_social_alias         = 'social@jamkazam.com'
    config.email_alerts_alias         = 'alerts@jamkazam.com' # should be used for 'oh no' server down/service down sorts of emails
    config.email_generic_from         = 'nobody@jamkazam.com'
    config.email_smtp_address         = 'email-smtp.us-east-1.amazonaws.com'
    config.email_smtp_port            = 587
    config.email_smtp_domain          = 'www.jamkazam.com'
    config.email_smtp_authentication  = :plain
    config.email_smtp_user_name       = 'AKIA2SXEHOQFKRW3OWMG' # ses-smtp-user.20200526-212148
    config.email_smtp_password        = 'BJZEdTkTcuIrN1koG40PQ2JLHdMmTprC/aLj48Q5KhWJ'
    config.email_smtp_starttls_auto   = true

    config.verify_email_enabled = false
    config.musician_count = '200,000+'
    config.facebook_app_id       = ENV['FACEBOOK_APP_ID'] || '468555793186398'
    config.facebook_app_secret   = ENV['FACEBOOK_APP_SECRET'] || '546a5b253972f3e2e8b36d9a3dd5a06e'

    config.twitter_app_id       = ENV['TWITTER_APP_ID'] || 'nQj2oEeoJZxECC33tiTuIg'
    config.twitter_app_secret   = ENV['TWITTER_APP_SECRET'] || 'Azcy3QqfzYzn2fsojFPYXcn72yfwa0vG6wWDrZ3KT8'

    config.ffmpeg_path = ENV['FFMPEG_PATH'] || (File.exist?('/usr/local/bin/ffmpeg') ? '/usr/local/bin/ffmpeg' : '/usr/bin/ffmpeg')
    config.normalize_ogg_path = ENV['NORMALIZE_OGG_PATH'] || (File.exist?('/usr/local/bin/normalize-ogg') ? '/usr/local/bin/normalize-ogg' : '/usr/bin/normalize-ogg')
    config.normalize_mp3_path = ENV['NORMALIZE_MP3_PATH'] || (File.exist?('/usr/local/bin/normalize-mp3') ? '/usr/local/bin/normalize-mp3' : '/usr/bin/normalize-mp3')

    config.max_audio_downloads = 100

    # recording upload/download configs
    config.max_track_upload_failures = 10
    config.max_track_part_upload_failures = 3


    # these values work out of the box with default settings of an influx install (you do have to add a development database by hand though)
    config.influxdb_database = "development"
    config.influxdb_username = "root"
    config.influxdb_password = "root"
    config.influxdb_hosts    = ["localhost"]
    config.influxdb_port     = 8086
    config.influxdb_ignored_environments = ENV["INFLUXDB_ENABLED"] == '1' ? ['test', 'cucumber'] : ['test', 'cucumber', 'development']

    config.jamtracks_dir = ENV['JAMTRACKS_DIR'] || File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "jamtracks"))
    config.jmep_dir = ENV['JMEP_DIR'] || File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "jmep"))

    config.email_dump_code = 'rcAUyC3TZCbgGx4YQpznBRbNnQMXW5iKTzf9NSBfzMLsnw9dRQ'
    config.data_dump_code = 'rcAUyC3TZCbgGx4Y3321eudbNnQMXW5iKTzf9NSBfzMLsnw9dRQ'

    config.admin_port = ENV['ADMIN_PORT'] || 3333
    config.admin_root_url = "#{config.external_protocol}#{config.external_hostname}#{(config.admin_port == 80 || config.admin_port == 443) ? '' : ':' + config.admin_port.to_s}"

    config.download_tracker_day_range = 30
    config.max_user_ip_address = 10
    config.max_multiple_users_same_ip = 2
  end
end
