module Configuration

extend ActiveSupport::Concern
included do
  before do
    if @env["CONTENT_TYPE"] == "application/json"
      request.body.rewind
      params.merge!(JSON.parse(request.body.read))
    end
  end

  set :public_folder, 'public'
  set :root, Pathname.new(__dir__).parent
  <% @extensions.each do |e| %>
  register <%= e %>
  <% end %>
  <% unless @options[:api_only] %>
  # sessions
  enable :sessions
  set :session_secret, ENV["SINATRA_SECRET_KEY"] || File.read("config/.secret_key")

  # Asset pipeline
  set :assets_prefix, '/assets'
  set :sprockets, Sprockets::Environment.new
  set :digest_assets, false
  set :views, 'app/views'

  configure do
    sprockets.append_path root.join('app', 'assets', 'stylesheets')
    sprockets.append_path root.join('app', 'assets', 'javascripts')
    sprockets.append_path root.join('app', 'assets', 'images')
    uglify = Uglifier.new(:harmony => true)
    sprockets.js_compressor  = uglify
    sprockets.css_compressor = :scss

    Sprockets::Helpers.configure do |config|
      config.environment = sprockets
      config.prefix      = assets_prefix
      config.digest      = digest_assets
      config.public_path = public_folder

      # Force to debug mode in development mode
      # Debug mode automatically sets
      # expand = true, digest = false, manifest = false
      config.debug       = true if development?
    end
  end

  helpers do
    include Sprockets::Helpers
  end
  <% end %>

  # localisation
  configure do
    I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
    I18n.load_path += Dir[root.join('config', 'locales', '*.yml')]
    I18n.backend.load_translations
  end
end

end