Пример #1
0
        public FileService(IFileProcessorFactory fileProcessorFactory, IConfigurationManager configurationManager)
        {
            _fileProcessorFactory = fileProcessorFactory;
            _configurationManager = configurationManager;

            ROOT_FOLDER_PATH = configurationManager.GetRootFolderPath();
        }
Пример #2
0
 public FilesExtensionConfigProvider(IOptions <FilesOptions> options, ILoggerFactory loggerFactory, IFileProcessorFactory fileProcessorFactory, INameResolver nameResolver)
 {
     _options              = options;
     _loggerFactory        = loggerFactory;
     _fileProcessorFactory = fileProcessorFactory;
     _nameResolver         = nameResolver;
 }
        private IFileService CreateFileService(string rootFolderPath, IFileProcessorFactory fileProcessorFactory)
        {
            var configManager = new Mock <IConfigurationManager>();

            configManager.Setup(x => x.GetRootFolderPath()).Returns(rootFolderPath);

            return(new FileService(fileProcessorFactory, configManager.Object));
        }
Пример #4
0
 public TaskProcessor(List <IOption> options, IFileProcessorFactory processorFactory) : base(options)
 {
     _processorFactory = processorFactory;
     if (!ReadOptions(options))
     {
         throw new ArgumentException($"Provided options are invalid, check command line");
     }
 }
Пример #5
0
 public FileTriggerBinding(IOptions <FilesOptions> options, ParameterInfo parameter, ILogger logger, IFileProcessorFactory fileProcessorFactory)
 {
     _options              = options;
     _parameter            = parameter;
     _logger               = logger;
     _fileProcessorFactory = fileProcessorFactory;
     _attribute            = parameter.GetCustomAttribute <FileTriggerAttribute>(inherit: false);
     _bindingDataProvider  = BindingDataProvider.FromTemplate(_attribute.Path);
     _bindingContract      = CreateBindingContract();
 }
Пример #6
0
        public FileListener(IOptions <FilesOptions> options, FileTriggerAttribute attribute, ITriggeredFunctionExecutor triggerExecutor, ILogger logger, IFileProcessorFactory fileProcessorFactory)
        {
            _options              = options ?? throw new ArgumentNullException(nameof(options));
            _attribute            = attribute ?? throw new ArgumentNullException(nameof(attribute));
            _triggerExecutor      = triggerExecutor ?? throw new ArgumentNullException(nameof(triggerExecutor));
            _logger               = logger ?? throw new ArgumentNullException(nameof(logger));
            _fileProcessorFactory = fileProcessorFactory ?? throw new ArgumentNullException(nameof(fileProcessorFactory));

            _cancellationTokenSource = new CancellationTokenSource();

            if (string.IsNullOrEmpty(_options.Value.RootPath) || !Directory.Exists(_options.Value.RootPath))
            {
                throw new InvalidOperationException(string.Format("Path '{0}' is invalid. FilesConfiguration.RootPath must be set to a valid directory location.", _options.Value.RootPath));
            }

            _watchPath = Path.Combine(_options.Value.RootPath, _attribute.GetRootPath());
        }
 public AccountTransactionViewModel(IFileProcessorFactory processorFactory, IViewThreadExecutor viewThreadExecutor, IDataService dataService, IAccTransactionValidator validator)
 {
     var processorTable = processorFactory.ProcessorNames.ToDictionary(x => x, x => processorFactory.GetFileProcessor(x));
     var details = processorFactory
         .ProcessorNames
         .Select(x =>
         {
             var fileProcessor = processorFactory.GetFileProcessor(x);
             var allFileDetails = fileProcessor.GetAllFileNames()
             .Select(fileName => new FileDetailViewModel(fileName, dataService, viewThreadExecutor, fileProcessor, validator))
             .ToArray();
             return new ProcessorDetails(x, allFileDetails);
         }).ToList();
     ProcessorDetails = new ListCollectionView(details);
     if(details.Count > 0)
         ProcessorDetails.MoveCurrentToPosition(0);
 }
Пример #8
0
 public FileTriggerAttributeBindingProvider(IOptions <FilesOptions> options, ILoggerFactory loggerFactory, IFileProcessorFactory fileProcessorFactory)
 {
     _options = options ?? throw new ArgumentNullException(nameof(options));
     _logger  = loggerFactory?.CreateLogger(LogCategories.CreateTriggerCategory("File"));
     _fileProcessorFactory = fileProcessorFactory ?? throw new ArgumentNullException(nameof(fileProcessorFactory));
 }
 public static void TestFixtureSetup(TestContext context)
 {
     _factory = new FileProcessorFactory();
 }
Пример #10
0
        public static async Task GeneratePreviewAsync(
            [QueueTrigger("generate-blob-preview-v2")] string id, int dequeueCount,
            [Blob("spitball-files/files/{QueueTrigger}")] CloudBlobDirectory directory,
            [Inject] IFileProcessorFactory factory,
            [Inject] IStatelessSession session,
            IBinder binder,
            ILogger log,
            CancellationToken token)
        {
            log.LogInformation($"receive preview for {id}");
            if (dequeueCount > 2)
            {
                log.LogInformation($"try to process more then 2 times");

                return;
            }
            var segment = await directory.ListBlobsSegmentedAsync(null);

            var originalBlob = (CloudBlockBlob)segment.Results.FirstOrDefault(f2 => f2.Uri.Segments.Last().StartsWith("file-"));

            if (originalBlob == null)
            {
                return;
            }

            var processor = factory.GetProcessor(originalBlob);

            if (processor is null)
            {
                log.LogError($"did not process id:{id}");
                return;
            }

            try
            {
                await processor.ProcessFileAsync(long.Parse(id), originalBlob, binder, log, token);
            }
            catch (Cloudmersive.APIClient.NETCore.DocumentAndDataConvert.Client.ApiException ex)
            {
                if (ex.Message.Contains("virus"))
                {
                    await session.Query <Core.Entities.Document>().Where(w => w.Id == long.Parse(id))
                    .UpdateBuilder()
                    .Set(c => c.Status.State, x => ItemState.Deleted)
                    .Set(c => c.Status.DeletedOn, x => DateTime.UtcNow)
                    .Set(c => c.Status.FlagReason, x => "Virus")
                    .UpdateAsync(token);

                    foreach (var item in segment.Results.OfType <CloudBlockBlob>())
                    {
                        await item.DeleteAsync(DeleteSnapshotsOption.IncludeSnapshots, AccessCondition.GenerateEmptyCondition(), new BlobRequestOptions(), new OperationContext(), token);
                    }
                }

                originalBlob.Metadata["ErrorProcessCloudmersive"] = ex.Message;
                await originalBlob.SetMetadataAsync();
            }
            catch (Exception ex)
            {
                originalBlob.Metadata["error"] = ex.Message;
                await originalBlob.SetMetadataAsync();

                throw;
            }

            log.LogInformation("C# Blob trigger function Processed");
        }
 public FilesExtensionConfigProvider(IOptions <FilesOptions> options, ILoggerFactory loggerFactory, IFileProcessorFactory fileProcessorFactory)
 {
     _options              = options;
     _loggerFactory        = loggerFactory;
     _fileProcessorFactory = fileProcessorFactory;
 }
Пример #12
0
 public HomeController(IFileProcessorFactory fileProcessorFactory)
 {
     _fileProcessorFactory = fileProcessorFactory;
 }