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 string StatusDescription {
120 return statusDescription;
123 statusDescription = value;
127 public override void Close ()
133 if (stream != null) {
135 if (stream == Stream.Null)
136 request.OperationCompleted ();
141 public override Stream GetResponseStream ()
144 return Stream.Null; // After a STOR we get this
146 if (method != WebRequestMethods.Ftp.DownloadFile &&
147 method != WebRequestMethods.Ftp.ListDirectory)
153 internal Stream Stream {
158 get { return stream; }
161 internal void UpdateStatus (FtpStatus status) {
162 statusCode = status.StatusCode;
163 statusDescription = status.StatusDescription;
166 void CheckDisposed ()
169 throw new ObjectDisposedException (GetType ().FullName);
172 internal bool IsFinal () {
173 return ((int) statusCode >= 200);