+++ /dev/null
-#!/usr/bin/guile \
--e main -s
-!#
-
-;;; 8sync --- Asynchronous programming for Guile
-;;; Copyright (C) 2015 Christopher Allan Webber <cwebber@dustycloud.org>
-;;;
-;;; This file is part of 8sync.
-;;;
-;;; 8sync is free software: you can redistribute it and/or modify it
-;;; under the terms of the GNU Lesser General Public License as
-;;; published by the Free Software Foundation, either version 3 of the
-;;; License, or (at your option) any later version.
-;;;
-;;; 8sync is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;;; GNU Lesser General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU Lesser General Public
-;;; License along with 8sync. If not, see <http://www.gnu.org/licenses/>.
-
-(use-modules (8sync systems web)
- (8sync agenda)
- (web request)
- (web response)
- (web uri)
- (ice-9 match))
-
-\f
-;;; Utilities
-;;; =========
-
-(define (simple-404 request request-body)
- (values (build-response
- #:code 404
- #:headers '((content-type . (text/plain))))
- "Not found. Dag, yo."))
-
-
-\f
-;;; Views
-;;; =====
-
-(define (hello-world-view request request-body)
- (values '((content-type . (text/plain)))
- "Hello world!"))
-
-
-\f
-;;; Dispatch / routing
-;;; ==================
-
-(define (web-dispatch request request-body)
- (define (call-view view)
- (view request request-body))
- ;; URI routing here
- (match (split-and-decode-uri-path (uri-path (request-uri request)))
- ;; This is for the `/' root
- (() (call-view hello-world-view))
- ;; An example of an inline view at `/pants/'
- (("pants")
- (values '((content-type . (text/plain)))
- "Hello pants!"))
- (_
- (call-view simple-404))))
-
-
-\f
-;;; CLI
-;;; ===
-
-(define main (make-web-demo-cli #:handler (wrap-apply web-dispatch)))