コード例 #1
0
ファイル: Utils.cs プロジェクト: shuttre/api.shutt.re
        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);
        }
コード例 #2
0
        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());
        }