public List <IFileEntry> List() { var files = new List <IFileEntry>(); try { SiaFileList fl = GetFiles(); if (fl.Files == null) { return(files); } foreach (var f in fl.Files) { // Sia returns a complete file list, but we're only interested in files that are // in our target path if (f.Siapath.StartsWith(m_targetpath)) { FileEntry fe = new FileEntry(f.Siapath.Substring(m_targetpath.Length + 1)); fe.Size = f.Filesize; fe.IsFolder = false; files.Add(fe); } } } catch (System.Net.WebException wex) { throw new Exception("failed to call /renter/files " + wex.Message); } return(files); }
private bool IsUploadComplete(string siafilename) { SiaFileList fl = GetFiles(); if (fl.Files == null) { return(false); } foreach (var f in fl.Files) { if (f.Siapath == siafilename) { if (f.Available == true && f.Redundancy >= m_redundancy /* && f.Uploadprogress >= 100 */) { return(true); } } } return(false); }
private SiaFileList GetFiles() { var fl = new SiaFileList(); string endpoint = string.Format("/renter/files"); try { System.Net.HttpWebRequest req = CreateRequest(endpoint); req.Method = System.Net.WebRequestMethods.Http.Get; Utility.AsyncHttpRequest areq = new Utility.AsyncHttpRequest(req); using (System.Net.HttpWebResponse resp = (System.Net.HttpWebResponse)areq.GetResponse()) { int code = (int)resp.StatusCode; if (code < 200 || code >= 300) { throw new System.Net.WebException(resp.StatusDescription, null, System.Net.WebExceptionStatus.ProtocolError, resp); } var serializer = new JsonSerializer(); using (var rs = areq.GetResponseStream()) using (var sr = new System.IO.StreamReader(rs)) using (var jr = new Newtonsoft.Json.JsonTextReader(sr)) { fl = (SiaFileList)serializer.Deserialize(jr, typeof(SiaFileList)); } } } catch (System.Net.WebException wex) { throw new Exception(getResponseBodyOnError(endpoint, wex)); } return(fl); }