Extend blog server to consume nix injections
All of this is still a work-in-progress. Just checking in my work. Also: - Write function `render-post` to convert a markdown file into HTML. This is still a work-in-progress since we need to capture the output and not just have it printed to *standard-out*. - Return dummy data in /posts
This commit is contained in:
		
							parent
							
								
									b25d06db7e
								
							
						
					
					
						commit
						81d7bc405e
					
				
					 1 changed files with 38 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -5,6 +5,43 @@
 | 
			
		|||
  (:export :main))
 | 
			
		||||
(in-package #:server)
 | 
			
		||||
 | 
			
		||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
			
		||||
;; Nix-injected dependencies
 | 
			
		||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
			
		||||
 | 
			
		||||
(defvar *path-to-posts* "/tmp"
 | 
			
		||||
  "File path pointing to the posts directory.")
 | 
			
		||||
 | 
			
		||||
(defvar *pandoc-bin* "/usr/bin/pandoc")
 | 
			
		||||
 | 
			
		||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
			
		||||
;; Library
 | 
			
		||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
			
		||||
 | 
			
		||||
(defun render-post (path)
 | 
			
		||||
  "Render the markdown file stored at PATH to HTML using pandoc."
 | 
			
		||||
  (uiop:run-program (list *pandoc-bin* path "--to" "html")
 | 
			
		||||
                    :output t))
 | 
			
		||||
 | 
			
		||||
;; TODO: Figure out how to handle this with Nix.
 | 
			
		||||
(defvar *posts* (uiop:directory-files *path-to-posts*)
 | 
			
		||||
  "List of the paths to the blog posts.")
 | 
			
		||||
 | 
			
		||||
(hunchentoot:define-easy-handler
 | 
			
		||||
    (get-latest :uri "/latest") ()
 | 
			
		||||
  (print (parameter "name"))
 | 
			
		||||
  (uiop:read-file-string (car *posts*)))
 | 
			
		||||
 | 
			
		||||
(hunchentoot:define-easy-handler
 | 
			
		||||
    (get-posts :uri "/posts") ()
 | 
			
		||||
  "Working!")
 | 
			
		||||
 | 
			
		||||
(defun main ()
 | 
			
		||||
  "This is the main entrypoint for our application."
 | 
			
		||||
  (hunchentoot))
 | 
			
		||||
  (hunchentoot:start (make-instance 'hunchentoot:easy-acceptor :port 4242))
 | 
			
		||||
  (print "Listing on port 4242...")
 | 
			
		||||
  (sb-thread:join-thread
 | 
			
		||||
   (find-if (lambda (th)
 | 
			
		||||
              (string= (sb-thread:thread-name th)
 | 
			
		||||
                       "hunchentoot-listener-*:4242"))
 | 
			
		||||
            (sb-thread:list-all-threads))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue