Esempio n. 1
0
        /// <summary>
        /// Manage share metadata
        /// </summary>
        /// <param name="cloudFileClient"></param>
        /// <returns></returns>
        private static async Task DirectoryMetadataSample(CloudFileClient cloudFileClient)
        {
            Console.WriteLine();
            // Create the share name -- use a guid in the name so it's unique.
            string         shareName = "demotest-" + Guid.NewGuid();
            CloudFileShare share     = cloudFileClient.GetShareReference(shareName);

            try
            {
                // Create share
                Console.WriteLine("Create Share");
                await share.CreateIfNotExistsAsync();

                CloudFileDirectory rootDirectory = share.GetRootDirectoryReference();

                // Create directory
                Console.WriteLine("Create directory");
                await rootDirectory.CreateIfNotExistsAsync();

                // Set directory metadata
                Console.WriteLine("Set directory metadata");
                rootDirectory.Metadata.Add("key1", "value1");
                rootDirectory.Metadata.Add("key2", "value2");
                await rootDirectory.SetMetadataAsync();

                // Fetch directory attributes
                // in this case this call is not need but is included for demo purposes
                await rootDirectory.FetchAttributesAsync();

                Console.WriteLine("Get directory metadata:");
                foreach (var keyValue in rootDirectory.Metadata)
                {
                    Console.WriteLine("    {0}: {1}", keyValue.Key, keyValue.Value);
                }
                Console.WriteLine();
            }
            catch (StorageException exStorage)
            {
                Common.WriteException(exStorage);
                Console.WriteLine(
                    "Please make sure your storage account is specified correctly in the app.config - then restart the sample.");
                Console.WriteLine("Press any key to exit");
                Console.ReadLine();
                throw;
            }
            catch (Exception ex)
            {
                Console.WriteLine("    Exception thrown creating share.");
                Common.WriteException(ex);
                throw;
            }
            finally
            {
                // Delete share
                Console.WriteLine("Delete share");
                share.DeleteIfExists();
            }
        }
Esempio n. 2
0
        public async override Task FetchPropertiesAsync()
        {
            await _dir.FetchAttributesAsync();

            Properties = new Dictionary <string, object>()
            {
                ["ETag"] = _dir.Properties.ETag,                           //          Gets the file's ETag value.
                ["IsServerEncrypted"] = _dir.Properties.IsServerEncrypted, //          Gets the file's server-side encryption state.
                ["LastModified"]      = _dir.Properties.LastModified       //          Gets the the last - modified time for the file, expressed as a UTC value.
            };
        }
Esempio n. 3
0
        /// <summary>
        /// Get directory properties
        /// </summary>
        /// <param name="cloudFileClient"></param>
        /// <returns></returns>
        private static async Task DirectoryPropertiesSample(CloudFileClient cloudFileClient)
        {
            Console.WriteLine();
            // Create the share name -- use a guid in the name so it's unique.
            string         shareName = "demotest-" + Guid.NewGuid();
            CloudFileShare share     = cloudFileClient.GetShareReference(shareName);

            try
            {
                // Create share
                Console.WriteLine("Create Share");
                await share.CreateIfNotExistsAsync();

                // Create directory
                Console.WriteLine("Create directory");
                CloudFileDirectory rootDirectory = share.GetRootDirectoryReference();
                await rootDirectory.CreateIfNotExistsAsync();

                // Fetch directory attributes
                // in this case this call is not need but is included for demo purposes
                await rootDirectory.FetchAttributesAsync();

                Console.WriteLine("Get directory properties:");
                Console.WriteLine("    ETag: {0}", rootDirectory.Properties.ETag);
                Console.WriteLine("    Last modified: {0}", rootDirectory.Properties.LastModified);
            }
            catch (StorageException exStorage)
            {
                Common.WriteException(exStorage);
                Console.WriteLine(
                    "Please make sure your storage account is specified correctly in the app.config - then restart the sample.");
                Console.WriteLine("Press any key to exit");
                Console.ReadLine();
                throw;
            }
            catch (Exception ex)
            {
                Console.WriteLine("    Exception thrown creating share.");
                Common.WriteException(ex);
                throw;
            }
            finally
            {
                // Delete share
                Console.WriteLine("Delete share");
                share.DeleteIfExists();
            }
            Console.WriteLine();
        }
        private static void SetAzureFileDirectoryAttributes(
            CloudFileDirectory fileDirectory,
            CloudFileNtfsAttributes?fileAttributes,
            DateTimeOffset?creationTime,
            DateTimeOffset?lastWriteTime,
            IDictionary <string, string> metadata,
            CancellationToken cancellationToken)
        {
            if (fileAttributes.HasValue || null != metadata)
            {
                fileDirectory.FetchAttributesAsync(null, Transfer_RequestOptions.DefaultFileRequestOptions, null, cancellationToken).GetAwaiter().GetResult();

                if (fileAttributes.HasValue)
                {
                    if (fileDirectory.Properties.NtfsAttributes != fileAttributes.Value ||
                        fileDirectory.Properties.CreationTime != creationTime.Value ||
                        fileDirectory.Properties.LastWriteTime != lastWriteTime.Value)
                    {
                        fileDirectory.Properties.NtfsAttributes = fileAttributes.Value;
                        fileDirectory.Properties.CreationTime   = creationTime;
                        fileDirectory.Properties.LastWriteTime  = lastWriteTime;
                        fileDirectory.SetPropertiesAsync(Transfer_RequestOptions.DefaultFileRequestOptions, null, cancellationToken).GetAwaiter().GetResult();
                    }
                }

                if (null != metadata)
                {
                    if (!metadata.DictionaryEquals(fileDirectory.Metadata))
                    {
                        fileDirectory.Metadata.Clear();
                        foreach (var keyValuePair in metadata)
                        {
                            fileDirectory.Metadata.Add(keyValuePair);
                        }

                        fileDirectory.SetMetadataAsync(null, Transfer_RequestOptions.DefaultFileRequestOptions, null, cancellationToken).GetAwaiter().GetResult();
                    }
                }
            }
        }
 public Task FetchDirectoryAttributesAsync(CloudFileDirectory directory, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext, CancellationToken token)
 {
     return(directory.FetchAttributesAsync(accessCondition, options, operationContext, token));
 }
Esempio n. 6
0
        private static void SetAzureFileDirectoryAttributes(
            CloudFileDirectory fileDirectory,
            CloudFileNtfsAttributes?fileAttributes,
            DateTimeOffset?creationTime,
            DateTimeOffset?lastWriteTime,
            string filePermissionKey,
            string portableSDDL,
            IDictionary <string, string> metadata,
            CancellationToken cancellationToken)
        {
            if (fileAttributes.HasValue || null != metadata || !string.IsNullOrEmpty(filePermissionKey) || !string.IsNullOrEmpty(portableSDDL))
            {
                fileDirectory.FetchAttributesAsync(null, Transfer_RequestOptions.DefaultFileRequestOptions, null, cancellationToken).GetAwaiter().GetResult();

                bool needToSetProperties = false;

                if (fileAttributes.HasValue)
                {
                    if (fileDirectory.Properties.NtfsAttributes != fileAttributes.Value ||
                        fileDirectory.Properties.CreationTime != creationTime.Value ||
                        fileDirectory.Properties.LastWriteTime != lastWriteTime.Value)
                    {
                        needToSetProperties = true;
                        fileDirectory.Properties.NtfsAttributes = fileAttributes.Value;
                        fileDirectory.Properties.CreationTime   = creationTime;
                        fileDirectory.Properties.LastWriteTime  = lastWriteTime;
                    }
                }

                if (!string.IsNullOrEmpty(filePermissionKey))
                {
                    fileDirectory.Properties.FilePermissionKey = filePermissionKey;
                    needToSetProperties = true;
                }
                else if (!string.IsNullOrEmpty(portableSDDL))
                {
                    fileDirectory.FilePermission = portableSDDL;
                    fileDirectory.Properties.FilePermissionKey = null;
                    needToSetProperties = true;
                }

                if (needToSetProperties)
                {
                    fileDirectory.SetPropertiesAsync(
                        Transfer_RequestOptions.DefaultFileRequestOptions,
                        Utils.GenerateOperationContext(null),
                        cancellationToken).GetAwaiter().GetResult();
                }

                if (null != metadata)
                {
                    if (!metadata.DictionaryEquals(fileDirectory.Metadata))
                    {
                        fileDirectory.Metadata.Clear();
                        foreach (var keyValuePair in metadata)
                        {
                            fileDirectory.Metadata.Add(keyValuePair);
                        }

                        fileDirectory.SetMetadataAsync(null, Transfer_RequestOptions.DefaultFileRequestOptions, null, cancellationToken).GetAwaiter().GetResult();
                    }
                }
            }
        }