public async Task <ActionResult <List <QueuedImage> > > AddToAlbum([FromBody] List <QueuedImage> queuedImages) { var userId = PhotoDatabaseHelper.GetUserId(User); if (userId == null) { return(Unauthorized()); } foreach (var queuedImage in queuedImages) { queuedImage.Status = 0; var fileToQueue = await Utils.GetFileStreamAndContentType(_pdb, userId.GetValueOrDefault(), queuedImage.Path); // ReSharper disable once InvertIf if (fileToQueue == null) { queuedImage.Status = 4; queuedImage.StatusMsg = "File not found"; } } var queuedImagesResult = (await _pdb.AddImagesToQueue(userId.GetValueOrDefault(), queuedImages)); if (queuedImagesResult != null) { return(queuedImagesResult); } return(new NotFoundResult()); }
public async Task <ActionResult> GetImage(ulong albumId, ulong imageId, [FromQuery] string size = "metadata") { var userId = PhotoDatabaseHelper.GetUserId(User); if (userId == null) { return(Unauthorized()); } var validSizeValues = new[] { "metadata", "icon", "small", "medium", "large", "fullsize", "original" }; if (!validSizeValues.Contains(size)) { return(new BadRequestResult()); } var image = await _pdb.GetImageByUserIdAlbumIdAndImageId(userId.GetValueOrDefault(), albumId, imageId); if (image == null) { return(new NoContentResult()); } if (size == "metadata") { return(new OkObjectResult(image.GetPublic())); } try { var albumImageFile = image.ImageFiles.GetImageFile(size); if (albumImageFile == null) { return(new NoContentResult()); } var x = new FileStream(_imageHelper.GetFullPath(albumImageFile.Path), FileMode.Open); if (!x.CanRead) { return(new NotFoundResult()); } var fileExt = Path.GetExtension(albumImageFile.Path); var virtualFilename = $"image_{albumId}_{imageId}_{size}{fileExt}"; Response.Headers.Add("X-Width", albumImageFile.Width.ToString()); Response.Headers.Add("X-Height", albumImageFile.Height.ToString()); return(File(x, albumImageFile.MimeType, virtualFilename)); } catch { return(new NotFoundResult()); } }
public async Task <ActionResult> GetFile([FromQuery] string path) { var userId = PhotoDatabaseHelper.GetUserId(User); if (userId == null) { return(Unauthorized()); } var fileContent = await Utils.GetFileStreamAndContentType(_pdb, userId.GetValueOrDefault(), path); if (fileContent?.Item1 == null || fileContent.Item2 == null) { return(new NotFoundResult()); } return(File(fileContent.Item1, fileContent.Item2)); }
public async Task <ActionResult <List <string> > > GetSources() { var userId = PhotoDatabaseHelper.GetUserId(User); if (userId == null) { return(Unauthorized()); } var sources = (await _pdb.GetImageSourcesForUser(userId.GetValueOrDefault()))?.AsList(); if (sources != null && sources.Count > 0) { return(sources.Select(x => x.SourceName).ToList()); } return(new NoContentResult()); }
public async Task <ActionResult <List <QueuedImage> > > GetQueue() { var userId = PhotoDatabaseHelper.GetUserId(User); if (userId == null) { return(Unauthorized()); } var queuedImages = (await _pdb.GetImageQueueForUser(userId.GetValueOrDefault())); if (queuedImages != null) { return(queuedImages.AsList()); } return(new NotFoundResult()); }
public async Task <ActionResult <List <Album> > > GetReadable(string level) { AlbumAccessLevel accessLevel; switch (level) { case "admin": accessLevel = AlbumAccessLevel.Admin; break; case "write": accessLevel = AlbumAccessLevel.Write; break; case "share": accessLevel = AlbumAccessLevel.Share; break; case "read": case "": case null: accessLevel = AlbumAccessLevel.Read; break; default: return(new NotFoundResult()); } var userId = PhotoDatabaseHelper.GetUserId(User); if (userId == null) { return(Unauthorized()); } var albums = (await _pdb.GetAlbumsAccessibleByUser(userId.GetValueOrDefault(), accessLevel))?.AsList(); if (albums != null && albums.Count > 0) { return(albums); } return(new NoContentResult()); }
public async Task <ActionResult <List <AlbumImage.Public> > > ListImages(ulong albumId) { var userId = PhotoDatabaseHelper.GetUserId(User); if (userId == null) { return(Unauthorized()); } var images = (await _pdb.GetImagesInAlbumByUserIdAndAlbumId(userId.GetValueOrDefault(), albumId)).AsList(); if (images != null && images.Count > 0) { return(images.Select(x => x.GetPublic()).ToList()); } return(new NoContentResult()); }
public async Task <ActionResult <Album> > PostNewAlbum([FromBody] Album newAlbum) { var userId = PhotoDatabaseHelper.GetUserId(User); if (userId == null) { return(Unauthorized()); } var createdAlbum = await _pdb.CreateNewAlbum(userId.GetValueOrDefault(), newAlbum.AlbumName); if (createdAlbum != null) { return(createdAlbum); } else { return(new BadRequestResult()); } }
public async Task <ActionResult <List <string> > > GetDirectory([FromQuery] string path) { var userId = PhotoDatabaseHelper.GetUserId(User); if (userId == null) { return(Unauthorized()); } var dirContent = await Utils.GetDirectoryContent(_pdb, userId.GetValueOrDefault(), path); if (dirContent == null) { return(new NotFoundResult()); } if (dirContent.Count == 0) { return(new NoContentResult()); } return(dirContent); }
public async Task <ActionResult <List <AlbumAccess> > > GetAccessList(ulong albumId) { var userId = PhotoDatabaseHelper.GetUserId(User); if (userId == null) { return(Unauthorized()); } var accessList = (await _pdb.GetAlbumAccessByUserIdAndAlbumId( userId.GetValueOrDefault(), albumId) )?.AsList(); if (accessList != null && accessList.Count > 0) { return(accessList); } return(new NoContentResult()); }