2 // System.Net.FtpWebResponse.cs
5 // Carlos Alberto Cortez (calberto.cortez@gmail.com)
7 // (c) Copyright 2006 Novell, Inc. (http://www.novell.com)
12 using System.Runtime.Serialization;
17 public class FtpWebResponse : WebResponse
21 FtpStatusCode statusCode;
22 DateTime lastModified = DateTime.MinValue;
23 string bannerMessage = String.Empty;
24 string welcomeMessage = String.Empty;
25 string exitMessage = String.Empty;
26 string statusDescription;
30 FtpWebRequest request;
31 internal long contentLength = -1;
33 internal FtpWebResponse (FtpWebRequest request, Uri uri, string method, bool keepAlive)
35 this.request = request;
38 //this.keepAlive = keepAlive;
41 internal FtpWebResponse (FtpWebRequest request, Uri uri, string method, FtpStatusCode statusCode, string statusDescription)
43 this.request = request;
46 this.statusCode = statusCode;
47 this.statusDescription = statusDescription;
50 internal FtpWebResponse (FtpWebRequest request, Uri uri, string method, FtpStatus status) :
51 this (request, uri, method, status.StatusCode, status.StatusDescription)
55 public override long ContentLength {
61 public override WebHeaderCollection Headers {
63 return new WebHeaderCollection ();
67 public override Uri ResponseUri {
73 public DateTime LastModified {
82 public string BannerMessage {
87 bannerMessage = value;
91 public string WelcomeMessage {
93 return welcomeMessage;
96 welcomeMessage = value;
100 public string ExitMessage {
109 public FtpStatusCode StatusCode {
118 public override bool SupportsHeaders {
124 public string StatusDescription {
126 return statusDescription;
129 statusDescription = value;
133 public override void Close ()
139 if (stream != null) {
141 if (stream == Stream.Null)
142 request.OperationCompleted ();
147 public override Stream GetResponseStream ()
150 return Stream.Null; // After a STOR we get this
152 if (method != WebRequestMethods.Ftp.DownloadFile &&
153 method != WebRequestMethods.Ftp.ListDirectory)
159 internal Stream Stream {
164 get { return stream; }
167 internal void UpdateStatus (FtpStatus status) {
168 statusCode = status.StatusCode;
169 statusDescription = status.StatusDescription;
172 void CheckDisposed ()
175 throw new ObjectDisposedException (GetType ().FullName);
178 internal bool IsFinal () {
179 return ((int) statusCode >= 200);