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); }
public CoverController(ICoverService coverService, IFileSystem fileSystem, IHeaderSettings headerSettings) : base(fileSystem) { _coverService = coverService ?? throw new ArgumentNullException(nameof(coverService)); _headerSettings = headerSettings ?? throw new ArgumentException(nameof(headerSettings)); }
public EditionController(IEditionService editionService, IFileSystem fileSystem, IHeaderSettings headerSettings) : base(fileSystem) { _editionService = editionService ?? throw new ArgumentNullException(nameof(editionService)); _headerSettings = headerSettings ?? throw new ArgumentNullException(nameof(headerSettings)); }
public BookController(IBookService bookService, IHeaderSettings headerSettings) { _bookService = bookService ?? throw new ArgumentNullException(nameof(bookService)); _headerSettings = headerSettings ?? throw new ArgumentException(nameof(headerSettings)); }
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 }); } }