Sha256: 47b3f5cdc63ce1d1ce90b2ec2078029af1ce2589f2c61fb91ad0e752659f1f96
Contents?: true
Size: 1.34 KB
Versions: 1
Compression:
Stored size: 1.34 KB
Contents
require 'orange/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) packet = DefaultHash.new unless packet 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) packet['reroute.to'] = url packet['reroute.type'] = type raise Reroute.new(self), 'Unhandled reroute' end end class Reroute < Exception def initialize(packet) @packet = packet @packet[:headers] = {"Content-Type" => 'text/html', "Location" => self.url} @packet[:status] = 302 end def url case packet['reroute.type'] when :real packet['reroute.to'] # Parsing for orange urls or something when :orange packet.route_to(packet['reroute.to']) else packet['reroute.to'] end end def packet @packet end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
orange-0.0.4 | lib/orange/resources/mapper.rb |