Exemplo n.º 1
0
        // Get information of the current user as a `Person`.
        public Person GetUser()
        {
            var settingsPath = Locator.Locate("mmsetting.archive");
            var settings     = Unarchiver.DeepParse(PropertyListParser.Parse(settingsPath));
            var me           = new Person();

            DictUtil.TryGet(settings, "UsrName", out me.UsrName);
            DictUtil.TryGet(settings, "AliasName", out me.Alias);
            DictUtil.TryGet(settings, "NickName", out me.NickName);
            if (DictUtil.TryGetSubclass(settings, "new_dicsetting", out var setting))
            {
                DictUtil.TryGet(setting, "headimgurl", out me.Portrait);
                DictUtil.TryGet(setting, "headhdimgurl", out me.PortraitHD);
            }
            return(me);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            var unarchiver = new Unarchiver();

            var basePath = string.Join(" ", args);

            var unpackedFiles = unarchiver.Unarchive(basePath);

            foreach (var file in unpackedFiles)
            {
                Console.WriteLine("Extracted file: {0}", file);
            }

            Console.WriteLine();
            Console.WriteLine("Done.");
            Console.ReadLine();
        }
Exemplo n.º 3
0
        private static MBFile ReadFileBlob(Stream blob)
        {
            var dict   = Unarchiver.DeepParse(PropertyListParser.Parse(blob));
            var mbFile = new MBFile();

            DictUtil.TryGet(dict, "RelativePath", out mbFile.RelativePath);
            DictUtil.TryGet(dict, "Target", out mbFile.Target);
            DictUtil.TryGet(dict, "Mode", out mbFile.Mode);
            DictUtil.TryGet(dict, "InodeNumber", out mbFile.InodeNumber);
            DictUtil.TryGet(dict, "UserID", out mbFile.UserID);
            DictUtil.TryGet(dict, "GroupID", out mbFile.GroupID);
            DictUtil.TryGet(dict, "LastModified", out mbFile.LastModified);
            DictUtil.TryGet(dict, "LastStatusChange", out mbFile.LastStatusChange);
            DictUtil.TryGet(dict, "Birth", out mbFile.Birth);
            DictUtil.TryGet(dict, "Size", out mbFile.Size);
            DictUtil.TryGet(dict, "ProtectionClass", out mbFile.ProtectionClass);
            return(mbFile);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Start the archive extraction asynchronously.
        /// </summary>
        /// <returns></returns>
        private async Task StartExtractionAsync()
        {
            string archiveFile       = _gateway.GetBackupArchivePath();
            string outputDirectory   = _gateway.GetOutputFolderPath();
            string password          = _gateway.GetPassword();
            bool   ignoreWriteErrors = _gateway.GetIgnoreFileWriteErrors();
            bool   dryRun            = _gateway.GetDryRun();

            _tokenSource = new CancellationTokenSource();
            CancellationToken token = _tokenSource.Token;

            try
            {
                using (Unarchiver extractor = Unarchiver.CreateForFile(archiveFile, password))
                {
                    // Wire events
                    _totalArchiveSize = 0;

                    extractor.ArchiveInformationEvent += onArchiveInformationHandler;
                    extractor.ProgressEvent           += OnProgressHandler;
                    extractor.EntityEvent             += onEntityHandler;

                    Task t = Task.Factory.StartNew(
                        () =>
                    {
                        if (extractor == null)
                        {
                            throw new Exception("Internal state consistency violation: extractor object is null");
                        }

                        // Get the appropriate writer
                        IDataWriter writer = new NullWriter();

                        if (!dryRun)
                        {
                            writer = new DirectFileWriter(outputDirectory);

                            if (ignoreWriteErrors)
                            {
                                // TODO Use a different file writer when we are asked to ignore write errorss
                                writer = new DirectFileWriter(outputDirectory);
                            }
                        }

                        // Test the extraction
                        extractor.Extract(token, writer);
                    }, token,
                        TaskCreationOptions.None,
                        TaskScheduler.Default
                        );

                    await t;
                }
            }
            catch (Exception e)
            {
                Exception targetException = (e.InnerException == null) ? e : e.InnerException;

                _gateway.SetTaskbarProgressState(TaskBarProgress.TaskbarStates.Error);

                // Show error message
                _gateway.showErrorMessage(_languageResource.GetString("LBL_ERROR_CAPTION"), targetException.Message);
            }

            _gateway.SetExtractionOptionsState(true);
            ResetProgress();
        }