diff --git a/src/main/resource.cl b/src/main/resource.cl index 8b37f36..6ae7d52 100644 --- a/src/main/resource.cl +++ b/src/main/resource.cl @@ -84,3 +84,18 @@ (return `(let ((,data-sym (parse-form-data ,request))) (let ,bindings ,@body))))) + +;;; Some further utility resources + +;;; Redirection + +(defclass redirector-resource (resource) + ((code :initarg :code :initform +HTTP-Code-Moved-Temporarily+ + :reader redirector-resource-code) + (destination :initarg :destination + :reader redirector-resource-destination))) + +(defmethod access-resource ((resource redirector-resource) request) + (create-standard-response + request (redirector-resource-code resource) + :location (redirector-resource-destination resource)))