Sha256: 14c1813dba5d2f12c21080a1fec9bcfe3a7fdb1f1514b4c014cf8796834ad491

Contents?: true

Size: 1.66 KB

Versions: 39

Compression:

Stored size: 1.66 KB

Contents

require 'orange-core/middleware/base'

module Orange::Middleware
  # This middleware handles setting orange.env['route.site_url'] 
  # to a value based on the route, if any. The route is then 
  # trimmed before continuing on.
  # 
  # Options - 
  #   :multi   - does Orange need to handle multiple urls
  #   :fake_it - host url(s) that Orange will fake requests on
  #               ex: :multi => true, :fake_it => 'localhost'
  #                   will fake hostnames as first component of url
  #                   only on localhost
  class RouteSite < Base
    def initialize(app, core, *args)
      opts = args.extract_options!
      opts.with_defaults!(:multi => false, :fake_it => ['localhost'])
      @app = app
      @core = core
      @multi = opts[:multi]
      # Put fake_it into an array, if necessary
      @fake_it = opts[:fake_it].respond_to?(:include?) ? 
        opts[:fake_it] : [opts[:fake_it]]
    end
    
    def packet_call(packet)
      request = packet.request
      path_info = packet['route.path'] || packet.env['PATH_INFO']
      path = path_info.split('/')
      pad = path.shift # Shift off empty first part
      packet['route.faked_site'] = false
      if @multi
        if path.empty?
          packet['route.site_url'] = request.host
        else
          if @fake_it.include?(request.host)
            packet['route.site_url'] = path.shift
            packet['route.faked_site'] = true
          else
            packet['route.site_url'] = request.host
          end
          path.unshift(pad)
          packet['route.path'] = path.join('/')
        end
      else
        packet['route.site_url'] = request.host
      end
      pass packet
    end
  end
end

Version data entries

39 entries across 39 versions & 2 rubygems

Version Path
orange-core-0.7.1 lib/orange-core/middleware/route_site.rb
orange-core-0.7.0 lib/orange-core/middleware/route_site.rb
orange-core-0.6.0 lib/orange-core/middleware/route_site.rb
orange-core-0.5.9 lib/orange-core/middleware/route_site.rb
orange-core-0.5.8 lib/orange-core/middleware/route_site.rb
orange-core-0.5.5 lib/orange-core/middleware/route_site.rb
orange-core-0.5.3 lib/orange-core/middleware/route_site.rb
orange-0.5.5 lib/orange-core/middleware/route_site.rb
orange-0.5.4 lib/orange-core/middleware/route_site.rb
orange-0.5.3 lib/orange-core/middleware/route_site.rb
orange-0.5.2 lib/orange-core/middleware/route_site.rb
orange-0.5.1 lib/orange-core/middleware/route_site.rb
orange-0.4.0 lib/orange-core/middleware/route_site.rb
orange-0.3.9 lib/orange-core/middleware/route_site.rb
orange-0.3.8 lib/orange-core/middleware/route_site.rb
orange-0.3.7 lib/orange-core/middleware/route_site.rb
orange-0.3.6 lib/orange-core/middleware/route_site.rb
orange-0.3.5 lib/orange-core/middleware/route_site.rb
orange-0.3.4 lib/orange-core/middleware/route_site.rb
orange-0.3.3 lib/orange-core/middleware/route_site.rb