Ejemplo n.º 1
0
        public static string RetrieveHeader(this HttpRequest request,
                                            string header,
                                            IHeaderSettings settings)
        {
            if (request.Headers.TryGetValue(header, out StringValues headerValues))
            {
                var headersList = headerValues.ToList();

                if (headersList.Count != 1)
                {
                    return(null);
                }

                var headerValue = headersList.FirstOrDefault();

                if (!settings.AcceptableValuesForHeader[header].Contains(headerValue?.ToLower()))
                {
                    return(null);
                }

                return(headerValue);
            }

            return(null);
        }
Ejemplo n.º 2
0
 public CoverController(ICoverService coverService,
                        IFileSystem fileSystem,
                        IHeaderSettings headerSettings) : base(fileSystem)
 {
     _coverService   = coverService ?? throw new ArgumentNullException(nameof(coverService));
     _headerSettings = headerSettings ?? throw new ArgumentException(nameof(headerSettings));
 }
Ejemplo n.º 3
0
 public EditionController(IEditionService editionService, IFileSystem fileSystem, IHeaderSettings headerSettings) : base(fileSystem)
 {
     _editionService = editionService ?? throw new ArgumentNullException(nameof(editionService));
     _headerSettings = headerSettings ?? throw new ArgumentNullException(nameof(headerSettings));
 }
Ejemplo n.º 4
0
 public BookController(IBookService bookService, IHeaderSettings headerSettings)
 {
     _bookService    = bookService ?? throw new ArgumentNullException(nameof(bookService));
     _headerSettings = headerSettings ?? throw new ArgumentException(nameof(headerSettings));
 }
Ejemplo n.º 5
0
        protected virtual async Task <HttpResponseMessage> BaseTextRecognitionUpload <TData>(List <IFormFile> imageFiles,
                                                                                             Func <ImageModel, Task <TData> > strategy,
                                                                                             StorageSettings storageSettings,
                                                                                             IHeaderSettings headerSettings)
            where TData : IRecognizable
        {
            if (Request.GetMultipartBoundary() == null)
            {
                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.UnsupportedMediaType
                });
            }

            var languageToProccess = Request.RetrieveHeader("Target-Language", headerSettings);

            if (languageToProccess == null)
            {
                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.BadRequest, ReasonPhrase = "Specify appropriate target language."
                });
            }

            var    clientFolderId      = Guid.NewGuid();
            string currentProviderPath = _fileSystem.Path.Combine(storageSettings.StoragePath, clientFolderId.ToString());

            _fileSystem.Directory.CreateDirectory(currentProviderPath);

            try
            {
                List <string> files     = new List <string>();
                var           dataTasks = new List <Task <TData> >();

                foreach (var formFile in imageFiles)
                {
                    if (formFile.Length > 0)
                    {
                        using (var stream = new FileStream(_fileSystem.Path.Combine(currentProviderPath, formFile.FileName), FileMode.Create))
                        {
                            await formFile.CopyToAsync(stream);
                        }
                    }

                    files.Add(_fileSystem.Path.GetFileName(formFile.FileName));

                    var imageToSave = new ImageModel
                    {
                        Path           = _fileSystem.Path.Combine(currentProviderPath, formFile.FileName),
                        TargetLanguage = languageToProccess
                    };

                    dataTasks.Add(strategy.Invoke(imageToSave));
                }

                var results = await Task.WhenAll(dataTasks);

                _fileSystem.Directory.Delete(currentProviderPath);

                var resultingDict = Enumerable.Range(0, results.Length).ToDictionary(i => files[i], i => results[i].RawData);

                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.OK, Content = new StringContent(resultingDict.GetString())
                });
            }
            catch (Exception e)
            {
                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.InternalServerError, ReasonPhrase = e.Message
                });
            }
        }