|
@@ -47,6 +47,27 @@ namespace B2Uploader
|
47
|
47
|
|
48
|
48
|
foreach(string s in Directory.GetFiles(options.Directory))
|
49
|
49
|
{
|
|
50
|
+ //check if file already exists
|
|
51
|
+
|
|
52
|
+ string fileName = s.Replace('\\', '_');
|
|
53
|
+
|
|
54
|
+ var existingFiles = ListFileNames(new ListFileNamesRequest() { bucketId = bucket.bucketId, startFileName = fileName }, auth.apiUrl, auth.authorizationToken);
|
|
55
|
+ bool found = false;
|
|
56
|
+ foreach (var x in existingFiles.files)
|
|
57
|
+ {
|
|
58
|
+ if (x.fileName == fileName)
|
|
59
|
+ {
|
|
60
|
+ found = true;
|
|
61
|
+ break;
|
|
62
|
+ }
|
|
63
|
+ }
|
|
64
|
+ if (found)
|
|
65
|
+ {
|
|
66
|
+ Console.WriteLine("File exists already, skipping");
|
|
67
|
+ continue;
|
|
68
|
+ }
|
|
69
|
+
|
|
70
|
+
|
50
|
71
|
var uploadURL = GetUploadURL(new GetUploadURLRequest { bucketId = bucket.bucketId }, auth.apiUrl, auth.authorizationToken);
|
51
|
72
|
var response = UploadFile(uploadURL.authorizationToken, "b2/x-auto", s, uploadURL.uploadUrl);
|
52
|
73
|
}
|
|
@@ -114,7 +135,7 @@ namespace B2Uploader
|
114
|
135
|
static UploadFileResponse UploadFile(string authToken, string contentType, string filePath, string uploadUrl)
|
115
|
136
|
{
|
116
|
137
|
|
117
|
|
- byte[] bytes = File.ReadAllBytes(filePath);
|
|
138
|
+ byte[] bytes = System.IO.File.ReadAllBytes(filePath);
|
118
|
139
|
|
119
|
140
|
String sha1 = GetSha1(bytes);
|
120
|
141
|
|
|
@@ -146,6 +167,27 @@ namespace B2Uploader
|
146
|
167
|
}
|
147
|
168
|
}
|
148
|
169
|
|
|
170
|
+ static ListFileNamesResponse ListFileNames(ListFileNamesRequest request, string apiUrl, string authToken)
|
|
171
|
+ {
|
|
172
|
+
|
|
173
|
+ HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(apiUrl + "/b2api/v1/b2_list_file_names");
|
|
174
|
+ string body = JsonConvert.SerializeObject(request);
|
|
175
|
+ var data = Encoding.UTF8.GetBytes(body);
|
|
176
|
+ webRequest.Method = "POST";
|
|
177
|
+ webRequest.Headers.Add("Authorization", authToken);
|
|
178
|
+ webRequest.ContentType = "application/json; charset=utf-8";
|
|
179
|
+ webRequest.ContentLength = data.Length;
|
|
180
|
+ using (var stream = webRequest.GetRequestStream())
|
|
181
|
+ {
|
|
182
|
+ stream.Write(data, 0, data.Length);
|
|
183
|
+ stream.Close();
|
|
184
|
+ }
|
|
185
|
+ WebResponse response = (HttpWebResponse)webRequest.GetResponse();
|
|
186
|
+ var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
|
|
187
|
+ response.Close();
|
|
188
|
+ return JsonConvert.DeserializeObject<ListFileNamesResponse>(responseString);
|
|
189
|
+ }
|
|
190
|
+
|
149
|
191
|
private static string GetSha1(byte[] bytes)
|
150
|
192
|
{
|
151
|
193
|
using (SHA1Managed sha1 = new SHA1Managed())
|