CMIS-512: Fix for Base64 encoded streams
git-svn-id: https://svn.apache.org/repos/asf/chemistry/dotcmis/trunk@1297190 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/DotCMIS/binding/http.cs b/DotCMIS/binding/http.cs
index c2d1ade..7200a50 100644
--- a/DotCMIS/binding/http.cs
+++ b/DotCMIS/binding/http.cs
@@ -178,13 +178,22 @@
Message = httpResponse.StatusDescription;
ContentType = httpResponse.ContentType;
ContentLength = httpResponse.ContentLength == -1 ? null : (long?)httpResponse.ContentLength;
+ string contentTransferEncoding = httpResponse.Headers["Content-Transfer-Encoding"];
+ bool isBase64 = contentTransferEncoding != null && contentTransferEncoding.Equals("base64", StringComparison.CurrentCultureIgnoreCase);
if (httpResponse.StatusCode == HttpStatusCode.OK ||
httpResponse.StatusCode == HttpStatusCode.Created ||
httpResponse.StatusCode == HttpStatusCode.NonAuthoritativeInformation ||
httpResponse.StatusCode == HttpStatusCode.PartialContent)
{
- Stream = new BufferedStream(httpResponse.GetResponseStream(), 64 * 1024);
+ if (isBase64)
+ {
+ Stream = new BufferedStream(new CryptoStream(httpResponse.GetResponseStream(), new FromBase64Transform(), CryptoStreamMode.Read), 64 * 1024);
+ }
+ else
+ {
+ Stream = new BufferedStream(httpResponse.GetResponseStream(), 64 * 1024);
+ }
}
else
{