Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }