From 1410e893e19d5ea6eaeb2992abdb01fba5402de6 Mon Sep 17 00:00:00 2001 From: TopperDEL Date: Thu, 22 Mar 2018 20:40:06 +0100 Subject: [PATCH] Upgrade to java-libstorj 0.8.1 - First fully working version! --- .../Interfaces/IStorj.cs | 4 +- .../Models/DownloadJob.cs | 7 ++- LibStorj.Wrapper.Contracts/Models/JobBase.cs | 41 ++++++++++++++++++ .../Models/UploadJob.cs | 20 +++++++++ LibStorj.Wrapper.Test.Console/Program.cs | 40 +++-------------- .../DownloadFileCallbackAsync.cs | 8 +++- .../UploadFileCallbackAsync.cs | 37 +++++++++++----- .../LibStorj.Wrapper.x64.csproj | 9 ++-- LibStorj.Wrapper.x64/Storj.cs | 8 ++-- LibStorj.Wrapper.x64/libstorj-java-0.8.1.dll | Bin 0 -> 36864 bytes LibStorj.Wrapper.x64/libstorj-java-0.8.dll | Bin 36352 -> 0 bytes README.md | 5 +-- 12 files changed, 116 insertions(+), 63 deletions(-) create mode 100644 LibStorj.Wrapper.Contracts/Models/JobBase.cs create mode 100644 LibStorj.Wrapper.Contracts/Models/UploadJob.cs create mode 100644 LibStorj.Wrapper.x64/libstorj-java-0.8.1.dll delete mode 100644 LibStorj.Wrapper.x64/libstorj-java-0.8.dll diff --git a/LibStorj.Wrapper.Contracts/Interfaces/IStorj.cs b/LibStorj.Wrapper.Contracts/Interfaces/IStorj.cs index bad3587..be35742 100644 --- a/LibStorj.Wrapper.Contracts/Interfaces/IStorj.cs +++ b/LibStorj.Wrapper.Contracts/Interfaces/IStorj.cs @@ -36,7 +36,7 @@ public interface IStorj DownloadJob DownloadFile(File file, string localPath); DownloadJob DownloadFile(Bucket bucket, string fileId, string localPath); DownloadJob DownloadFile(string bucketId, string fileId, string localPath); - Task UploadFile(Bucket bucket, string fileName, string localPath, IProgress progress = null); - Task UploadFile(string bucketId, string fileName, string localPath, IProgress progress = null); + UploadJob UploadFile(Bucket bucket, string fileName, string localPath); + UploadJob UploadFile(string bucketId, string fileName, string localPath); } } diff --git a/LibStorj.Wrapper.Contracts/Models/DownloadJob.cs b/LibStorj.Wrapper.Contracts/Models/DownloadJob.cs index 6ee7ffe..ded106c 100644 --- a/LibStorj.Wrapper.Contracts/Models/DownloadJob.cs +++ b/LibStorj.Wrapper.Contracts/Models/DownloadJob.cs @@ -6,15 +6,14 @@ namespace LibStorj.Wrapper.Contracts.Models { - public class DownloadJob + public class DownloadJob : JobBase { - public long Id { get; set; } - public bool IsFinished { get; set; } - public bool IsOnError { get; set; } public ProgressStatusDownload CurrentProgress { get; set; } + public string FileId { get; set; } public DownloadJob(string fileId) { + FileId = fileId; CurrentProgress = new ProgressStatusDownload(fileId, 0, 0, 0); } } diff --git a/LibStorj.Wrapper.Contracts/Models/JobBase.cs b/LibStorj.Wrapper.Contracts/Models/JobBase.cs new file mode 100644 index 0000000..2364e71 --- /dev/null +++ b/LibStorj.Wrapper.Contracts/Models/JobBase.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace LibStorj.Wrapper.Contracts.Models +{ + public delegate void ProgressChanged(JobBase job); + public delegate void JobFinished(JobBase job); + public delegate void JobFailed(JobBase job); + + public abstract class JobBase + { + public long Id { get; set; } + public bool IsFinished { get; set; } + public bool IsOnError { get; set; } + public int ErrorCode { get; set; } + public string ErrorMessage { get; set; } + + public event ProgressChanged ProgressChanged; + public event JobFinished JobFinished; + public event JobFailed JobFailed; + + public void RaiseProgressChanged() + { + if (ProgressChanged != null) + ProgressChanged(this); + } + + public void RaiseJobFinished() + { + if (JobFinished != null) + JobFinished(this); + } + + public void RaiseJobFailed() + { + if (JobFailed != null) + JobFailed(this); + } + } +} diff --git a/LibStorj.Wrapper.Contracts/Models/UploadJob.cs b/LibStorj.Wrapper.Contracts/Models/UploadJob.cs new file mode 100644 index 0000000..c80bf31 --- /dev/null +++ b/LibStorj.Wrapper.Contracts/Models/UploadJob.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LibStorj.Wrapper.Contracts.Models +{ + public class UploadJob : JobBase + { + public ProgressStatusUpload CurrentProgress { get; set; } + public string FileName { get; set; } + + public UploadJob(string fileName) + { + FileName = fileName; + CurrentProgress = new ProgressStatusUpload(fileName, 0, 0, 0); + } + } +} diff --git a/LibStorj.Wrapper.Test.Console/Program.cs b/LibStorj.Wrapper.Test.Console/Program.cs index f85e11d..cb291d7 100644 --- a/LibStorj.Wrapper.Test.Console/Program.cs +++ b/LibStorj.Wrapper.Test.Console/Program.cs @@ -1,12 +1,6 @@ using LibStorj.Wrapper.Contracts.Interfaces; -using LibStorj.Wrapper.Contracts.Models; using LibStorj.Wrapper.x64; using Nito.AsyncEx; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace LibStorj.Wrapper.Test.Console.x64 { @@ -24,39 +18,19 @@ static async void MainAsync(string[] args) //First test - if this fails, the system could not load the DLLs correctly. var timestamp = utils.GetTimestamp(); - IStorj storj = new Storj(); - //Set your keys and Mnemonics here or provide a keyfile vie the overloads. - storj.ImportKeys(new Contracts.Models.Keys("USER","PASSWORD","MNEMONIC"),"PASSPHRASE"); - var keyExist = storj.KeysExist; //This is not really working - it always returns "true" - - var buckets = await storj.GetBucketsAsync(); //Load all buckets - if that works your credentials did work - var files = await storj.ListFilesAsync(buckets[0]); //Load the files of the first bucket - //Get the versions of the dependencies to see if they work var v1 = (new VersionInfo()).GetCurlVersion(); var v2 = (new VersionInfo()).GetLibuvCVersion(); var v3 = (new VersionInfo()).GetJsonCVersion(); var v4 = (new VersionInfo()).GetNettleVersion(); - storj.UploadFile(buckets[0].Id, "Uploadfile.txt", @"YOURPATH\YOURFILE.txt"); //Test-upload a file - provide a path to a small file here - - //At this point, the upload does not work. - //After the next line the upload works but blocks GetInfoAsync. If the file is uploaded, the GetInfo is executed and returns - var info = await storj.GetInfoAsync(); - - //The same with download - var job = storj.DownloadFile(files.Item2.First(), @"YOURPATH\YOURFILE.txt"); - while(!job.IsFinished) - { - System.Console.Clear(); - System.Console.WriteLine("Status: " + job.CurrentProgress.DoneBytes + "/" + job.CurrentProgress.TotalBytes + " - " + job.CurrentProgress.Progress + "%"); - //The same like above - var infoDownload = await storj.GetInfoAsync(); - } - } - static void OnDownloadProgress(ProgressStatusDownload progress) - { - System.Console.WriteLine("DownloadProgress: " + progress.Progress); + IStorj storj = new Storj(); + //Set your keys and Mnemonics here or provide a keyfile via the overloads. + storj.ImportKeys(new Contracts.Models.Keys("USER","PASSWORD","MNEMONIC"),"PASSPHRASE"); + + var buckets = await storj.GetBucketsAsync(); //Load all buckets - if that works your credentials did work + + //Now do whatever you like - storj is working for you! :) } } } diff --git a/LibStorj.Wrapper.x64/AsyncCallbackWrapper/DownloadFileCallbackAsync.cs b/LibStorj.Wrapper.x64/AsyncCallbackWrapper/DownloadFileCallbackAsync.cs index 31f7817..116bdc7 100644 --- a/LibStorj.Wrapper.x64/AsyncCallbackWrapper/DownloadFileCallbackAsync.cs +++ b/LibStorj.Wrapper.x64/AsyncCallbackWrapper/DownloadFileCallbackAsync.cs @@ -29,7 +29,7 @@ public static DownloadJob DownloadFile(string bucketId, string fileId, string lo return job; } - public DownloadFileCallbackAsync(DownloadJob job) + private DownloadFileCallbackAsync(DownloadJob job) { _job = job; } @@ -37,18 +37,22 @@ public DownloadFileCallbackAsync(DownloadJob job) public void onProgress(string fileId, double progress, long downloadedBytes, long totalBytes) { _job.CurrentProgress = new ProgressStatusDownload(fileId, progress, downloadedBytes, totalBytes); + _job.RaiseProgressChanged(); } public void onComplete(string fileId, string localPath) { _job.CurrentProgress = new ProgressStatusDownload(fileId, 100, 0, 0); _job.IsFinished = true; + _job.RaiseJobFinished(); } public void onError(string fileId, int errorCode, string message) { _job.IsOnError = true; - //Todo: fehlermeldung übernehmen + _job.ErrorCode = errorCode; + _job.ErrorMessage = message; + _job.RaiseJobFailed(); } } } diff --git a/LibStorj.Wrapper.x64/AsyncCallbackWrapper/UploadFileCallbackAsync.cs b/LibStorj.Wrapper.x64/AsyncCallbackWrapper/UploadFileCallbackAsync.cs index b0c92bb..941af81 100644 --- a/LibStorj.Wrapper.x64/AsyncCallbackWrapper/UploadFileCallbackAsync.cs +++ b/LibStorj.Wrapper.x64/AsyncCallbackWrapper/UploadFileCallbackAsync.cs @@ -8,38 +8,51 @@ namespace LibStorj.Wrapper.AsyncCallbackWrapper { - class UploadFileCallbackAsync : TaskCompletionSource, io.storj.libstorj.UploadFileCallback + class UploadFileCallbackAsync : io.storj.libstorj.UploadFileCallback { - private IProgress _progress; + private UploadJob _job; - public UploadFileCallbackAsync(string bucketId, string fileName, string localPath, IProgress progress, io.storj.libstorj.Storj storj) + public static UploadJob UploadFile(string bucketId, string fileName, string localPath, io.storj.libstorj.Storj storj) { - _progress = progress; + UploadJob job = new UploadJob(fileName); + UploadFileCallbackAsync callback = new UploadFileCallbackAsync(job); try { - storj.uploadFile(bucketId, fileName, localPath, this); //ToDo: CancelHandle + + var handle = storj.uploadFile(bucketId, fileName, localPath, callback); + job.Id = handle; } catch (io.storj.libstorj.KeysNotFoundException) { throw new KeysNotFoundException(); } + return job; + } + + private UploadFileCallbackAsync(UploadJob job) + { + _job = job; } - public void onProgress(string filePath, double progress, long downloadedBytes, long totalBytes) + public void onProgress(string filePath, double progress, long uploadedBytes, long totalBytes) { - if (_progress != null) - _progress.Report(new ProgressStatusUpload(filePath, progress, downloadedBytes, totalBytes)); + _job.CurrentProgress = new ProgressStatusUpload(filePath, progress, uploadedBytes, totalBytes); + _job.RaiseProgressChanged(); } - public void onComplete(string str, io.storj.libstorj.File f) + public void onComplete(string filePath, io.storj.libstorj.File f) { - File file = new File(f.getId(), f.getBucketId(), f.getName(), f.getCreated(), f.isDecrypted(), f.getSize(), f.getMimeType(), f.getErasure(), f.getIndex(), f.getHMAC()); - SetResult(file); + _job.CurrentProgress = new ProgressStatusUpload(filePath, 100, f.getSize(), f.getSize()); + _job.IsFinished = true; + _job.RaiseJobFinished(); } public void onError(string filePath, int errorCode, string message) { - SetException(new UploadFileFailedException(filePath, errorCode, message)); + _job.IsOnError = true; + _job.ErrorCode = errorCode; + _job.ErrorMessage = message; + _job.RaiseJobFailed(); } } } diff --git a/LibStorj.Wrapper.x64/LibStorj.Wrapper.x64.csproj b/LibStorj.Wrapper.x64/LibStorj.Wrapper.x64.csproj index bcde584..8d8f0e1 100644 --- a/LibStorj.Wrapper.x64/LibStorj.Wrapper.x64.csproj +++ b/LibStorj.Wrapper.x64/LibStorj.Wrapper.x64.csproj @@ -30,12 +30,12 @@ IKVM.Runtime.JNI.dll - - libstorj-java-0.7.3.dll - libstorj-java-0.8.dll + + libstorj-java-0.8.1.dll + @@ -88,6 +88,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/LibStorj.Wrapper.x64/Storj.cs b/LibStorj.Wrapper.x64/Storj.cs index 45823b4..ed15f90 100644 --- a/LibStorj.Wrapper.x64/Storj.cs +++ b/LibStorj.Wrapper.x64/Storj.cs @@ -133,14 +133,14 @@ public DownloadJob DownloadFile(string bucketId, string fileId, string localPath return DownloadFileCallbackAsync.DownloadFile(bucketId, fileId, localPath, _storjJava); } - public Task UploadFile(Bucket bucket, string fileName, string localPath, IProgress progress = null) + public UploadJob UploadFile(Bucket bucket, string fileName, string localPath) { - return UploadFile(bucket.Id, fileName, localPath, progress); + return UploadFile(bucket.Id, fileName, localPath); } - public Task UploadFile(string bucketId, string fileName, string localPath, IProgress progress = null) + public UploadJob UploadFile(string bucketId, string fileName, string localPath) { - return new UploadFileCallbackAsync(bucketId, fileName, localPath, progress, _storjJava).Task; + return UploadFileCallbackAsync.UploadFile(bucketId, fileName, localPath, _storjJava); } diff --git a/LibStorj.Wrapper.x64/libstorj-java-0.8.1.dll b/LibStorj.Wrapper.x64/libstorj-java-0.8.1.dll new file mode 100644 index 0000000000000000000000000000000000000000..5664f68351b139b61c34826698948842663351e7 GIT binary patch literal 36864 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 literal 0 HcmV?d00001 diff --git a/LibStorj.Wrapper.x64/libstorj-java-0.8.dll b/LibStorj.Wrapper.x64/libstorj-java-0.8.dll deleted file mode 100644 index baf36222cfd849a6b89b0bf08cdc191626b2b727..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36352 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 Xw_YPynxO7)PCB0aZ*|Q7j(Y!JAUO7$ diff --git a/README.md b/README.md index e781f87..ed3f31f 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ A .Net/C#-wrapper for Storj -This is the very first version - please excuse the missing documentation at this point. Just the short info: this library is based on the java-libstorj-binding and is done via IKVM. It works except the upload and download and there is still debug-code in it. Use at your own risk! +This is the very first version - please excuse the missing documentation at this point. Just the short info: this library is based on the java-libstorj-binding and is done via IKVM. -# Attention -Currently the library is not working due to threading issues. +Use at your own risk! \ No newline at end of file