public static async Task <string> GetRealPath( IPhotoDatabase pdb, ulong userId, string encodedPath) { var path = Base64Decode(encodedPath); var sourceName = path.Substring(1).Split("/").FirstOrDefault(); if (string.IsNullOrEmpty(sourceName)) { return(null); } var imageSourcesForUser = await pdb.GetImageSourcesForUser(userId); var source = imageSourcesForUser?.FirstOrDefault(x => x.SourceName == sourceName); if (source == null) { return(null); } var absoluteVirtualPath = Path.GetFullPath(Path.DirectorySeparatorChar + path); if (!absoluteVirtualPath.StartsWith(source.SourceNameAbsolute)) { return(null); } var realPath = $"/{source.Path}/" + absoluteVirtualPath.Substring(source.SourceName.Length + 2); realPath = Path.GetFullPath(realPath); return(realPath); }
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()); }