|
8 | 8 |
|
9 | 9 | namespace LibStorj.Wrapper.AsyncCallbackWrapper |
10 | 10 | { |
11 | | - class UploadFileCallbackAsync : TaskCompletionSource<File>, io.storj.libstorj.UploadFileCallback |
| 11 | + class UploadFileCallbackAsync : io.storj.libstorj.UploadFileCallback |
12 | 12 | { |
13 | | - private IProgress<ProgressStatusUpload> _progress; |
| 13 | + private UploadJob _job; |
14 | 14 |
|
15 | | - public UploadFileCallbackAsync(string bucketId, string fileName, string localPath, IProgress<ProgressStatusUpload> progress, io.storj.libstorj.Storj storj) |
| 15 | + public static UploadJob UploadFile(string bucketId, string fileName, string localPath, io.storj.libstorj.Storj storj) |
16 | 16 | { |
17 | | - _progress = progress; |
| 17 | + UploadJob job = new UploadJob(fileName); |
| 18 | + UploadFileCallbackAsync callback = new UploadFileCallbackAsync(job); |
18 | 19 | try |
19 | 20 | { |
20 | | - storj.uploadFile(bucketId, fileName, localPath, this); //ToDo: CancelHandle |
| 21 | + |
| 22 | + var handle = storj.uploadFile(bucketId, fileName, localPath, callback); |
| 23 | + job.Id = handle; |
21 | 24 | } |
22 | 25 | catch (io.storj.libstorj.KeysNotFoundException) |
23 | 26 | { |
24 | 27 | throw new KeysNotFoundException(); |
25 | 28 | } |
| 29 | + return job; |
| 30 | + } |
| 31 | + |
| 32 | + private UploadFileCallbackAsync(UploadJob job) |
| 33 | + { |
| 34 | + _job = job; |
26 | 35 | } |
27 | 36 |
|
28 | | - public void onProgress(string filePath, double progress, long downloadedBytes, long totalBytes) |
| 37 | + public void onProgress(string filePath, double progress, long uploadedBytes, long totalBytes) |
29 | 38 | { |
30 | | - if (_progress != null) |
31 | | - _progress.Report(new ProgressStatusUpload(filePath, progress, downloadedBytes, totalBytes)); |
| 39 | + _job.CurrentProgress = new ProgressStatusUpload(filePath, progress, uploadedBytes, totalBytes); |
| 40 | + _job.RaiseProgressChanged(); |
32 | 41 | } |
33 | 42 |
|
34 | | - public void onComplete(string str, io.storj.libstorj.File f) |
| 43 | + public void onComplete(string filePath, io.storj.libstorj.File f) |
35 | 44 | { |
36 | | - File file = new File(f.getId(), f.getBucketId(), f.getName(), f.getCreated(), f.isDecrypted(), f.getSize(), f.getMimeType(), f.getErasure(), f.getIndex(), f.getHMAC()); |
37 | | - SetResult(file); |
| 45 | + _job.CurrentProgress = new ProgressStatusUpload(filePath, 100, f.getSize(), f.getSize()); |
| 46 | + _job.IsFinished = true; |
| 47 | + _job.RaiseJobFinished(); |
38 | 48 | } |
39 | 49 |
|
40 | 50 | public void onError(string filePath, int errorCode, string message) |
41 | 51 | { |
42 | | - SetException(new UploadFileFailedException(filePath, errorCode, message)); |
| 52 | + _job.IsOnError = true; |
| 53 | + _job.ErrorCode = errorCode; |
| 54 | + _job.ErrorMessage = message; |
| 55 | + _job.RaiseJobFailed(); |
43 | 56 | } |
44 | 57 | } |
45 | 58 | } |
0 commit comments