File: redirect-handler.lisp

package info (click to toggle)
araneida 0.90.1-dfsg-6
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 696 kB
  • ctags: 643
  • sloc: lisp: 4,878; perl: 166; sh: 109; makefile: 34
file content (15 lines) | stat: -rw-r--r-- 506 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(in-package :araneida)

;;; when moving resources around, it's important not to break old URLs

(defclass redirect-handler (handler)
  ((location :initarg :location :accessor redirect-location)))

(defmethod handle-request-response ((handler redirect-handler) method request)
  (let* ((loc (redirect-location handler))
	 (base (typecase loc
		 (url loc) 
		 (string (merge-url (request-base-url request) loc)))))
    (request-redirect request 
		      (merge-url base (request-unhandled-part request)))))