Author: fmui
Date: Mon Mar  5 19:33:28 2012
New Revision: 1297190

URL: http://svn.apache.org/viewvc?rev=1297190&view=rev
Log:
CMIS-512: Fix for Base64 encoded streams

Modified:
    chemistry/dotcmis/trunk/DotCMIS/binding/http.cs

Modified: chemistry/dotcmis/trunk/DotCMIS/binding/http.cs
URL: 
http://svn.apache.org/viewvc/chemistry/dotcmis/trunk/DotCMIS/binding/http.cs?rev=1297190&r1=1297189&r2=1297190&view=diff
==============================================================================
--- chemistry/dotcmis/trunk/DotCMIS/binding/http.cs (original)
+++ chemistry/dotcmis/trunk/DotCMIS/binding/http.cs Mon Mar  5 19:33:28 2012
@@ -178,13 +178,22 @@ namespace DotCMIS.Binding.Impl
                 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
                 {


Reply via email to