[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: emacs-25 b6b47AF: Properly encode/decode base64Binary data in SOAP

From: Alex Harsanyi
Subject: Re: emacs-25 b6b47AF: Properly encode/decode base64Binary data in SOAP
Date: Mon, 14 Mar 2016 21:18:38 +0800

2016-03-14 20:38 GMT+08:00 Michael Albinus <address@hidden>:
> Alex Harsanyi <address@hidden> writes:
>> I think the problem here is that the debbugs server encodes utf8
>> values as base64, even though the message envelope is utf8 XML and
>> could handle them as normal strings.   debbugs.el does not want to
>> know about this, so expects strings to be strings.  soap-client.el is
>> caught in the middle.
> Well, if debbugs.el would get an indication from soap-client.el, whether
> a string was encoded as xsd:string or xsd:base64Binary, it could decode
> the latter values itself. Less convenient, but so what.

We were discussing with Thomas to have soap-client.el return the
base64 string "as is" and let the caller decode and process it.
Unfortunately, there is no base64-string-p function and this value
would look like a (multibyte) string.  Perhaps we could return (cons
'base64 value), or a more appropriate type for a "array of bytes"
concept.  I'm open to suggestions.

>> I would also like to reiterate that base64 encoding can be used for
>> other things, such as images, and it would not be appropriate to
>> decode those as utf8 (not to mention that such a decoding might fail).
> Is there a way to tell soap-client.el, what to do with base64 encoded values?
> Something like a user-defined function, or alike?

This would not work in the general case except when all base64 encoded
values are the same underlying type (like utf8).

Although, given that debbugs.el is the only soap-client client that is
affected by this, we can add a simple "soap-base64-handler" function
to do what needs doing, and we can always extend that interface later
as more use cases emerge.

Best Regards,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]