Source of Nothingness - xyzzy lisp : junk/httpの利用例として

* xyzzy lisp : junk/httpの利用例として

RandomNote投稿lisp
refwikiのPOST用も作ってみたり。公開はしないけど。

;;; RandomNote投稿

(eval-when (:compile-toplevel :load-toplevel :execute)
  (require "junk/http"))

(in-package "user")

(import '(*rn-url* rn-post-region) "junk")

(in-package "junk")

(defvar *rn-url* "http://raido.sakura.ne.jp/southly/rn/index.rb")

(defun http-post (url data &key headers)
  (let (http)
    (multiple-value-bind (proto host file anchor port)
        (junk-http-url-study url)
      (unless (string= proto "http")
        (junk-error "Protocol is not http: ~A" url))
      (unwind-protect
          (multiple-value-prog1
           (setq http (junk-http-request-send host file "POST"
                                              :data data
                                              :headers headers))
           (junk-http-response-get http)
           ; 結果確認するならここ
           (and http (close http)))
        (close http :abort t)))))

(defun rn-post (url str)
  (http-post url (format nil "cmd=edit_do&fname=&mes=~A" (si:www-url-encode str nil "0-9A-Za-z"))))

(defun rn-post-region (beg end)
  (interactive "r")
  (rn-post *rn-url* (buffer-substring beg end)))

update : 2006-05-22 (Mon) 02:46:45