<NME> static.rb
<BEF> # encoding: utf-8

# stolen from rails
require 'rack/utils'

class Rango
  class Static
    FILE_METHODS = %w(GET HEAD).freeze

    # @since 0.0.2
    def initialize(app)
      @app = app
      @file_server = ::Rack::File.new(Project.settings.media_root)
    end

    # @since 0.0.2
    def call(env)
      path        = env['PATH_INFO'].chomp('/')
      method      = env['REQUEST_METHOD']

      prefix = Project.settings.media_prefix.chomp("/")
      prefix_regexp = Regexp.new(%r[^#{prefix}/])
      if path.match(prefix_regexp) && FILE_METHODS.include?(method)
        if file_exist?(path)
          return @file_server.call(env)
          # else
          # cached_path = directory_exist?(path) ? "#{path}/index" : path
          # cached_path += ::ActionController::Base.page_cache_extension
          #
          # if file_exist?(cached_path)
          #   env['PATH_INFO'] = cached_path
          #   return @file_server.call(env)
          # end
        end
      end

      @app.call(env)
    end

    private
    def file_exist?(path)
      full_path = File.join(@file_server.root, ::Rack::Utils.unescape(path))
      File.file?(full_path) && File.readable?(full_path)
    end

    def directory_exist?(path)
      full_path = File.join(@file_server.root, ::Rack::Utils.unescape(path))
      Dir.exist?(full_path) && File.readable?(full_path)
    end
  end
end

<MSG> All middlewares moved to the Rack::Middlewares module (issue #25)

<DFF> @@ -4,48 +4,50 @@
 require 'rack/utils'
 
 class Rango
-  class Static
-    FILE_METHODS = %w(GET HEAD).freeze
-
-    # @since 0.0.2
-    def initialize(app)
-      @app = app
-      @file_server = ::Rack::File.new(Project.settings.media_root)
-    end
+  module Middlewares
+    class Static
+      FILE_METHODS = %w(GET HEAD).freeze
+
+      # @since 0.0.2
+      def initialize(app)
+        @app = app
+        @file_server = ::Rack::File.new(Project.settings.media_root)
+      end
 
-    # @since 0.0.2
-    def call(env)
-      path        = env['PATH_INFO'].chomp('/')
-      method      = env['REQUEST_METHOD']
-
-      prefix = Project.settings.media_prefix.chomp("/")
-      prefix_regexp = Regexp.new(%r[^#{prefix}/])
-      if path.match(prefix_regexp) && FILE_METHODS.include?(method)
-        if file_exist?(path)
-          return @file_server.call(env)
-          # else
-          # cached_path = directory_exist?(path) ? "#{path}/index" : path
-          # cached_path += ::ActionController::Base.page_cache_extension
-          #
-          # if file_exist?(cached_path)
-          #   env['PATH_INFO'] = cached_path
-          #   return @file_server.call(env)
-          # end
+      # @since 0.0.2
+      def call(env)
+        path        = env['PATH_INFO'].chomp('/')
+        method      = env['REQUEST_METHOD']
+
+        prefix = Project.settings.media_prefix.chomp("/")
+        prefix_regexp = Regexp.new(%r[^#{prefix}/])
+        if path.match(prefix_regexp) && FILE_METHODS.include?(method)
+          if file_exist?(path)
+            return @file_server.call(env)
+            # else
+            # cached_path = directory_exist?(path) ? "#{path}/index" : path
+            # cached_path += ::ActionController::Base.page_cache_extension
+            #
+            # if file_exist?(cached_path)
+            #   env['PATH_INFO'] = cached_path
+            #   return @file_server.call(env)
+            # end
+          end
         end
-      end
 
-      @app.call(env)
-    end
+        @app.call(env)
+      end
 
-    private
-    def file_exist?(path)
-      full_path = File.join(@file_server.root, ::Rack::Utils.unescape(path))
-      File.file?(full_path) && File.readable?(full_path)
-    end
+      private
+      def file_exist?(path)
+        full_path = File.join(@file_server.root, ::Rack::Utils.unescape(path))
+        File.file?(full_path) && File.readable?(full_path)
+      end
 
-    def directory_exist?(path)
-      full_path = File.join(@file_server.root, ::Rack::Utils.unescape(path))
-      Dir.exist?(full_path) && File.readable?(full_path)
+      def directory_exist?(path)
+        full_path = File.join(@file_server.root, ::Rack::Utils.unescape(path))
+        Dir.exist?(full_path) && File.readable?(full_path)
+      end
     end
   end
 end

All middlewares moved to the Rack::Middlewares module (issue #25)