using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; namespace sharpreleaser { public class FtpCommand : Command { private string address; private string username; private string password; private string fileName; public string Address { get { return address; } set { address = value; } } public string Username { get { return username; } set { username = value; } } public string Password { get { return password; } set { password = value; } } public string FileName { get { return fileName; } set { fileName = value; } } public FtpCommand() : base(CommandType.FTP, string.Empty) { } public override void Execute(Project project) { string path = project.ParseVariables(fileName); string ftpRequest = address + "/" + Path.GetFileName(path); FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(ftpRequest); request.Method = WebRequestMethods.Ftp.UploadFile; request.Proxy = new WebProxy(); request.Credentials = new NetworkCredential(username, password); request.UsePassive = true; request.UseBinary = true; request.KeepAlive = false; FileStream file = File.OpenRead(path); byte[] buffer = new byte[file.Length]; file.Read(buffer, 0, buffer.Length); file.Close(); try { Stream stream = request.GetRequestStream(); stream.Write(buffer, 0, buffer.Length); stream.Close(); Output = "Uploaded " + path + " to " + address; } catch (Exception ex) { Error = ex.ToString(); } } public override string ToString() { return Type + ": " + address; } } }