aboutsummaryrefslogtreecommitdiff
path: root/module/calp/webdav/resource/calendar.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/calp/webdav/resource/calendar.scm')
-rw-r--r--module/calp/webdav/resource/calendar.scm130
1 files changed, 14 insertions, 116 deletions
diff --git a/module/calp/webdav/resource/calendar.scm b/module/calp/webdav/resource/calendar.scm
index 6c20df31..314d66aa 100644
--- a/module/calp/webdav/resource/calendar.scm
+++ b/module/calp/webdav/resource/calendar.scm
@@ -1,129 +1,27 @@
(define-module (calp webdav resource calendar)
- :use-module (srfi srfi-88)
- :use-module (hnh util)
- :use-module (oop goops)
- :use-module (vcomponent)
- :use-module (datetime)
- :use-module (sxml namespaced)
- :use-module (calp webdav resource)
- :use-module (calp webdav property)
- :use-module (calp namespaces)
- :use-module (ice-9 hash-table)
- :use-module ((vcomponent formats ical) :prefix #{ics:}#)
- :export (<calendar-resource>
+ ;; :use-module (hnh util)
+ ;; :use-module (datetime)
+ ;; :use-module (sxml namespaced util)
+ ;; :use-module (calp webdav property)
+ ;; :use-module (ice-9 hash-table)
+ :use-module (calp webdav resource calendar collection)
+ :use-module (calp webdav resource calendar object)
+ :export (
calendar-resource?
- content
- caldav-properties)
+)
)
-;;; Resoruces containing calendar components
-(define-class <calendar-resoruce> (<resource>)
- (description init-value: #f
- accessor: description)
- (content init-value: (make-vcomponent 'VIRTUAL)
- accessor: content))
+(define cm (module-public-interface (current-module)))
+(module-use! cm (resolve-interface '(calp webdav resource calendar collection)))
+(module-use! cm (resolve-interface '(calp webdav resource calendar object)))
(define (calendar-resource? x)
- (is-a? x <calendar-resource>))
+ (or (calendar-collection-resource? x)
+ (calendar-object-resource? x)))
-(define-method (live-properties (self <calendar-resource>))
- (append (next-method)
- (map (lambda (pair) (cons (xml caldav (car pair)) (cdr pair)))
- caldav-properties)))
-(define-method (creationdate (self <calendar-resource>))
- (propstat 200
- `((,(xml webdav 'creationdate)
- (-> (content self)
- (prop 'CREATED)
- ;; TODO timezone
- (datetime->string "~Y-~m-~dT~H:~M:~SZ"))))))
-(define-method (displayname (self <calendar-resource>))
- (propstat 200
- `((,(xml webdav 'displayname)
- ,(prop (content self) 'displayname)))))
-(define-method (getcontentlength (self <calendar-resoruce>))
- ;; TODO which representation should be choosen to calculate length?
- (propstat 501 `((,(xml webdav 'getcontentlength)))))
-
-(define-method (getcontenttyype (self <calendar-resource>))
- ;; TODO different representations
- (propstat 200 `((,(xml webdav 'getcontentlength)
- "text/calendar"))))
-
-
-(define-method (getlastmodified (self <calendar-resource>))
- (propstat 200
- `((,(xml webdav 'getlastmodified)
- (string->datetime (prop (content self) 'LAST-MODIFIED)
- "~Y~m~dT~H~M~S")))))
-
-
-(define-method (resourcetype (self <calendar-resource>))
- (propstat 200
- `((,(xml webdav 'resourcetype)
- (,(xml caldav 'calendar))))))
-
-;;; CALDAV Properties
-
-;; NOT in allprop
-(define-method (calendar-description (self <calendar-resource>))
- (cond ((description self)
- => (lambda (it)
- (propstat 200
- (list (list (xml caldav 'calendar-description (alist->hashq-table '((xml:lang . "en"))))
- it)))))
- (else
- (propstat 404 (list (list (xml caldav 'calendar-description)))))))
-
-;; NOT in allprop
-(define-method (calendar-timezone (self <calendar-resource>))
- (propstat 200
- (list
- (list (xml caldav 'calendar-description)
- ;; TODO serialize, base-timezone
- (ics:serialize (base-timezone (content self)))))))
-
-;; NOT in allprop
-(define-method (supported-calendar-component-set (self <calendar-resource>))
- (propstat 200
- `((,(xml caldav 'supported-calendar-component-set)
- (,(xml caldav 'comp
- (alist->hashq-table '((name . "VEVENT")))))))))
-
-(define-method (supported-calendar-data (self <calendar-resource>))
- (propstat 200
- (list
- (list
- (xml caldav 'supported-calendar-data)
- (map (lambda (content-type)
- (list (xml caldav 'calendar-data
- (alist->hashq-table
- '((content-type . ,content-type)
- (version . "2.0"))))))
- '("text/calendar" "application/calendar+xml"))))))
-
-;; (define-method (max-resource-size (self <calendar-resource>))
-;; )
-
-;; (define-method (min-date-time ))
-;; (define-method (max-date-time ))
-;; (define-method (max-instances ))
-;; (define-method (max-attendees-per-instance ))
-
-(define caldav-properties
- `((calendar-description . ,calendar-description)
- (calendar-timezone . ,calendar-timezone)
- (supported-calendar-component-set . ,supported-calendar-component-set)
- (supported-calendar-data . ,supported-calendar-data)
- ;; (max-resource-size . ,max-resource-size)
- ;; (min-date-time . ,min-date-time)
- ;; (max-date-time . ,max-date-time)
- ;; (max-instances . ,max-instances)
- ;; (max-attendees-per-instance . ,max-attendees-per-instance)
- ))