xyzzy Part12

このエントリーをはてなブックマークに追加
696名無し~3.EXE
書けるかな? http.lのhttp-postのクッキー食ってるとこ。

(cond ((string-match *post-result-cookie* body)
(unless (> loop *http-post-loop-max*)
(incf loop)
(let ((cookies (mapcar #'(lambda (x)
(if (string-match "\\([^=]+\\)=?$" x)
(list (match-string 1) "")
(split-string x #\= nil " ")))
(split-string cookie #\; nil " ")))
(set-cookies (let (cookies)
(dolist (x header)
(when (and (equal (car x) "set-cookie") (cadr x)
(string-match " *\\([^=]+\\)=\\([^;]+\\)" (cadr x)))
(push (list (match-string 1) (match-string 2)) cookies)))
cookies)))
(when (set-difference set-cookies cookies :test #'equal :key #'car)
(http-server-cookie-set url (format nil "~:{~A=~A;~}" set-cookies))
(mapc #'(lambda (x)
(setq set-cookies (adjoin x set-cookies :test #'equal :key #'car)))
cookies)
(setq cookie (format nil "~:{~A=~A;~}" set-cookies))
(set-buffer buf)
(return-from http-post
(http-post url
:post post
:referer referer
:cookie cookie
:loop loop)))))
nil)