/// <summary> /// The write file data. /// </summary> /// <param name="stream"> /// The stream. /// </param> /// <param name="settings"> /// The settings. /// </param> protected override void WriteFileData(Stream stream, RequestSettings settings) { if (string.IsNullOrWhiteSpace(settings.FilePath) || string.IsNullOrWhiteSpace(settings.FileName)) { return; } const string HeaderTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n Content-Type: application/octet-stream\r\n\r\n"; var header = string.Format(HeaderTemplate, settings.FileName, Path.GetFileName(settings.FilePath)); var headerData = Encoding.ASCII.GetBytes(header); stream.Write(headerData, 0, headerData.Length); using (var fileStream = new FileStream(settings.FilePath, FileMode.Open, FileAccess.Read)) { var buffer = new byte[1024]; int bytesRead; while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) { stream.Write(buffer, 0, bytesRead); } } stream.Write(this.boundaryBytes, 0, this.boundaryBytes.Length); }
/// <summary> /// Writes the request stream. /// </summary> /// <param name="settings">The settings.</param> public void WriteRequestStream(RequestSettings settings) { this.AlterRequestContentType(settings); var requestStream = this.Request.GetRequestStream(); this.WriteFormData(requestStream, settings); this.WriteFileData(requestStream, settings); requestStream.Close(); }
/// <summary> /// Writes the form data. /// </summary> /// <param name="stream">The stream.</param> /// <param name="settings">The settings.</param> protected override void WriteFormData(System.IO.Stream stream, RequestSettings settings) { if (settings.Form.Count == 0 && string.IsNullOrWhiteSpace(settings.ContentBody)) { return; } var postData = string.IsNullOrWhiteSpace(settings.ContentBody) ? ReconstructQueryString(settings.Form) : settings.ContentBody; var data = Encoding.UTF8.GetBytes(postData); stream.Write(data, 0, data.Length); }
/// <summary> /// The alter request content type. /// </summary> /// <param name="settings"> /// The settings. /// </param> protected override void AlterRequestContentType(RequestSettings settings) { Request.ContentType += "; boundary=" + this.boundary; }
/// <summary> /// The write form data. /// </summary> /// <param name="stream"> /// The stream. /// </param> /// <param name="settings"> /// The settings. /// </param> protected override void WriteFormData(System.IO.Stream stream, RequestSettings settings) { var formdataTemplate = "\r\n--" + this.boundary + "\r\nContent-Disposition: form-data; name=\"{0}\";\r\n\r\n{1}"; var sw = new StringWriter(); foreach (var item in settings.Form) { sw.Write(formdataTemplate, item.Key, item.Value); } var data = Encoding.ASCII.GetBytes(sw.ToString()); stream.Write(data, 0, data.Length); stream.Write(this.boundaryBytes, 0, this.boundaryBytes.Length); }
/// <summary> /// Writes the form data. /// </summary> /// <param name="stream">The stream.</param> /// <param name="settings">The settings.</param> protected virtual void WriteFormData(Stream stream, RequestSettings settings) { }
/// <summary> /// Alters the type of the request content. /// </summary> /// <param name="settings">The settings.</param> protected virtual void AlterRequestContentType(RequestSettings settings) { }
/// <summary> /// Opens the file. /// </summary> /// <param name="openFile">The openFile.</param> private void OpenFile(string openFile) { this.Filename = openFile; var text = File.ReadAllText(openFile, Encoding.Default); var data = Encoding.Default.GetBytes(text); var dcjs = new DataContractJsonSerializer(typeof(RequestSettings)); using (var ms = new MemoryStream(data)) { RequestSettings = (RequestSettings)dcjs.ReadObject(ms); } this.BindRequestSettings(); }
/// <summary> /// Handles the Click event of the miNew control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="RoutedEventArgs"/> instance containing the event data.</param> private void MiNewClick(object sender, RoutedEventArgs e) { if (this.CancelDirtyOperation()) { return; } RequestSettings = new RequestSettings(); this.Filename = null; this.BindRequestSettings(); }