Changeset 17933 in project


Ignore:
Timestamp:
04/26/10 19:52:46 (9 years ago)
Author:
sjamaan
Message:

Add new send-response procedure to provide an easier-to-use interface for the common case of sending string responses. send-status is now implemented as a simple usage of that

Location:
release/4/spiffy/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • release/4/spiffy/trunk/spiffy.scm

    r17618 r17933  
    3939
    4040(module spiffy
    41   (start-server with-headers send-status send-static-file log-to
     41  (start-server with-headers send-status send-response send-static-file log-to
    4242   write-logged-response build-error-message
    4343   current-request remote-address local-address
     
    5353(import chicken scheme extras ports files data-structures)
    5454(require-extension srfi-1 srfi-13 srfi-14 srfi-18 tcp regex posix
    55                    openssl intarweb uri-common sendfile matchable)
     55                   openssl uri-common sendfile matchable)
     56(require-library intarweb)
     57(import (rename intarweb (headers intarweb:headers)))
    5658
    5759(define version 4)
     
    246248                "  </body>\n"
    247249                "</html>\n")))
     250    (send-response code: code reason: reason
     251                   body: output headers: '((content-type text/html)))))
     252
     253(define (send-response #!key (code 200) (reason "OK") body (headers '()))
     254  (let ((new-headers (if body
     255                         (cons `(content-length ,(string-length body)) headers)
     256                         headers)))
    248257   (parameterize ((current-response
    249258                   (update-response (current-response)
    250                                     code: code
    251                                     reason: reason
     259                                    code: code reason: reason
    252260                                    headers:
    253                                     (headers
    254                                      `((content-type text/html)
    255                                        (content-length ,(string-length output)))
    256                                      (response-headers (current-response))))))
     261                                    (intarweb:headers new-headers
     262                                                      (response-headers
     263                                                       (current-response))))))
    257264     (write-logged-response)
    258      (unless (eq? 'HEAD (request-method (current-request)))
    259        (display output (response-port (current-response)))))))
     265     (unless (or (eq? 'HEAD (request-method (current-request))) (not body))
     266       (display body (response-port (current-response)))))))
    260267
    261268(define (send-static-file filename)
     
    301308                  (update-response
    302309                   (current-response)
    303                    headers: (headers new-headers
     310                   headers:
     311                   (intarweb:headers new-headers
    304312                                     (response-headers (current-response))))))
    305313    (thunk)))
     
    402410                     (current-response
    403411                      (make-response port: out
    404                                      headers: (headers
     412                                     headers: (intarweb:headers
    405413                                               `((content-type text/html)
    406414                                                 (server ,(server-software))))))
  • release/4/spiffy/trunk/tests/run.scm

    r17579 r17933  
    44
    55(import spiffy regex)
     6
     7(test-begin "spiffy")
    68
    79(load "testlib")
     
    160162(test-end)
    161163(test-end)
     164
     165(test-end)
Note: See TracChangeset for help on using the changeset viewer.