From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Kenjiro NAKAYAMA Newsgroups: gmane.emacs.bugs Subject: bug#16198: 24.3.50; [PATCH 1/2] eww: Does not support file upload. Date: Wed, 25 Dec 2013 13:29:29 +0900 Message-ID: <87ob457due.fsf@dhcp-193-97.nrt.redhat.com> References: <87fvpnzx8e.fsf@dhcp-193-97.nrt.redhat.com> <87ha9yzot3.fsf@building.gnus.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1387945818 27890 80.91.229.3 (25 Dec 2013 04:30:18 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 25 Dec 2013 04:30:18 +0000 (UTC) Cc: Kenjiro NAKAYAMA , 16198@debbugs.gnu.org To: Lars Ingebrigtsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Dec 25 05:30:23 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Vvg6t-0007QT-JQ for geb-bug-gnu-emacs@m.gmane.org; Wed, 25 Dec 2013 05:30:19 +0100 Original-Received: from localhost ([::1]:41229 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vvg6s-0003T4-SW for geb-bug-gnu-emacs@m.gmane.org; Tue, 24 Dec 2013 23:30:18 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47151) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vvg6k-0003Sw-In for bug-gnu-emacs@gnu.org; Tue, 24 Dec 2013 23:30:16 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vvg6e-0005If-7h for bug-gnu-emacs@gnu.org; Tue, 24 Dec 2013 23:30:10 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:54419) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vvg6e-0005HD-01 for bug-gnu-emacs@gnu.org; Tue, 24 Dec 2013 23:30:04 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Vvg6c-0003VU-T0 for bug-gnu-emacs@gnu.org; Tue, 24 Dec 2013 23:30:03 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Kenjiro NAKAYAMA Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 25 Dec 2013 04:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 16198 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: pending patch Original-Received: via spool by 16198-submit@debbugs.gnu.org id=B16198.138794579013424 (code B ref 16198); Wed, 25 Dec 2013 04:30:02 +0000 Original-Received: (at 16198) by debbugs.gnu.org; 25 Dec 2013 04:29:50 +0000 Original-Received: from localhost ([127.0.0.1]:40205 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Vvg6L-0003UJ-KE for submit@debbugs.gnu.org; Tue, 24 Dec 2013 23:29:49 -0500 Original-Received: from mail-pd0-f178.google.com ([209.85.192.178]:34577) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Vvg6E-0003Tw-IC for 16198@debbugs.gnu.org; Tue, 24 Dec 2013 23:29:42 -0500 Original-Received: by mail-pd0-f178.google.com with SMTP id y10so6885989pdj.37 for <16198@debbugs.gnu.org>; Tue, 24 Dec 2013 20:29:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=references:user-agent:from:to:cc:subject:in-reply-to:date :message-id:mime-version:content-type; bh=ti6CFMh1ag7wx6puCjfMQZa35CseCDdqvhUD0r0zgJg=; b=YpMQro9swD1bkRXJg0MIpGHcXPTv6LaieFOJ0ZZaxuUBOwQGUSHqsaNcCzeQ5oHvSQ YiUIf20bt1JHuPQr/SOYbdUimLDpnZO/bWqFbVevZW/VsW7bup1gNoSoFiLI5c5YWdk5 tClO496OMgjZTL2vKSejnO/VzAyHt6nVD37KOQwyIoZzXWc2qgkUM6q4SPTyXkrQAQgR apFtoDGU6RfNcu6H9gm4rDZv5tZnaKrjs0bljp6Y+iPOHC+1kWsIR0TO2uHsJv3IV8du PG8jecFMd876Ux8dPw3z2OraUMtezYU/lZQl3hR013G4Kdm95o3s1k7UJ1lXWI6KVdxp Jc7Q== X-Received: by 10.66.140.40 with SMTP id rd8mr36503376pab.119.1387945777652; Tue, 24 Dec 2013 20:29:37 -0800 (PST) Original-Received: from dhcp-193-97.nrt.redhat.com (nat-pool-nrt-u1.redhat.com. [66.187.238.11]) by mx.google.com with ESMTPSA id dq3sm45309182pbc.35.2013.12.24.20.29.34 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 24 Dec 2013 20:29:36 -0800 (PST) User-agent: mu4e 0.9.9.6pre2; emacs 24.3.50.2 In-reply-to: <87ha9yzot3.fsf@building.gnus.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:82564 Archived-At: > This is not the Emacs parenthesis style. All the closing parentheses > should be on the same line. And there's a superfluous `concat' there... Thank you Lars and Ted, Since I fixed the patches, I send again. Signed-off-by: Kenjiro NAKAYAMA * gnus/mm-url.el (mm-url-encode-multipart-form-data): Restore to handle "maltipart/form-data" by eww. * net/eww.el(eww-form-file(defface)): New defface of file upload form. (eww-submit-file): New key map of file upload. (eww-form-file): New file upload button and file name context. (eww-select-file): Select file and display selected file name. (eww-tag-input): Handle input tag of file type. (eww-update-field): Add point offset. (eww-submit): Add submit with multipart/form-data. --- lisp/gnus/mm-url.el | 45 +++++++++++++++++++++++-- lisp/net/eww.el | 97 +++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 126 insertions(+), 16 deletions(-) diff --git a/lisp/gnus/mm-url.el b/lisp/gnus/mm-url.el index 6e83b18..9deb160 100644 --- a/lisp/gnus/mm-url.el +++ b/lisp/gnus/mm-url.el @@ -416,13 +416,54 @@ spaces. Die Die Die." (autoload 'mml-compute-boundary "mml") +(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 '()))) + (concat + ;; Start with the boundary + "--" boundary "\r\n" + ;; Create name value pairs + (mapconcat + 'identity + ;; Delete any returned items that are empty + (delq nil + (mapcar (lambda (data) + (cond ((equal (car data) "file") + ;; For each pair + (concat + ;; Encode the name + "Content-Disposition: form-data; name=\"" (cdr (assoc "name" (cdr data))) "\"; filename=\"" (cdr (assoc "filename" (cdr data))) "\"\r\n" + "Content-Type: text/plain; charset=utf-8\r\n" + "Content-Transfer-Encoding: binary\r\n\r\n" + (cond ((stringp (cdr (assoc "filedata" (cdr data)))) + (cdr (assoc "filedata" (cdr data)))) + ((integerp (cdr (assoc "filedata" (cdr data)))) + (int-to-string (cdr (assoc "filedata" (cdr data)))))) + "\r\n")) + ((equal (car data) "submit") + (concat + "Content-Disposition: form-data; name=\"submit\"\r\n\r\n" + "Submit")) + (t + (concat + "Content-Disposition: form-data;name=" (car data) "\r\n\r\n" + (mm-url-form-encode-xwfu (cdr data)))))) + pairs)) + ;; use the boundary as a separator + (concat "\r\n--" boundary "\r\n")) + ;; put a boundary at the end. + "--" boundary "--\r\n")) + (defun mm-url-remove-markup () "Remove all HTML markup, leaving just plain text." (goto-char (point-min)) (while (search-forward "" nil t) - (point-max)))) + (or (search-forward "-->" nil t) + (point-max)))) (goto-char (point-min)) (while (re-search-forward "<[^>]+>" nil t) (replace-match "" t t))) --- [1/2] --- larsi@gnus.org writes: > Kenjiro NAKAYAMA writes: > >> This report includes a patch to eww file upload. Please, review and >> install it to the official tree if appreciated. > > It sounds like useful functionality, but Emacs went into feature freeze > yesterday, so it'll have to wait until Emacs thaws again. > > Comment about the code: > >> + (concat >> + "Content-Disposition: form-data;name=" (car data) "\r\n\r\n" >> + (concat (mm-url-form-encode-xwfu (cdr data)) >> + ))) >> + )) > > This is not the Emacs parenthesis style. All the closing parentheses > should be on the same line. And there's a superfluous `concat' there...