private State GetStateFile()

in Source/NuGetGallery.Operations/Tasks/Backups/BackupPackagesTask.cs [142:172]


        private State GetStateFile(CloudBlobClient backupClient)
        {
            var container = backupClient.GetContainerReference("package-backups");
            container.CreateIfNotExists();
            var blob = container.GetBlockBlobReference("__backupstate.json");
            if (blob.Exists())
            {
                using (var strm = new MemoryStream())
                {
                    blob.DownloadToStream(strm);
                    strm.Flush();
                    strm.Seek(0, SeekOrigin.Begin);
                    using (var rdr = new StreamReader(strm, Encoding.Default, detectEncodingFromByteOrderMarks: true, bufferSize: 1024, leaveOpen: true))
                    {
                        try
                        {
                            return JsonConvert.DeserializeObject<State>(rdr.ReadToEnd());
                        }
                        catch (Exception ex)
                        {
                            Log.ErrorException(String.Format("Error parsing state file: {0}", ex.Message), ex);
                            return new State(); // Return an empty state and continue
                        }
                    }
                }
            }
            else
            {
                return new State();
            }
        }