Sha256: 2b6e419da577fa128cbb8ec413cd03f3a82bf2bd768d50a0f909740f909f4f52

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

require 'sinatra/base'
require 'erb'
require 'letter_opener/web/message'
module LetterOpener
  module Web
    class App < Sinatra::Base

      set :root,          File.expand_path(File.dirname(__FILE__))
      set :public_folder, Proc.new { "#{root}/assets" }
      set :views,         Proc.new { "#{root}/views" }

      enable :method_override

      if defined?(Padrino)
        def self.setup_application!; end
        def self.dependencies; []; end
        def self.reload!; end
        set :app_name, :letter_opener
        if Padrino.version < '0.12.0'
          set :erb, :engine_class => Padrino::Erubis::SafeBufferTemplate
        end
      end

      def root_path
        "#{env['SCRIPT_NAME']}/"
      end

      get '/' do
        @messages = Message.load_all
        erb :index
      end

      get '/:id.?:format?' do
        @message = Message.find(params[:id])
        halt 404 unless @message
        begin
          @message.render(params[:format]).to_s.
            gsub(/"plain\.html"/, %Q("#{root_path + @message.id}")).
            gsub(/"rich\.html"/,  %Q("#{root_path + @message.id}.html")).
            gsub(/"attachments\//, %Q("#{root_path + @message.id}/attachments/))
        rescue ArgumentError
          halt 404
        end
      end

      get '/:id/attachments/:file' do
        @message = Message.find(params[:id])
        halt 404 unless @message
        halt 404 unless attachment = @message.attachments[params[:file]]
        send_file attachment, :disposition => 'attachment', :type => 'application/octet-stream'
      end

      delete '/' do
        Message.bulk_delete(params[:message_ids].split(',').map(&:strip)) if params[:message_ids]
        redirect root_path
      end

      error 404 do
        'Not Found'
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
letter_opener-web-0.1.2 lib/letter_opener/web/app.rb