guile-user
[Top][All Lists]
Advanced

[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)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]