[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/debbugs b50c3fe 178/311: Decode xsd:base64Binary values
From: |
Stefan Monnier |
Subject: |
[elpa] externals/debbugs b50c3fe 178/311: Decode xsd:base64Binary values in debbugs.el |
Date: |
Sun, 29 Nov 2020 18:42:06 -0500 (EST) |
branch: externals/debbugs
commit b50c3fe1cf3ad7ffb2c6c18cbf8112ae760ef97d
Author: Thomas Fitzsimmons <fitzsim@fitzsim.org>
Commit: Michael Albinus <michael.albinus@gmx.de>
Decode xsd:base64Binary values in debbugs.el
* packages/debbugs/debbugs.el
(debbugs-convert-soap-value-to-string): New defun.
(debbugs-get-status): Use it to decode xsd:base64Binary values.
---
debbugs.el | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/debbugs.el b/debbugs.el
index f145280..e4c9667 100644
--- a/debbugs.el
+++ b/debbugs.el
@@ -264,6 +264,27 @@ patch:
"Return the list of bug numbers, according to AMOUNT (a number) latest bugs."
(sort (car (soap-invoke debbugs-wsdl debbugs-port "newest_bugs" amount)) '<))
+(defun debbugs-convert-soap-value-to-string (string-value)
+ "If STRING-VALUE is unibyte, decode its contents as a UTF-8 string.
+If STRING-VALUE is a multibyte string, then `soap-client'
+received an xsd:string for this value, and will have decoded it
+already.
+
+If STRING-VALUE is a unibyte string, then `soap-client' received
+an xsd:base64Binary, and ran `base64-decode-string' on it to
+produce a unibyte string of bytes.
+
+For some reason, the Debbugs server code base64-encodes strings
+that contain UTF-8 characters, and returns them as
+xsd:base64Binary, instead of just returning them as xsd:string.
+Therefore, when STRING-VALUE is a unibyte string, we assume its
+bytes represent a UTF-8 string and decode them accordingly."
+ (if (stringp string-value)
+ (if (not (multibyte-string-p string-value))
+ (decode-coding-string string-value 'utf-8)
+ string-value)
+ (error "Invalid string value")))
+
(defun debbugs-get-status (&rest bug-numbers)
"Return a list of status entries for the bugs identified by BUG-NUMBERS.
@@ -421,6 +442,11 @@ Example:
(when (stringp (cdr y))
(setcdr y (mapcar
'string-to-number (split-string (cdr y) " " t)))))
+ ;; "originator" may be an xsd:base64Binary value containing
+ ;; a UTF-8-encoded string.
+ (dolist (attribute '(originator))
+ (setq y (assoc attribute (cdr (assoc 'value x))))
+ (setcdr y (debbugs-convert-soap-value-to-string (cdr y))))
;; "package" is a string, containing comma separated
;; package names. "keywords" and "tags" are strings,
;; containing blank separated package names.
- [elpa] externals/debbugs 42bc369 153/311: debbugs code cleanup, (continued)
- [elpa] externals/debbugs 42bc369 153/311: debbugs code cleanup, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 2ea5f85 154/311: Retrieve debbugs data in several chunks, sequentially, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 2c83d55 156/311: Touch up the automatic patch applying logic, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 7b0b168 159/311: debbugs code cleanup, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 5691679 162/311: Activate `soap-invoke-async' in debbugs, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 6ae1bfb 163/311: Improvement on debbugs, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 6526f6a 166/311: Further improvements to debbugs, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs ad0bf48 167/311: Release debbugs 0.9, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs eb4259e 172/311: * packages/debbugs/debbugs-gnu.el (debbugs-gnu-stale): Fix docstring., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs b8ffa5f 173/311: Fix the "exempt" marker, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs b50c3fe 178/311: Decode xsd:base64Binary values in debbugs.el,
Stefan Monnier <=
- [elpa] externals/debbugs 6a865a3 191/311: Improve debbugs-gnu-search, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 5440e20 185/311: Allow the "C" command from debbugs mode to work, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 0246d07 194/311: * packages/debbugs/debbugs-gnu.el (debbugs-gnu-default-packages): Add "hyperbole"., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 9782850 198/311: Release debbugs 0.9.7, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 3939b8d 195/311: Various changes in debbugs-gnu, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 4a7a8d8 182/311: Add a new command debbugs-gnu-patches, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 6c4477e 188/311: Allow inclusing the closed bugs, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 5aea250 186/311: Fix last checkin, Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs 60502ec 193/311: Release debbugs 0.9.6., Stefan Monnier, 2020/11/29
- [elpa] externals/debbugs b816a36 192/311: Further work on debbugs-gnu-search, Stefan Monnier, 2020/11/29