summaryrefslogtreecommitdiff
path: root/granolin.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'granolin.lisp')
-rw-r--r--granolin.lisp39
1 files changed, 39 insertions, 0 deletions
diff --git a/granolin.lisp b/granolin.lisp
new file mode 100644
index 0000000..8179a66
--- /dev/null
+++ b/granolin.lisp
@@ -0,0 +1,39 @@
+
+;;;; granolin.lisp
+
+(in-package #:granolin)
+
+;;; Login https://matrix.org/docs/spec/client_server/r0.5.0#id242
+;;; Media Upload https://matrix.org/docs/spec/client_server/r0.5.0#post-matrix-media-r0-upload
+
+
+
+(defclass client ()
+ ((access-token
+ :reader login
+ :initarg :login
+ :initform (error "Clients need an access token."))
+ (homeserver
+ :reader homeserver
+ :initarg :homeserver
+ :initform (error "Clients require a homeserver."))
+ (rooms
+ :accessor rooms
+ :initform nil)
+ (users
+ :accessor users
+ :initform nil)))
+;;TODO add things like transaction ids and time points
+
+
+(defmethod initialize-instance :after ((client client) &key)
+ ;; fetch rooms
+ ;; fetch users
+ ;; fetch any other state that might be useful
+ )
+
+;;; Sending Room Messages
+(defgeneric send-message (client room msg)
+ (:documentation "Ends up sending an http request to the client's homeserver"))
+
+