diff options
Diffstat (limited to 'intarweb.scm')
-rw-r--r-- | intarweb.scm | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/intarweb.scm b/intarweb.scm index 013fafa..d2cca10 100644 --- a/intarweb.scm +++ b/intarweb.scm @@ -1,7 +1,7 @@ ;;; ;;; Intarweb is an improved HTTP library for Chicken ;;; -;; Copyright (c) 2008-2021, Peter Bex +;; Copyright (c) 2008-2024, Peter Bex ;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without @@ -81,14 +81,14 @@ rfc1123-subparser rfc850-subparser asctime-subparser http-date-subparser product-subparser quality-subparser unknown-header-parser filename-subparser symbol-subparser symbol-subparser-ci natnum-subparser - host/port-subparser base64-subparser range-subparser filename-subparser - etag-parser software-parser mailbox-subparser + host/port-subparser base64-subparser range-subparser content-range-subparser + filename-subparser etag-parser software-parser mailbox-subparser if-range-parser retry-after-subparser via-parser warning-parser key/value-subparser set-cookie-parser cache-control-parser pragma-parser te-parser cookie-parser strict-transport-security-parser must-be-quoted-chars quote-string unparse-token - default-header-unparser etag-unparser host/port-unparser + content-range-unparser default-header-unparser etag-unparser host/port-unparser product-unparser software-unparser rfc1123-unparser cookie-unparser strict-transport-security-unparser @@ -100,7 +100,7 @@ basic-auth-param-subunparser digest-auth-param-subunparser ) -(import scheme (chicken base) (chicken foreign) (chicken irregex) +(import scheme (scheme base) (chicken base) (chicken foreign) (chicken irregex) (chicken format) (chicken io) (chicken string) (chicken time posix) (chicken pathname) (chicken fixnum) (chicken condition) (chicken port) (chicken syntax) @@ -153,8 +153,8 @@ ;; that deal with headers. (define-record headers v) -(define-record-printer (headers h out) - (fprintf out "#(headers: ~S)" (headers-v h))) +(set-record-printer! headers (lambda (h out) + (fprintf out "#(headers: ~S)" (headers-v h)))) (define headers->list headers-v) @@ -228,7 +228,7 @@ (define update-header-contents (make-updater replace-header-contents)) (define update-header-contents! (make-updater replace-header-contents!)) -(define http-name->symbol (compose string->symbol string-downcase!)) +(define http-name->symbol (compose string->symbol string-downcase)) (define symbol->http-name (compose string-titlecase symbol->string)) ;; Make a header set from a literal expression by folding in the headers @@ -271,7 +271,7 @@ (fprintf port "~X\r\n~A\r\n" len s)))) (lambda () ; close (close-output-port port)) - (lambda () ; flush + force-output: (lambda () (flush-output port))))) ;; first "reserved" slot ;; Slot 7 should probably stay 'custom @@ -312,12 +312,12 @@ (or (not position) (char-ready? port))) (lambda () ; close (close-input-port port)) - (lambda () ; peek-char + peek-char: (lambda () (check-position) (if position (peek-char port) #!eof)) - (lambda (p bytes buf off) ; read-string! + read-bytevector: (lambda (p bytes buf off) (let lp ((todo bytes) (total-bytes-read 0) (off off)) @@ -325,7 +325,7 @@ (if (or (not position) (= todo 0)) total-bytes-read (let* ((n (min todo (- chunk-length position))) - (bytes-read (read-string! n buf port off))) + (bytes-read (read-bytevector! buf port off (+ off n)))) (set! position (+ position bytes-read)) (lp (- todo bytes-read) (+ total-bytes-read bytes-read) @@ -436,7 +436,7 @@ (content-length . ,(single natnum-subparser)) (content-location . ,(single normalized-uri)) (content-md5 . ,(single base64-subparser)) - (content-range . ,(single range-subparser)) + (content-range . ,(single content-range-subparser)) (content-type . ,(single symbol-subparser-ci `((charset . ,symbol-subparser-ci)))) (date . ,(single http-date-subparser)) @@ -670,6 +670,7 @@ (define header-unparsers (make-parameter `((content-disposition . ,content-disposition-unparser) + (content-range . ,content-range-unparser) (date . ,rfc1123-unparser) (etag . ,etag-unparser) (expires . ,rfc1123-unparser) |