下記の西山さんのファイルを参考にしました。
Hiki-dev:01036 hiki-mode.el: Basic認証対応
パッチ作ったので置いときます。自由に使ってください。
--- hiki-mode.el 2008-05-23 00:21:24.000000000 +0900
+++ hiki-mode.basic.el 2008-05-23 00:29:34.000000000 +0900
@@ -255,13 +255,15 @@
(setq prompt (or retry-prompt prompt)))))
c))
-(defun hiki-http-request (mode cmd pagename site-url &optional post-data)
+(defun hiki-http-request (mode cmd pagename site-url &optional site-info post-data)
(let* ((url (if (eq mode 'get)
(concat (format "%s?c=%s" site-url cmd)
(if pagename
(format ";p=%s" (hiki-http-url-hexify-string pagename hiki-coding-system))))
site-url))
- (buf (hiki-http-fetch url mode nil nil
+ (buf (hiki-http-fetch url mode
+ (hiki-site-auth-basic-user site-info)
+ (hiki-site-auth-basic-pass site-info)
(hiki-http-url-hexify-alist post-data hiki-coding-system))))
(if (bufferp buf)
(save-excursion
@@ -626,7 +628,7 @@
(add-to-list 'post-data (cons "c" "login"))
(add-to-list 'post-data (cons "name" username))
(add-to-list 'post-data (cons "password" password))
- (setq buf (hiki-http-request 'post nil nil (hiki-site-url) post-data))
+ (setq buf (hiki-http-request 'post nil nil (hiki-site-url) hiki-site-info post-data))
(set-buffer buf)
(goto-char (point-min))
(if (re-search-forward "HTTP/1.[01] \\([0-9][0-9][0-9]\\) \\(.*\\)" nil t)
@@ -641,7 +643,7 @@
(interactive)
(let (post-data buf)
(add-to-list 'post-data (cons "c" "logout"))
- (setq buf (hiki-http-request 'post nil nil (hiki-site-url) post-data))
+ (setq buf (hiki-http-request 'post nil nil (hiki-site-url) hiki-site-info post-data))
(message "Logged out.")))
;;; func
@@ -716,7 +718,7 @@
(defun hiki-fetch-index (site-info)
"?ڡ???????????????롣"
(let (indexes history (i 1)
- (buf (hiki-http-request 'get "index" nil (hiki-site-url site-info))))
+ (buf (hiki-http-request 'get "index" nil (hiki-site-url site-info) site-info )))
(when (bufferp buf)
(save-excursion
(set-buffer buf)
@@ -751,7 +753,7 @@
(update-timestamp . t/nil)
(password . t/nil)) ???֤???"
(let (buf start end pt result)
- (setq buf (hiki-http-request 'get "edit" pagename site-url))
+ (setq buf (hiki-http-request 'get "edit" pagename site-url site-info))
(when (bufferp buf)
(save-excursion
(set-buffer buf)
@@ -820,7 +822,7 @@
(add-to-list 'post-data (cons "save" "save"))
(setq buf
(hiki-http-request 'post nil hiki-pagename
- (hiki-site-url) post-data))
+ (hiki-site-url) hiki-site-info post-data))
(when (bufferp buf)
(save-excursion
(set-buffer buf)
@@ -898,6 +900,19 @@
(or (nth 2 (or site-info hiki-site-info))
'default))
+(defun hiki-site-auth (&optional site-info)
+ (nth 3 (or site-info hiki-site-info)))
+
+(defun hiki-site-auth-basic-user (&optional site-info)
+ (let ((auth (hiki-site-auth site-info)))
+ (and auth (eq (car auth) 'basic)
+ (nth 1 auth))))
+
+(defun hiki-site-auth-basic-pass (&optional site-info)
+ (let ((auth (hiki-site-auth site-info)))
+ (and auth (eq (car auth) 'basic)
+ (nth 2 auth))))
+
(defun hiki-page-buffer-name (pagename site-info)
(let ((buf (cdr (assoc (list (hiki-site-name site-info) pagename)
hiki-page-buffer-alist))))パッチ当てたら.emacsのhiki-site-listにこんな感じで書けばOK。
(setq hiki-site-list '(("example" "http://www.example/hiki.cgi" nil (basic "username" "password")) ))