Tags, Permissions, Public for Files are working
[pithos-ms-client] / trunk / Pithos.Client.WPF / Shell / FeedbackViewModel.cs
index 1331d3e..00e6e89 100644 (file)
@@ -4,6 +4,7 @@
 // </copyright>
 // -----------------------------------------------------------------------
 
+using System.Collections.Specialized;
 using System.ComponentModel.Composition;
 using System.Diagnostics;
 using System.Diagnostics.Contracts;
@@ -95,7 +96,7 @@ namespace Pithos.Client.WPF.Shell
             TryClose();
         }
 
-        private async void PostForm(string formUrl, string token,Dictionary<string, string> fields)
+        private void PostForm(string formUrl, string token,Dictionary<string, string> fields)
         {
 
             if (String.IsNullOrWhiteSpace(formUrl))
@@ -106,45 +107,20 @@ namespace Pithos.Client.WPF.Shell
                 throw new ArgumentNullException("fields");
             Contract.EndContractBlock();
 
-            var request = WebRequest.Create(formUrl);
-            request.Method = "POST";
-            request.Headers.Add("X-Auth-Token",token);
 
+            var client = new WebClient();
+            client.Headers.Add("X-Auth-Token", token);
 
-            var builder = new StringBuilder();
-            foreach (var field in fields)
-            {
-                builder.AppendFormat("{0}={1}&", field.Key, Uri.EscapeDataString(field.Value));
-            }
-
-            var postData = builder.ToString().TrimEnd('&');
-            var byteArray = Encoding.UTF8.GetBytes(postData);
-
-            request.ContentType = "application/x-www-form-urlencoded";
-            request.ContentLength = byteArray.Length;
-            using (var stream = request.GetRequestStream())
+            var values=new NameValueCollection();
+            fields.Apply(field => values.Add(field.Key, Uri.EscapeDataString(field.Value)));
+            try
             {
-                stream.Write(byteArray, 0, byteArray.Length);
+                client.UploadValues(formUrl, values);
             }
-            
-
-            // Get the response.
-            var response = await request.GetResponseAsync();
-
-
-            var webResponse = ((HttpWebResponse)response);
-            var result=webResponse.StatusCode;
-            if (result != HttpStatusCode.OK)
+            catch (WebException exc)
             {
-                // Get the stream containing content returned by the server.
-                using (var responseStream = webResponse.GetResponseStream())
-                using (var reader = new StreamReader(responseStream))
-                {
-                    var responseFromServer = reader.ReadToEnd();
-                    Log.WarnFormat("Unexpected status returned from feedback form: {0} - {1}\r\n{2}",result,webResponse.StatusDescription, responseFromServer);                    
-                }
+                Log.WarnFormat("Unexpected status returned from feedback form: {0} - {1}", exc.Status,exc.Message);                    
             }
-            response.Close();
         }
     }
 }