public async Task <IHttpActionResult> GetFileHead(string id) { await _log.LogVerbose(WebApiConfig.LogSourceFiles, $"HEAD:{id}, Getting file head"); Models.File file; try { var fileId = Models.File.ConvertToStoreId(id); file = await _filesRepo.GetFileHead(fileId); if (file == null && _fileStreamRepo.FileExists(fileId)) { // if the file is not found in the FileStore check the // legacy database for the file await _log.LogVerbose(WebApiConfig.LogSourceFiles, $"HEAD:{id}, Getting file head in filestream (legacy)"); file = _fileStreamRepo.GetFileHead(fileId); } if (file == null) { // the file was not found in either FileStore or legacy database return(NotFound()); } var response = Request.CreateResponse(HttpStatusCode.OK); response.Content = new ByteArrayContent(Encoding.UTF8.GetBytes("0")); // return file info in headers response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue(Attachment) { FileName = file.FileName }; response.Content.Headers.ContentType = new MediaTypeHeaderValue(file.ContentType); response.Content.Headers.ContentLength = file.FileSize; SetHeaderContent(response, file); return(ResponseMessage(response)); } catch (FormatException ex) { await _log.LogError(WebApiConfig.LogSourceFiles, new Exception($"HEAD:{id}, bad request", ex)); return(BadRequest()); } catch (Exception ex) { await _log.LogError(WebApiConfig.LogSourceFiles, new Exception($"HEAD:{id}, Exception:{ex.Message}", ex)); return(InternalServerError()); } }
public void Initialize(IFileStreamRepository fsr, IConfigRepository config, Guid fileId) { ThrowIf.ArgumentNull(fsr, nameof(fsr)); ThrowIf.ArgumentNull(config, nameof(config)); _filesRepository = fsr; _configRepository = config; _file = _filesRepository.GetFileHead(fileId); if (_file == null) { throw new InvalidOperationException( I18NHelper.FormatInvariant("Fatal. File '{0}' not found in legacy database", fileId)); } }