Merge pull request #17 from deadtrickster/master
[zs3.git] / objects.lisp
blob4e5504f8826e221cd16eebffbb9239b6dc423810
1 ;;;;
2 ;;;; Copyright (c) 2008 Zachary Beane, All Rights Reserved
3 ;;;;
4 ;;;; Redistribution and use in source and binary forms, with or without
5 ;;;; modification, are permitted provided that the following conditions
6 ;;;; are met:
7 ;;;;
8 ;;;; * Redistributions of source code must retain the above copyright
9 ;;;; notice, this list of conditions and the following disclaimer.
10 ;;;;
11 ;;;; * Redistributions in binary form must reproduce the above
12 ;;;; copyright notice, this list of conditions and the following
13 ;;;; disclaimer in the documentation and/or other materials
14 ;;;; provided with the distribution.
15 ;;;;
16 ;;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED
17 ;;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 ;;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 ;;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
20 ;;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 ;;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
22 ;;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 ;;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24 ;;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25 ;;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 ;;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 ;;;;
28 ;;;; objects.lisp
30 (in-package #:zs3)
32 (defclass person ()
33 ((id
34 :initarg :id
35 :accessor id)
36 (display-name
37 :initarg :display-name
38 :accessor display-name)))
40 (defmethod print-object ((person person) stream)
41 (print-unreadable-object (person stream :type t)
42 (format stream "~S" (display-name person))))
44 (defclass bucket ()
45 ((name
46 :initarg :name
47 :accessor name)
48 (creation-date
49 :initarg :creation-date
50 :accessor creation-date)))
52 (defmethod print-object ((bucket bucket) stream)
53 (print-unreadable-object (bucket stream :type t)
54 (format stream "~S" (name bucket))))
56 (defmethod name ((string string))
57 string)
59 (defclass key ()
60 ((name
61 :initarg :name
62 :accessor name)
63 (last-modified
64 :initarg :last-modified
65 :accessor last-modified)
66 (etag
67 :initarg :etag
68 :accessor etag)
69 (size
70 :initarg :size
71 :accessor size)
72 (owner
73 :initarg :owner
74 :accessor owner)
75 (storage-class
76 :initarg :storage-class
77 :accessor storage-class)))
79 (defmethod print-object ((key key) stream)
80 (print-unreadable-object (key stream :type t)
81 (format stream "~S ~D" (name key) (size key))))