private async Task <FtpFeatures> GetFtpFeaturesAsync(ComplexSocket controlComplexSocket, CancellationToken cancellationToken) { var success = await this.SendAndLogAsync(controlComplexSocket, cancellationToken, "FEAT"); if (!success) { return(FtpFeatures.Unknown); } var ftpReply = await this.ReceiveAndLogAsync(controlComplexSocket, cancellationToken); if (!ftpReply.Success) { return(FtpFeatures.Unknown); } var messages = ftpReply.Messages; var ftpFeatures = FtpClientHelper.ParseFtpFeatures(messages); return(ftpFeatures); }
public FtpClient() { this.Encoding = Encoding.UTF8; this.ConnectTimeout = TimeSpan.FromSeconds(30); this.ReceiveTimeout = TimeSpan.FromSeconds(30); this.SendTimeout = TimeSpan.FromMinutes(5); this.SocketClientAccessPolicyProtocol = SocketClientAccessPolicyProtocol.Http; this._ftpFeatures = new Lazy <FtpFeatures>(() => { var controlComplexSocket = this._controlComplexSocket; { var success = controlComplexSocket.Send("FEAT", this.Encoding, this.SendTimeout); if (!success) { return(FtpFeatures.Unknown); } } { var complexResult = controlComplexSocket.Receive(this.Encoding, this.ReceiveTimeout); var success = complexResult.Success; if (!success) { return(FtpFeatures.Unknown); } var messages = complexResult.Messages; var ftpFeatures = FtpClientHelper.ParseFtpFeatures(messages); return(ftpFeatures); } }); }