Пример #1
0
 /// <summary>
 /// Creates a new instance
 /// </summary>
 /// <param name="folderPath">Folder path to the blob</param>
 /// <param name="name">Name of the blob withing a specific folder.</param>
 /// <param name="kind">Blob kind (file or folder)</param>
 public Blob(string folderPath, string name, BlobItemKind kind)
 {
     Name       = name ?? throw new ArgumentNullException(nameof(name));
     Name       = StoragePath.NormalizePart(Name);
     FolderPath = StoragePath.Normalize(folderPath);
     Kind       = kind;
 }
Пример #2
0
        /// <summary>
        /// Create a new instance
        /// </summary>
        /// <param name="fullPath"></param>
        /// <param name="kind"></param>
        public Blob(string fullPath, BlobItemKind kind = BlobItemKind.File)
        {
            string path = StoragePath.Normalize(fullPath);

            string[] parts = StoragePath.Split(path);

            Name       = parts.Last();
            FolderPath = StoragePath.GetParent(path);

            Kind = kind;
        }
        private BlobId ToBlobItem(string fullPath, BlobItemKind kind)
        {
            string id = Path.GetFileName(fullPath);

            fullPath = fullPath.Substring(_directory.FullName.Length);
            fullPath = fullPath.Replace(Path.DirectorySeparatorChar, StoragePath.PathSeparator);
            fullPath = fullPath.Trim(StoragePath.PathSeparator);
            fullPath = StoragePath.PathStrSeparator + fullPath;

            return(new BlobId(fullPath, kind));
        }
Пример #4
0
        /// <summary>
        /// Create a new instance
        /// </summary>
        /// <param name="fullId"></param>
        /// <param name="kind"></param>
        public BlobId(string fullId, BlobItemKind kind = BlobItemKind.File)
        {
            string path = StoragePath.Normalize(fullId);

            string[] parts = StoragePath.Split(path);

            Id         = parts.Last();
            FolderPath = parts.Length > 1
            ? StoragePath.Combine(parts.Take(parts.Length - 1))
            : StoragePath.PathStrSeparator;

            Kind = kind;
        }
        private BlobId ToBlobItem(string fullPath, BlobItemKind kind, bool includeMeta)
        {
            fullPath = fullPath.Substring(_directory.FullName.Length);
            fullPath = fullPath.Replace(Path.DirectorySeparatorChar, StoragePath.PathSeparator);
            fullPath = fullPath.Trim(StoragePath.PathSeparator);
            fullPath = StoragePath.PathStrSeparator + fullPath;

            var blobId = new BlobId(fullPath, kind);

            if (includeMeta)
            {
                blobId.Meta = BlobMetaFromId(blobId.FullPath);
            }

            return(blobId);
        }
Пример #6
0
        private Blob ToBlobItem(string fullPath, BlobItemKind kind, bool includeMeta)
        {
            fullPath = fullPath.Substring(_directoryFullName.Length);
            fullPath = fullPath.Replace(Path.DirectorySeparatorChar, StoragePath.PathSeparator);
            fullPath = fullPath.Trim(StoragePath.PathSeparator);
            fullPath = StoragePath.PathSeparatorString + fullPath;

            var blobId = new Blob(fullPath, kind);

            if (includeMeta)
            {
                EnrichWithMetadata(blobId);
            }

            return(blobId);
        }
Пример #7
0
        private Blob ToBlobItem(string fullPath, BlobItemKind kind, bool includeMeta)
        {
            string relPath = fullPath.Substring(_directoryFullName.Length);

            relPath = relPath.Replace(Path.DirectorySeparatorChar, StoragePath.PathSeparator);
            relPath = relPath.Trim(StoragePath.PathSeparator);
            relPath = StoragePath.PathSeparatorString + relPath;

            if (kind == BlobItemKind.File)
            {
                var fi = new FileInfo(fullPath);

                var blob = new Blob(relPath, kind);
                blob.Size = fi.Length;
                blob.LastModificationTime = fi.CreationTimeUtc;
                blob.TryAddProperties(
                    "IsReadOnly", fi.IsReadOnly.ToString(),
                    "LastAccessTimeUtc", fi.LastAccessTimeUtc.ToString(),
                    "LastWriteTimeUtc", fi.LastWriteTimeUtc.ToString(),
                    "Attributes", FormatFlags(fi.Attributes));

                if (includeMeta)
                {
                    EnrichWithMetadata(blob);
                }

                return(blob);
            }
            else
            {
                var di = new DirectoryInfo(fullPath);

                var blob = new Blob(relPath, BlobItemKind.Folder);
                blob.LastModificationTime = di.CreationTimeUtc;
                blob.TryAddProperties(
                    "LastAccessTimeUtc", di.LastAccessTimeUtc.ToString(),
                    "LastWriteTimeUtc", di.LastWriteTimeUtc.ToString(),
                    "Attributes", FormatFlags(di.Attributes));

                if (includeMeta)
                {
                    EnrichWithMetadata(blob);
                }

                return(blob);
            }
        }
Пример #8
0
        private Blob ToBlobItem(string fullPath, BlobItemKind kind, bool includeMeta)
        {
            fullPath = fullPath.Substring(_directoryFullName.Length);
            fullPath = fullPath.Replace(Path.DirectorySeparatorChar, StoragePath.PathSeparator);
            fullPath = fullPath.Trim(StoragePath.PathSeparator);
            fullPath = StoragePath.PathSeparatorString + fullPath;

            var blob = new Blob(fullPath, kind);

            var fi = new FileInfo(fullPath);

            blob.TryAddProperties(
                "IsReadOnly", fi.IsReadOnly.ToString(),
                "LastAccessTimeUtc", fi.LastAccessTimeUtc.ToString(),
                "LastWriteTimeUtc", fi.LastWriteTimeUtc.ToString(),
                "Attributes", fi.Attributes.ToString());

            if (includeMeta)
            {
                EnrichWithMetadata(blob);
            }

            return(blob);
        }
Пример #9
0
        /// <summary>
        /// Create a new instance
        /// </summary>
        /// <param name="fullPath"></param>
        /// <param name="kind"></param>
        public Blob(string fullPath, BlobItemKind kind = BlobItemKind.File)
        {
            SetFullPath(fullPath);

            Kind = kind;
        }
Пример #10
0
 /// <summary>
 /// Creates a new instance
 /// </summary>
 /// <param name="folderPath"></param>
 /// <param name="id"></param>
 /// <param name="kind"></param>
 public BlobId(string folderPath, string id, BlobItemKind kind)
 {
     Id         = id ?? throw new ArgumentNullException(nameof(id));
     FolderPath = folderPath;
     Kind       = kind;
 }
Пример #11
0
 /// <summary>
 /// Creates a new instance
 /// </summary>
 /// <param name="folderPath">Folder path to the blob</param>
 /// <param name="name">Name of the blob withing a specific folder.</param>
 /// <param name="kind">Blob kind (file or folder)</param>
 public Blob(string folderPath, string name, BlobItemKind kind)
 {
     Name       = name ?? throw new ArgumentNullException(nameof(name));
     FolderPath = folderPath;
     Kind       = kind;
 }