I was just playing around a little bit with cl-webdav, but I am not really understanding its API and what I am doing wrong. I wrote the following code (it is just a quick hack to test cl-webdav):
Code: Select all
(in-package :cl-webdav)
(defclass my-resource (cl-webdav:resource) (script-name :initform "Quarkbaellchen"
:accessor hunchentoot:script-name)))
(defvar *number1* (make-instance 'my-resource))
(defvar *number2* (make-instance 'my-resource))
(defmethod resource-exists ((obj my-resource))
(declare (ignore obj)) t)
(defmethod resource-children ((obj my-resource))
(if (eql obj *number2*) nil (list *number2*)))
(defmethod resource-parent ((obj my-resource))
(if (eql obj *number2*) *number1* nil))
(defmethod resource-collection-p ((obj my-resource))
(not (eql obj *number2*)))
(defmethod resource-write-date ((obj my-resource))
(declare (ignore obj)) 1337)
(defmethod resource-length ((obj my-resource))
(if (eql obj *number2*) 11))
(defmethod resource-display-name ((obj my-resource))
(declare (ignore obj)) "Quarkbaellchen")
(defmethod send-content ((obj my-resource) stream)
(if (eql obj *number2*)
(progn (write-sequence '(72 97 108 108 111 32 87 101 108 116 33 10) stream)
(close stream))
(close stream)))
(defmethod get-content ((obj my-resource) stream length)
(declare (ignore obj))
(dotimes (i length) (read-byte stream))
(close stream))
(defmethod remove-resource ((obj my-resource))
(declare (ignore obj)) "Quarkbaellchen")
(defmethod move-resource (source dest)
(declare (ignore source dest)) "Quarkbaellchen")
(defmethod copy-resource (source dest)
(declare (ignore source dest)) "Quarkbaellchen")
(defmethod create-collection ((obj my-resource))
(declare (ignore obj)) "Quarkbaellchen")
(defmethod accept-request-p (class request)
(declare (ignore class request)) "Quarkbaellchen")