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;
19 public class FtpWebResponse : WebResponse
23 FtpStatusCode statusCode;
24 DateTime lastModified = DateTime.MinValue;
25 string bannerMessage = String.Empty;
26 string welcomeMessage = String.Empty;
27 string exitMessage = String.Empty;
28 string statusDescription;
32 FtpWebRequest request;
33 internal long contentLength = -1;
35 internal FtpWebResponse (FtpWebRequest request, Uri uri, string method, bool keepAlive)
37 this.request = request;
40 //this.keepAlive = keepAlive;
43 internal FtpWebResponse (FtpWebRequest request, Uri uri, string method, FtpStatusCode statusCode, string statusDescription)
45 this.request = request;
48 this.statusCode = statusCode;
49 this.statusDescription = statusDescription;
52 internal FtpWebResponse (FtpWebRequest request, Uri uri, string method, FtpStatus status) :
53 this (request, uri, method, status.StatusCode, status.StatusDescription)
57 public override long ContentLength {
63 public override WebHeaderCollection Headers {
65 return new WebHeaderCollection ();
69 public override Uri ResponseUri {
75 public DateTime LastModified {
84 public string BannerMessage {
89 bannerMessage = value;
93 public string WelcomeMessage {
95 return welcomeMessage;
98 welcomeMessage = value;
102 public string ExitMessage {
111 public FtpStatusCode StatusCode {
120 public string StatusDescription {
122 return statusDescription;
125 statusDescription = value;
129 public override void Close ()
135 if (stream != null) {
137 if (stream == Stream.Null)
138 request.OperationCompleted ();
143 public override Stream GetResponseStream ()
146 return Stream.Null; // After a STOR we get this
148 if (method != WebRequestMethods.Ftp.DownloadFile &&
149 method != WebRequestMethods.Ftp.ListDirectory)
155 internal Stream Stream {
160 get { return stream; }
163 internal void UpdateStatus (FtpStatus status) {
164 statusCode = status.StatusCode;
165 statusDescription = status.StatusDescription;
168 void CheckDisposed ()
171 throw new ObjectDisposedException (GetType ().FullName);
174 internal bool IsFinal () {
175 return ((int) statusCode >= 200);