public XboxTransferWorker(IXboxGameRepositoryFactory xboxGameRepositoryFactory, string gameName,
                           BlockingCollection <IXboxTransferRequest> requests, BlockingCollection <IXboxTransferRequest> finishedRequests, IProgressNotifier notifier) : base(xboxGameRepositoryFactory, gameName)
 {
     _requests         = requests ?? throw new ArgumentNullException(nameof(requests));
     _finishedRequests = finishedRequests;
     _notifier         = notifier;
 }
 public XboxTransferProgressWorker(IXboxGameRepositoryFactory xboxGameRepositoryFactory, string gameName,
                                   IProgressNotifier notifier, BlockingCollection <IXboxTransferRequest> finishedRequests, long totalBytesToUpload, long totalBytesAlreadyUploaded)
 {
     _gameName                  = gameName;
     _notifier                  = notifier;
     _finishedRequests          = finishedRequests;
     _totalBytesToUpload        = totalBytesToUpload;
     _totalBytesAlreadyUploaded = totalBytesAlreadyUploaded;
 }
 public UploadArchivesUseCase(IXboxGameRepositoryFactory xboxGameRepositoryFactory,
                              IProgressNotifier notifier, IZipFileProcessor zipFileProcessor)
 {
     _xboxGameRepositoryFactory = xboxGameRepositoryFactory;
     _notifier                    = notifier;
     _zipFileProcessor            = zipFileProcessor;
     _xboxFtpRequests             = new BlockingCollection <IXboxTransferRequest>();
     _xboxDirectoryCreateRequests = new BlockingCollection <XboxDirectoryCreateRequest>();
 }
 public XboxDirectoryStructureWorker(IXboxGameRepositoryFactory xboxGameRepositoryFactory, string gameName, BlockingCollection <XboxDirectoryCreateRequest> requests) : base(xboxGameRepositoryFactory, gameName)
 {
     _requests = requests ?? throw new ArgumentNullException(nameof(requests));
 }
예제 #5
0
        static void Main(string[] args)
        {
            SettingsLoaderIni settingsLoader = new SettingsLoaderIni(args);
            var    settings      = settingsLoader.Load();
            string correlationId = Guid.NewGuid().ToString();

            Log.Logger = SerilogConfiguration.Create("XboxFtpUpload", settings, correlationId).CreateLogger();

            Log.Information("Starting XBox FTP Upload");

            SerilogProgressNotifier serilogNotifier = new SerilogProgressNotifier(Log.Logger);
            TerminalGuiAdapter      adapter         = new TerminalGuiAdapter();

            adapter.Initialize();

            TerminalGuiProgressNotifier terminalGuiProgressNotifier = adapter.CreateNotifier();

            IProgressNotifier notifier = new ChainedProgressNotifier(new List <IProgressNotifier>()
            {
                terminalGuiProgressNotifier, serilogNotifier
            });

            try
            {
                IXboxGameRepositoryFactory xboxGameRepositoryFactory = null;

                if (settings.TestMode)
                {
                    xboxGameRepositoryFactory = UseInMemoryAdapter();
                }
                else
                {
                    FtpXboxSettings xboxFtpsettings = new FtpXboxSettings()
                    {
                        Host              = settings.Host,
                        Password          = settings.Password,
                        User              = settings.User,
                        Port              = settings.Port,
                        GameRootDirectory = settings.GameRootDirectory
                    };

                    xboxGameRepositoryFactory = UseFtpAdapter(xboxFtpsettings);
                }

                UploadArchivesUseCase useCase = new UploadArchivesUseCase(xboxGameRepositoryFactory, notifier, new ZipFileProcessor());

                List <string> gamesToUpload = new List <string>();

                if (!string.IsNullOrWhiteSpace(settings.GameToUpload))
                {
                    Log.Warning("Found single games for upload specified");
                    gamesToUpload.Add(settings.GameToUpload);
                }
                else if (!string.IsNullOrWhiteSpace(settings.GamesToUploadFile))
                {
                    if (!File.Exists(settings.GamesToUploadFile))
                    {
                        Log.Warning("File specified in GameToUploadFile does not exist");
                        adapter.Shutdown();
                        Environment.Exit(-1);
                    }

                    gamesToUpload = File.ReadAllLines(settings.GamesToUploadFile).Select(x => RemoveSurroundingQuotes(x))
                                    .ToList();
                }
                else if (settings.GamesToUpload == null || settings.GamesToUpload.Count == 0)
                {
                    Log.Warning("Found no games configured to upload");
                    adapter.Shutdown();
                    Environment.Exit(0);
                }
                else
                {
                    gamesToUpload = settings.GamesToUpload;
                }

                useCase.Execute(gamesToUpload);
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Unhandled exception occured");
                adapter.Shutdown();
                Environment.Exit(-1);
            }

            Log.Information("Finished XBox FTP Upload");
            adapter.Shutdown();
            Environment.Exit(0);
        }
예제 #6
0
 public XboxWorkerBase(IXboxGameRepositoryFactory xboxGameRepositoryFactory, string gameName)
 {
     XboxGameRepositoryFactory = xboxGameRepositoryFactory ?? throw new ArgumentNullException(nameof(xboxGameRepositoryFactory));
     GameName = gameName ?? throw new ArgumentNullException(nameof(gameName));
 }