Skip to content

Commit 19018c8

Browse files
committed
init commit
1 parent c377bd5 commit 19018c8

23 files changed

+839
-0
lines changed

.vs/RevStack.Net/v14/.suo

19 KB
Binary file not shown.

BasicCredentials.cs

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using System;
2+
3+
namespace RevStack.Net
4+
{
5+
public class BasicCredentials
6+
{
7+
public string Username { get; set; }
8+
public string Password { get; set; }
9+
public bool Error { get; set; }
10+
}
11+
}

Ftp.cs

+288
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,288 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Net;
5+
6+
7+
namespace RevStack.Net
8+
{
9+
public class Ftp
10+
{
11+
public bool Binary = true;
12+
public bool EnableSsl = false;
13+
public bool Hash = false;
14+
public bool Passive = true;
15+
private string uri;
16+
private readonly int bufferSize = 1024;
17+
private readonly string password;
18+
private readonly string userName;
19+
20+
public Ftp(string uri, string userName, string password)
21+
{
22+
this.uri = uri;
23+
this.userName = userName;
24+
this.password = password;
25+
}
26+
27+
public string AppendFile(string source, string destination)
28+
{
29+
var request = createRequest(combine(uri, destination), WebRequestMethods.Ftp.AppendFile);
30+
31+
using (var stream = request.GetRequestStream())
32+
{
33+
using (var fileStream = File.Open(source, FileMode.Open))
34+
{
35+
int num;
36+
37+
var buffer = new byte[bufferSize];
38+
39+
while ((num = fileStream.Read(buffer, 0, buffer.Length)) > 0)
40+
{
41+
if (Hash)
42+
Console.Write("#");
43+
44+
stream.Write(buffer, 0, num);
45+
}
46+
}
47+
}
48+
49+
return getStatusDescription(request);
50+
}
51+
52+
public string ChangeWorkingDirectory(string path)
53+
{
54+
uri = combine(uri, path);
55+
56+
return PrintWorkingDirectory();
57+
}
58+
59+
public string DeleteFile(string fileName)
60+
{
61+
var request = createRequest(combine(uri, fileName), WebRequestMethods.Ftp.DeleteFile);
62+
63+
return getStatusDescription(request);
64+
}
65+
66+
public string DownloadFile(string source, string dest)
67+
{
68+
var request = createRequest(combine(uri, source), WebRequestMethods.Ftp.DownloadFile);
69+
70+
var buffer = new byte[bufferSize];
71+
72+
using (var response = (FtpWebResponse)request.GetResponse())
73+
{
74+
using (var stream = response.GetResponseStream())
75+
{
76+
using (var fs = new FileStream(dest, FileMode.OpenOrCreate))
77+
{
78+
var readCount = stream.Read(buffer, 0, bufferSize);
79+
80+
while (readCount > 0)
81+
{
82+
if (Hash)
83+
Console.Write("#");
84+
85+
fs.Write(buffer, 0, readCount);
86+
readCount = stream.Read(buffer, 0, bufferSize);
87+
}
88+
}
89+
}
90+
91+
return response.StatusDescription;
92+
}
93+
}
94+
95+
public Stream DownloadFileStream(string source)
96+
{
97+
var request = createRequest(combine(uri, source), WebRequestMethods.Ftp.DownloadFile);
98+
var response = (FtpWebResponse)request.GetResponse();
99+
var stream = response.GetResponseStream();
100+
101+
return stream;
102+
}
103+
104+
public DateTime GetDateTimestamp(string fileName)
105+
{
106+
var request = createRequest(combine(uri, fileName), WebRequestMethods.Ftp.GetDateTimestamp);
107+
108+
using (var response = (FtpWebResponse)request.GetResponse())
109+
{
110+
return response.LastModified;
111+
}
112+
}
113+
114+
public long GetFileSize(string fileName)
115+
{
116+
var request = createRequest(combine(uri, fileName), WebRequestMethods.Ftp.GetFileSize);
117+
118+
using (var response = (FtpWebResponse)request.GetResponse())
119+
{
120+
return response.ContentLength;
121+
}
122+
}
123+
124+
public string[] ListDirectory()
125+
{
126+
var list = new List<string>();
127+
128+
var request = createRequest(WebRequestMethods.Ftp.ListDirectory);
129+
130+
using (var response = (FtpWebResponse)request.GetResponse())
131+
{
132+
using (var stream = response.GetResponseStream())
133+
{
134+
using (var reader = new StreamReader(stream, true))
135+
{
136+
while (!reader.EndOfStream)
137+
{
138+
list.Add(reader.ReadLine());
139+
}
140+
}
141+
}
142+
}
143+
144+
return list.ToArray();
145+
}
146+
147+
public string[] ListDirectoryDetails()
148+
{
149+
var list = new List<string>();
150+
151+
var request = createRequest(WebRequestMethods.Ftp.ListDirectoryDetails);
152+
153+
using (var response = (FtpWebResponse)request.GetResponse())
154+
{
155+
using (var stream = response.GetResponseStream())
156+
{
157+
using (var reader = new StreamReader(stream, true))
158+
{
159+
while (!reader.EndOfStream)
160+
{
161+
list.Add(reader.ReadLine());
162+
}
163+
}
164+
}
165+
}
166+
167+
return list.ToArray();
168+
}
169+
170+
public string MakeDirectory(string directoryName)
171+
{
172+
var request = createRequest(combine(uri, directoryName), WebRequestMethods.Ftp.MakeDirectory);
173+
174+
return getStatusDescription(request);
175+
}
176+
177+
public string PrintWorkingDirectory()
178+
{
179+
var request = createRequest(WebRequestMethods.Ftp.PrintWorkingDirectory);
180+
181+
return getStatusDescription(request);
182+
}
183+
184+
public string RemoveDirectory(string directoryName)
185+
{
186+
var request = createRequest(combine(uri, directoryName), WebRequestMethods.Ftp.RemoveDirectory);
187+
188+
return getStatusDescription(request);
189+
}
190+
191+
public string Rename(string currentName, string newName)
192+
{
193+
var request = createRequest(combine(uri, currentName), WebRequestMethods.Ftp.Rename);
194+
195+
request.RenameTo = newName;
196+
197+
return getStatusDescription(request);
198+
}
199+
200+
public string UploadFile(string source, string destination)
201+
{
202+
var request = createRequest(combine(uri, destination), WebRequestMethods.Ftp.UploadFile);
203+
204+
using (var stream = request.GetRequestStream())
205+
{
206+
using (var fileStream = File.Open(source, FileMode.Open))
207+
{
208+
int num;
209+
210+
var buffer = new byte[bufferSize];
211+
212+
while ((num = fileStream.Read(buffer, 0, buffer.Length)) > 0)
213+
{
214+
if (Hash)
215+
Console.Write("#");
216+
217+
stream.Write(buffer, 0, num);
218+
}
219+
}
220+
}
221+
222+
return getStatusDescription(request);
223+
}
224+
225+
public string UploadFileWithUniqueName(string source)
226+
{
227+
var request = createRequest(WebRequestMethods.Ftp.UploadFileWithUniqueName);
228+
229+
using (var stream = request.GetRequestStream())
230+
{
231+
using (var fileStream = File.Open(source, FileMode.Open))
232+
{
233+
int num;
234+
235+
var buffer = new byte[bufferSize];
236+
237+
while ((num = fileStream.Read(buffer, 0, buffer.Length)) > 0)
238+
{
239+
if (Hash)
240+
Console.Write("#");
241+
242+
stream.Write(buffer, 0, num);
243+
}
244+
}
245+
}
246+
247+
using (var response = (FtpWebResponse)request.GetResponse())
248+
{
249+
return Path.GetFileName(response.ResponseUri.ToString());
250+
}
251+
}
252+
253+
private FtpWebRequest createRequest(string method)
254+
{
255+
return createRequest(uri, method);
256+
}
257+
258+
#region "private"
259+
260+
private FtpWebRequest createRequest(string uri, string method)
261+
{
262+
var r = (FtpWebRequest)WebRequest.Create(uri);
263+
264+
r.Credentials = new NetworkCredential(userName, password);
265+
r.Method = method;
266+
r.UseBinary = Binary;
267+
r.EnableSsl = EnableSsl;
268+
r.UsePassive = Passive;
269+
270+
return r;
271+
}
272+
273+
private string getStatusDescription(FtpWebRequest request)
274+
{
275+
using (var response = (FtpWebResponse)request.GetResponse())
276+
{
277+
return response.StatusDescription;
278+
}
279+
}
280+
281+
private string combine(string path1, string path2)
282+
{
283+
return Path.Combine(path1, path2).Replace("\\", "/");
284+
}
285+
286+
#endregion
287+
}
288+
}

0 commit comments

Comments
 (0)