%PDF- %PDF-
Direktori : /www/varak.net/catalog.varak.net/bookUploader/ |
Current File : /www/varak.net/catalog.varak.net/bookUploader/Utils.cs |
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace bookUploader { public class Utils { private static ObservableCollection<Author> _authors; private static ObservableCollection<Language> _languages; private static ObservableCollection<Genre> _genres; public static ObservableCollection<Author> Authors { get { return _authors; } set { _authors = value; } } public static ObservableCollection<Language> Languages { get { return _languages; } set { _languages = value; } } public static ObservableCollection<Genre> Genres { get { return _genres; } set { _genres = value; } } public static string HttpGetAuth(string url, string username, string password) { string retVal = ""; try { HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url); var cache = new CredentialCache(); cache.Add(new Uri("http://catalog.varak.net/"), "Basic", new NetworkCredential(username, password)); wr.Credentials = cache; wr.PreAuthenticate = true; wr.UserAgent = "User-Agent: Waritko Book Uploader 1.0"; wr.AutomaticDecompression = DecompressionMethods.GZip; wr.KeepAlive = false; wr.SendChunked = false; var response = wr.GetResponse(); StreamReader rdr = new StreamReader(response.GetResponseStream()); retVal = rdr.ReadToEnd(); rdr.Close(); response.Close(); } catch (Exception) { throw; } return retVal; } public static bool HttpUploadFile(string url, string file, string paramName, string contentType, NameValueCollection nvc) { bool retVal = false; Console.WriteLine(string.Format("Uploading {0} to {1}", file, url)); string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n"); HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url); var cache = new CredentialCache(); cache.Add(new Uri("http://catalog.varak.net/"), "Basic", new NetworkCredential("waritko", "Pojka8uj")); wr.Credentials = cache; wr.PreAuthenticate = true; wr.UserAgent = "User-Agent: Waritko Book Uploader 1.0"; wr.ContentType = "multipart/form-data; boundary=" + boundary; wr.Method = "POST"; wr.KeepAlive = true; wr.Credentials = System.Net.CredentialCache.DefaultCredentials; Stream rs = wr.GetRequestStream(); string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}"; foreach (string key in nvc.Keys) { rs.Write(boundarybytes, 0, boundarybytes.Length); string formitem = string.Format(formdataTemplate, key, nvc[key]); byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem); rs.Write(formitembytes, 0, formitembytes.Length); } rs.Write(boundarybytes, 0, boundarybytes.Length); string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n"; string header = string.Format(headerTemplate, paramName, file, contentType); byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header); rs.Write(headerbytes, 0, headerbytes.Length); FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read); byte[] buffer = new byte[4096]; int bytesRead = 0; while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) { rs.Write(buffer, 0, bytesRead); } fileStream.Close(); byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n"); rs.Write(trailer, 0, trailer.Length); rs.Close(); WebResponse wresp = null; try { wresp = wr.GetResponse(); Stream stream2 = wresp.GetResponseStream(); StreamReader reader2 = new StreamReader(stream2); Console.WriteLine(string.Format("File uploaded, server response is: {0}", reader2.ReadToEnd())); retVal = true; } catch (Exception ex) { Console.WriteLine("Error uploading file", ex); if (wresp != null) { wresp.Close(); wresp = null; } retVal = false; } finally { wr = null; } return retVal; } } }