Sha256: 427b8b4a08d23bf15d4b5f2870f0c961861f17b7a90f6a55c06d1d06679867e2
Contents?: true
Size: 1.26 KB
Versions: 2
Compression:
Stored size: 1.26 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) 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']) end end def packet @packet end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
orange-0.0.3 | lib/orange/resources/mapper.rb |
orange-0.0.2 | lib/orange/resources/mapper.rb |