53 lines
1.8 KiB
C#
53 lines
1.8 KiB
C#
using Microsoft.Extensions.Configuration;
|
|
using PartSource.Automation.Models.Configuration;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.IO;
|
|
using System.Net;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace PartSource.Automation.Services
|
|
{
|
|
public class FtpService
|
|
{
|
|
private readonly FtpConfiguration _ftpConfiguration;
|
|
|
|
public FtpService(FtpConfiguration ftpConfiguration)
|
|
{
|
|
_ftpConfiguration = ftpConfiguration;
|
|
}
|
|
|
|
public string[] ListFiles(string directory)
|
|
{
|
|
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri($"{_ftpConfiguration.Url}/{directory}"));
|
|
request.Credentials = new NetworkCredential(_ftpConfiguration.Username, _ftpConfiguration.Password);
|
|
request.Method = WebRequestMethods.Ftp.ListDirectory;
|
|
|
|
using FtpWebResponse response = (FtpWebResponse)request.GetResponse();
|
|
using StreamReader reader = new StreamReader(response.GetResponseStream());
|
|
|
|
string files = reader.ReadToEnd();
|
|
|
|
return files.Length > 0
|
|
? files.Split("\r\n")
|
|
: Array.Empty<string>();
|
|
}
|
|
|
|
public void Download(string filename)
|
|
{
|
|
string file = $"{_ftpConfiguration.Destination}\\{filename.Replace("/", "\\")}";
|
|
|
|
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri($"{_ftpConfiguration.Url}/{filename}"));
|
|
request.Credentials = new NetworkCredential(_ftpConfiguration.Username, _ftpConfiguration.Password);
|
|
request.Method = WebRequestMethods.Ftp.DownloadFile;
|
|
|
|
using FtpWebResponse response = (FtpWebResponse)request.GetResponse();
|
|
using Stream responseStream = response.GetResponseStream();
|
|
using FileStream fileStream = new FileStream($"{_ftpConfiguration.Destination}\\{filename.Replace("/", "\\")}", FileMode.Create);
|
|
|
|
responseStream.CopyTo(fileStream);
|
|
}
|
|
}
|
|
}
|