Advertisement
Shinmera

Crude Paste Service in Radiance

Nov 2nd, 2013
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 0.86 KB | None | 0 0
  1. ;; Untested, written out of memory
  2.  
  3. (in-package :radiance-mod-paste)
  4.  
  5. (defmethod init-database ((module paste))
  6.   (db-create T "pastes" '(("text" :text))))
  7. (defhook :server :init (get-module :paste) #'init-database)
  8.  
  9. (defpage #p"paste./"
  10.   "<form action=\"/api/paste/submit\" method=\"post\"><textarea name=\"text\"></textarea><br /><input type=\"submit\" /></form>")
  11.  
  12. (defpage #p"paste./id/\\d+"
  13.   (let ((id (second (split-sequence #\/ (path *radiance-request*)))))
  14.     (with-model (model text) ("pastes" (query (:= "_id" id)))
  15.       (format NIL "<blockquote>~a</blockquote>" text))))
  16.  
  17. (defapi submit (text) (:method :POST)
  18.   (with-model (model) ("pastes" NIL)
  19.     (setf (model-field model "text") text)
  20.     (model-insert model)
  21.     (redirect (format NIL "/id/~a" (model-field model "_id")))))
  22.  
  23. ;; Todo: proper templates, HTML escaping, additional metadata.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement