Sha256: 385b5f11328d3904f7dc75510a3c39d55d772b22240500265c8b6bfd17d89def

Contents?: true

Size: 969 Bytes

Versions: 13

Compression:

Stored size: 969 Bytes

Contents

require 'orange-core/core'

module Orange
  class Mapper < Resource
    # Takes a packet extracts request information, then calls packet.route
    def afterLoad
      orange.add_pulp Pulp::Packet_Mapper
    end
    
    def route_to(packet, resource, *args)
      opts = args.extract_options!
      packet = DefaultHash.new unless packet 
      context = opts[:context] || packet['route.context', nil]
      site = packet['route.faked_site'] ? packet['route.site_url', nil] : nil
      args.unshift(resource)
      args.unshift(context)
      args.unshift(site)
      '/'+args.compact.join('/')
    end
  end
  
  module Pulp::Packet_Mapper
    def route_to(resource, *args)
      orange[:mapper].route_to(self, resource, *args)
    end
    
    def reroute(url, type = :real, *args)
      packet['reroute.to'] = url
      packet['reroute.type'] = type
      packet['reroute.args'] = *args if args
      raise Reroute.new(self), 'Unhandled reroute'
    end
  end
  
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
orange-0.2.7 lib/orange-core/resources/mapper.rb
orange-0.2.6 lib/orange-core/resources/mapper.rb
orange-0.2.5 lib/orange-core/resources/mapper.rb
orange-0.2.4 lib/orange-core/resources/mapper.rb
orange-0.2.3 lib/orange-core/resources/mapper.rb
orange-0.1.10 lib/orange-core/resources/mapper.rb
orange-0.1.8 lib/orange-core/resources/mapper.rb
orange-0.1.7 lib/orange-core/resources/mapper.rb
orange-0.1.4 lib/orange-core/resources/mapper.rb
orange-0.1.2 lib/orange-core/resources/mapper.rb
orange-0.1.0 lib/orange-core/resources/mapper.rb
orange-0.0.15 lib/orange-core/resources/mapper.rb
orange-0.0.14 lib/orange-core/resources/mapper.rb