public async Task <IActionResult> Open(OpenAddressModel model) { var site = await _siteRepo.GetSiteByName(model.SiteName); if (site == null) { return(NotFound()); } if (!site.OpenToDownload) { _tokenEnsurer.Ensure(model.PBToken, "Download", model.SiteName, model.FolderNames); } var(folders, fileName) = _folderSplitter.SplitToFoldersAndFile(model.FolderNames); try { var siteRoot = await _folderRepo.GetFolderFromId(site.RootFolderId); var folder = await _folderRepo.GetFolderFromPath(folders, siteRoot, false); if (folder == null) { return(NotFound()); } var file = await _fileRepo.GetFileInFolder(folder, fileName); if (file == null) { return(NotFound()); } var path = _storageProvider.GetFilePath(file.HardwareId); var extension = _storageProvider.GetExtension(file.FileName); if (ControllerContext.ActionDescriptor.AttributeRouteInfo.Name == "File") { return(this.WebFile(path, "do-not-open")); } else if (ControllerContext.ActionDescriptor.AttributeRouteInfo.Name == "Video") { return(VideoPlayerWithFile( probeLocator.GetProbeOpenAddress(model.SiteName, folders, fileName), model.PBToken, fileName)); } else if (file.FileName.IsStaticImage() && Image.DetectFormat(path) != null) { return(await FileWithImageCompressor(path, extension)); } else { return(this.WebFile(path, extension)); } } catch (AiurAPIModelException e) when(e.Code == ErrorType.NotFound) { return(NotFound()); } }
public async Task <IActionResult> Open(OpenAddressModel model) { var site = await _dbContext .Sites .Include(t => t.Root) .SingleOrDefaultAsync(t => t.SiteName.ToLower() == model.SiteName); if (site == null) { return(NotFound()); } if (!site.OpenToDownload) { _tokenEnsurer.Ensure(model.PBToken, "Download", model.SiteName, model.FolderNames); } var(folders, fileName) = _folderLocator.SplitToFoldersAndFile(model.FolderNames); try { var folder = await _folderLocator.LocateAsync(folders, site.Root, false); if (folder == null) { return(NotFound()); } var file = folder.Files.SingleOrDefault(t => t.FileName == fileName); if (file == null) { return(NotFound()); } var path = _storageProvider.GetFilePath(file.HardwareId); var extension = _storageProvider.GetExtension(file.FileName); if (ControllerContext.ActionDescriptor.AttributeRouteInfo.Name == "File") { return(this.WebFile(path, "do-not-open")); } else if (file.FileName.IsStaticImage() && Image.DetectFormat(path) != null) { return(await FileWithImageCompressor(path, extension)); } else { return(this.WebFile(path, extension)); } } catch (AiurAPIModelException e) when(e.Code == ErrorType.NotFound) { return(NotFound()); } }
public async Task <IActionResult> Open(OpenAddressModel model) { var site = await _dbContext .Sites .Include(t => t.Root) .Include(t => t.Root.SubFolders) .Include(t => t.Root.Files) .SingleOrDefaultAsync(t => t.SiteName.ToLower() == model.SiteName); if (site == null) { return(NotFound()); } var(folders, fileName) = _folderLocator.SplitToPath(model.FolderNames); try { var folder = await _folderLocator.LocateAsync(folders, site.Root, false); var file = folder.Files.SingleOrDefault(t => t.FileName == fileName); if (file == null) { return(NotFound()); } var path = _configuration["StoragePath"] + $"{_}Storage{_}{file.Id}.dat"; var extension = Path.GetExtension(file.FileName).TrimStart('.').ToLower(); if (ControllerContext.ActionDescriptor.AttributeRouteInfo.Name == "File") { return(this.WebFile(path, "do-not-open")); } if (file.FileName.IsStaticImage() && Image.DetectFormat(path) != null) { return(await this.FileWithImageCompressor(path, extension)); } else { return(this.WebFile(path, extension)); } } catch (AiurAPIModelException e) when(e.Code == ErrorType.NotFound) { return(NotFound()); } }