RazmjenaVjestina
EmacsSocialText: Revision 3

;;
;; curl -T /path/tp/file.txt -i
;; --user user@mail.com:pwd
;; --header "Content-Type: text/x.socialtext-wiki"
;; http://wiki.razmjenavjestina.org/data/workspaces/RazmjenaVjestina/pages/NewPage

(setq wiki-username nil)
(setq wiki-passwd nil)
(setq wiki-url "http://wiki.razmjenavjestina.org/data/workspaces/RazmjenaVjestina/pages/")

(setq curl-bin "/usr/bin/curl")

(defun wiki-login (&optional uname pwd)
  (interactive)
  (if uname
      (progn
(setq wiki-username uname)
(setq wiki-passwd pwd))
    (let ((account (wiki-read-account t)))
      (setq wiki-username (car account))
      (setq wiki-passwd (cadr account)))))

(defun wiki-logout ()
  (interactive)
  (setq wiki-username nil)
  (setq wiki-passwd nil))

(defun wiki-send-external (file title)
  (interactive
   (let ((file (expand-file-name (read-file-name "File: " nil nil t)))
(title (read-string "Title: ")))
     `(,file ,title)))
  (apply #'wiki-send-internal file title (wiki-read-account)))

(defun wiki-send (title)
  (interactive
   (let ((title (read-string "Title: ")))
     `(,title)))
  (when buffer-file-name
    (apply #'wiki-send-internal buffer-file-name title (wiki-read-account))))

(defun wiki-read-account (&optional forced)
  (let ((uname (if (and (not forced)
wiki-username) wiki-username
(read-string "Mail: ")))
(pwd (if (and (not forced)
wiki-passwd
(> (length wiki-passwd) 0)) wiki-passwd
(read-passwd "Password: "))))
     `(,uname ,pwd)))

;(defun wiki-send-internal (file title uname pwd )
; (slime-eval-async `(rv.wiki:wiki-send ,(concat wiki-url title)
; ,uname ,pwd ,file)
; (lambda (ret) (message (format ">>>%s" ret)))))

(defun wiki-send-internal (file title uname pwd )
  (let ((args `(,(format "-T%s" file) "-i" "--user" ,(format "%s:%s" uname pwd)
"--header" "Content-Type: text/x.socialtext-wiki"
,(format (concat wiki-url "%s") title))))
    (with-temp-buffer
      (apply #'call-process curl-bin nil (current-buffer) nil args))))