/// <summary> /// /// </summary> /// <param name="LocalFile"></param> /// <returns></returns> async public Task UploadFileDataAsync(string LocalFile) { using (var LocalStream = File.OpenRead(LocalFile)) { var HttpClient = GetAuthorizedHttpClient(); var MultipartFormDataContent = new MultipartFormDataContent(); var TrackedLocalStream = new TrackingStream(LocalStream); var StreamContent = new StreamContent(TrackedLocalStream, 256 * 1024); StreamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); StreamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data"); StreamContent.Headers.ContentDisposition.Name = "file"; StreamContent.Headers.ContentDisposition.FileName = Path.GetFileName(LocalFile); MultipartFormDataContent.Add(StreamContent); TrackedLocalStream.OnPositionChanged += (Position) => { Console.Out.Write("Position: {0}/{1} : {2}%\r", Position, LocalStream.Length, Math.Round(((double)Position / (double)LocalStream.Length) * 100, 2)); Console.Out.Flush(); }; var Response = await HttpClient.PostAsync(this.Url + "/?" + PhpCloudBoxUtils.ToQueryString(new NameValueCollection() { { "action", "file.upload" }, } ), MultipartFormDataContent); var ResponseText = await Response.Content.ReadAsStringAsync(); Console.WriteLine(ResponseText); } }
/// <summary> /// /// </summary> /// <param name="Path"></param> /// <returns></returns> async public Task <Stream> DownloadFileAsync(string Path) { var HttpClient = GetAuthorizedHttpClient(); var Stream = await HttpClient.GetStreamAsync(this.Url + "/?" + PhpCloudBoxUtils.ToQueryString(new NameValueCollection() { { "action", "tree.file.get" }, { "path", Path }, } )); return(Stream); }
/// <summary> /// /// </summary> /// <param name="Path"></param> /// <returns></returns> async public Task <bool> DeleteFileAsync(string Path) { var HttpClient = GetAuthorizedHttpClient(); var JsonText = await HttpClient.GetStringAsync(this.Url + "/?" + PhpCloudBoxUtils.ToQueryString(new NameValueCollection() { { "action", "tree.remove" }, { "path", Path }, } )); return(true); }
/// <summary> /// /// </summary> /// <returns></returns> async public Task <List <FileInfo> > GetFileListAsync() { var HttpClient = GetAuthorizedHttpClient(); var JsonText = await HttpClient.GetStringAsync(this.Url + "/?" + PhpCloudBoxUtils.ToQueryString(new NameValueCollection() { { "action", "tree.get" }, } )); //Console.WriteLine(JsonText); var Result = JsonConvert.DeserializeObject <Result <List <FileInfo> > >(JsonText); return(Result.data); }
async public Task <bool> AddFileAsync(string RemoteFile, string sha1, DateTime ctime, DateTime mtime, string perms) { var HttpClient = GetAuthorizedHttpClient(); var JsonText = await HttpClient.GetStringAsync(this.Url + "/?" + PhpCloudBoxUtils.ToQueryString(new NameValueCollection() { { "action", "tree.add" }, { "path", RemoteFile }, { "sha1", sha1 }, { "ctime", "0" }, { "mtime", "0" }, { "perms", "0777" }, } )); return(true); }
async public Task <bool> HasFileDataAsync(string Path) { var HttpClient = GetAuthorizedHttpClient(); var Sha1 = await PhpCloudBoxUtils.Sha1FileAsync(Path); var JsonText = await HttpClient.GetStringAsync(this.Url + "/?" + PhpCloudBoxUtils.ToQueryString(new NameValueCollection() { { "action", "file.has" }, { "sha1", Sha1 }, } )); var Result = JsonConvert.DeserializeObject <Result <bool> >(JsonText); return(Result.data); }