[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: (net http) 0.1
From: |
Keisuke Nishida |
Subject: |
Re: (net http) 0.1 |
Date: |
Sat, 31 Mar 2001 05:34:41 -0500 |
User-agent: |
Wanderlust/2.4.0 (Rio) SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/21.0.99 (i686-pc-linux-gnu) MULE/5.0 (SAKAKI) |
At Sat, 31 Mar 2001 00:28:48 -0800,
thi wrote:
>
> ;; XXX: These are all too similar -- need to do some refactoring.
> ;; XXX: also, those list-ref calls are gross.
>
> ;;; Return an <http-response> with the headers for the given URI.
>
> (define (http-head uri)
> (let* ((parts (parse-uri uri))
> (request (make <http-request>
> #:method "HEAD"
> #:server (list-ref parts 1)
> #:port (list-ref parts 2) #:uri (list-ref parts 3)
> #:headers (list (cons "User-Agent" "(net http)/0.1")
> (cons "Host" (list-ref parts 1)))))
> (response (send-request request)))
> (close (get-content response))
> response))
>
> you might investigate writing / finding a `destructuring-bind' macro.
> let me know if you do, because i'd like to use it, too.
Or you could use SRFI-8 (receive):
(use-modules (ice-9 receive))
(define (parse-uri uri)
...
(values proto server port uri))
(define (http-head uri)
(receive (proto server port uri) (parse-uri uri)
(let ((request (make <http-request>
#:method "HEAD"
#:server server
#:port port #:uri uri
#:headers (list (cons "User-Agent" "(net http)/0.1")
(cons "Host" server))))
(response (send-request request)))
(close (get-content response))
response)))