summaryrefslogtreecommitdiff
path: root/intarweb.scm
diff options
context:
space:
mode:
Diffstat (limited to 'intarweb.scm')
-rw-r--r--intarweb.scm27
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)