/// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 6
0
 /// <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)
 {
 }
Esempio n. 7
0
 /// <summary>
 /// Alters the type of the request content.
 /// </summary>
 /// <param name="settings">The settings.</param>
 protected virtual void AlterRequestContentType(RequestSettings settings)
 {
 }
Esempio n. 8
0
        /// <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();
        }
Esempio n. 9
0
        /// <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();
        }