Commit 04c23739 authored by Mark A. Hershberger's avatar Mark A. Hershberger

Add in some useful convenience functions for handling HTTP.

parent bc869eca
2010-06-22 Mark A. Hershberger <>
* mm-url.el (mm-url-encode-multipart-form-data): New function to handle
the *other* type of HTML form submission.
2010-06-15 Michael Albinus <>
* auth-source.el (auth-source-pick): If choice does not contain a
......@@ -418,6 +418,48 @@ spaces. Die Die Die."
(mm-url-form-encode-xwfu (cdr data))))
pairs "&"))
(defun mm-url-encode-multipart-form-data (pairs &optional boundary)
"Return PAIRS encoded in multipart/form-data."
;; RFC1867
;; Get a good boundary
(unless boundary
(setq boundary (mml-compute-boundary '())))
;; Start with the boundary
"--" boundary "\r\n"
;; Create name value pairs
;; Delete any returned items that are empty
(delq nil
(mapcar (lambda (data)
(when (car data)
;; For each pair
;; Encode the name
"Content-Disposition: form-data; name=\""
(car data) "\"\r\n"
"Content-Type: text/plain; charset=utf-8\r\n"
"Content-Transfer-Encoding: binary\r\n\r\n"
(cond ((stringp (cdr data))
(cdr data))
((integerp (cdr data))
(int-to-string (cdr data))))
;; use the boundary as a separator
(concat "--" boundary "\r\n"))
;; put a boundary at the end.
"--" boundary "--\r\n"))
(defun mm-url-fetch-form (url pairs)
"Fetch a form from URL with PAIRS as the data using the POST method."
2010-06-22 Mark A. Hershberger <>
* url-parse.el (url-user-for-url, url-password-for-url):
Convenience functions that get usernames and passwords for urls
from auth-source functions.
2010-06-12 Štěpán Němec <> (tiny change)
* url-vars.el (url-privacy-level): Fix doc typo. (Bug#6406)
......@@ -25,6 +25,7 @@
;;; Code:
(require 'url-vars)
(require 'auth-source)
(eval-when-compile (require 'cl))
(autoload 'url-scheme-get-property "url-methods")
prot user pass host port file refs attr full)))))))
(defmacro url-bit-for-url (method lookfor url)
`(let* ((urlobj (url-generic-parse-url url))
(bit (funcall ,method urlobj))
(methods (list 'url-recreate-url
(while (and (not bit) (> (length methods) 0))
(setq bit
,lookfor (funcall (pop methods) urlobj) (url-type urlobj))))
(defun url-user-for-url (url)
"Attempt to use .authinfo to find a user for this URL."
(url-bit-for-url 'url-user "login" url))
(defun url-password-for-url (url)
"Attempt to use .authinfo to find a password for this URL."
(url-bit-for-url 'url-password "password" url))
(provide 'url-parse)
;; arch-tag: f338325f-71ab-4bee-93cc-78fb9a03d403
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment