/// <summary>
        /// Constructs a web request to close one or more open handles for a file or directory.
        /// </summary>
        /// <param name="uri">The absolute URI to the file.</param>
        /// <param name="timeout">The server timeout interval.</param>
        /// <param name="shareSnapshot">A <see cref="DateTimeOffset"/> specifying the share snapshot timestamp, if the share is a snapshot.</param>
        /// <param name="handleId">ID of the handle to be closed, "*" if all should be closed.</param>
        /// <param name="recursive">Whether to recurse through this directory's subfiles and folders.</param>
        /// <param name="token">Continuation token for closing many handles.</param>
        /// <param name="accessCondition">The access condition to apply to the request.</param>
        /// <param name="operationContext">An <see cref="OperationContext" /> object for tracking the current operation.</param>
        /// <returns>A <see cref="System.Net.HttpWebRequest"/> object.</returns>
        public static StorageRequestMessage CloseHandle(Uri uri, int?timeout, DateTimeOffset?shareSnapshot, string handleId, bool?recursive, FileContinuationToken token, AccessCondition accessCondition, HttpContent content, OperationContext operationContext, ICanonicalizer canonicalizer, StorageCredentials credentials)
        {
            UriQueryBuilder builder = new UriQueryBuilder();

            FileHttpRequestMessageFactory.AddShareSnapshot(builder, shareSnapshot);
            builder.Add(Constants.QueryConstants.Component, "forceclosehandles");

            if (token != null && token.NextMarker != null)
            {
                builder.Add(Constants.QueryConstants.Marker, token.NextMarker);
            }

            StorageRequestMessage request = HttpRequestMessageFactory.CreateRequestMessage(HttpMethod.Put, uri, timeout, builder, content, operationContext, canonicalizer, credentials);

            if (handleId != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.HandleId, handleId);
            }

            if (recursive.HasValue)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.Recursive, recursive.Value.ToString());
            }

            request.ApplyAccessCondition(accessCondition);

            return(request);
        }
Beispiel #2
0
        /// <summary>
        /// <param name="uri">The absolute URI to the file.</param>
        /// <param name="timeout">The server timeout interval.</param>
        /// <param name="newFileSize">The new file size. Set this parameter to <c>null</c> to keep the existing file size.</param>
        /// <param name="accessCondition">The access condition to apply to the request.</param>
        /// <param name="content">HttpContent for the request</param>
        /// <param name="operationContext">An <see cref="OperationContext" /> object for tracking the current operation.</param>
        /// <param name="canonicalizer">A canonicalizer that converts HTTP request data into a standard form appropriate for signing.</param>
        /// <param name="credentials">A <see cref="StorageCredentials"/> object providing credentials for the request.</param>
        /// <returns>A web request to use to perform the operation.</returns>
        /// </summary>
        public static StorageRequestMessage Resize(
            Uri uri,
            int?timeout,
            long newFileSize,
            AccessCondition accessCondition,
            HttpContent content,
            OperationContext operationContext,
            ICanonicalizer canonicalizer,
            StorageCredentials credentials)
        {
            UriQueryBuilder builder = new UriQueryBuilder();

            builder.Add(Constants.QueryConstants.Component, "properties");

            StorageRequestMessage request = HttpRequestMessageFactory.CreateRequestMessage(HttpMethod.Put, uri, timeout, builder, content, operationContext, canonicalizer, credentials);

            request.Headers.Add(Constants.HeaderConstants.FileContentLengthHeader, newFileSize.ToString(NumberFormatInfo.InvariantInfo));

            // Required SMB headers.
            request.AddOptionalHeader(Constants.HeaderConstants.FilePermission, Constants.HeaderConstants.Preserve);
            request.AddOptionalHeader(Constants.HeaderConstants.FileAttributes, Constants.HeaderConstants.Preserve);
            request.AddOptionalHeader(Constants.HeaderConstants.FileCreationTime, Constants.HeaderConstants.Preserve);
            request.AddOptionalHeader(Constants.HeaderConstants.FileLastWriteTime, Constants.HeaderConstants.Preserve);

            request.ApplyAccessCondition(accessCondition);
            return(request);
        }
 /// <summary>
 /// Applies the append condition to the web request.
 /// </summary>
 /// <param name="request">The request to be modified.</param>
 /// <param name="accessCondition">Access condition to be added to the request.</param>
 internal static void ApplyAppendCondition(this StorageRequestMessage request, AccessCondition accessCondition)
 {
     if (accessCondition != null)
     {
         request.AddOptionalHeader(Constants.HeaderConstants.IfMaxSizeLessThanOrEqualHeader, accessCondition.IfMaxSizeLessThanOrEqual);
         request.AddOptionalHeader(Constants.HeaderConstants.IfAppendPositionEqualHeader, accessCondition.IfAppendPositionEqual);
     }
 }
 /// <summary>
 /// Applies the sequence number condition to the web request.
 /// </summary>
 /// <param name="request">The request to be modified.</param>
 /// <param name="accessCondition">Access condition to be added to the request.</param>
 internal static void ApplySequenceNumberCondition(this StorageRequestMessage request, AccessCondition accessCondition)
 {
     if (accessCondition != null)
     {
         request.AddOptionalHeader(Constants.HeaderConstants.IfSequenceNumberLEHeader, accessCondition.IfSequenceNumberLessThanOrEqual);
         request.AddOptionalHeader(Constants.HeaderConstants.IfSequenceNumberLTHeader, accessCondition.IfSequenceNumberLessThan);
         request.AddOptionalHeader(Constants.HeaderConstants.IfSequenceNumberEqHeader, accessCondition.IfSequenceNumberEqual);
     }
 }
Beispiel #5
0
        /// <summary>
        /// Constructs a web request to create a new file.
        /// </summary>
        /// <param name="uri">The absolute URI to the file.</param>
        /// <param name="timeout">The server timeout interval.</param>
        /// <param name="properties">The properties to set for the file.</param>
        /// <param name="filePermissionToSet">The file permission to set for the file.</param>
        /// <param name="fileSize">For a file, the size of the file. This parameter is ignored
        /// for block files.</param>
        /// <param name="accessCondition">The access condition to apply to the request.</param>
        /// <param name="content">The HttpContent to set on the request</param>
        /// <param name="operationContext">An <see cref="OperationContext"/> object that represents the context for the current operation.</param>
        /// <param name="canonicalizer">A canonicalizer that converts HTTP request data into a standard form appropriate for signing.</param>
        /// <param name="credentials">A <see cref="StorageCredentials"/> object providing credentials for the request.</param>
        /// <returns>A web request to use to perform the operation.</returns>
        public static StorageRequestMessage Create(
            Uri uri,
            int?timeout,
            FileProperties properties,
            string filePermissionToSet,
            long fileSize,
            AccessCondition accessCondition,
            HttpContent content,
            OperationContext operationContext,
            ICanonicalizer canonicalizer,
            StorageCredentials credentials)
        {
            CommonUtility.AssertNotNull("properties", properties);

            StorageRequestMessage request = HttpRequestMessageFactory.CreateRequestMessage(HttpMethod.Put, uri, timeout, null /* builder */, content, operationContext, canonicalizer, credentials);

            if (properties.CacheControl != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileCacheControlHeader, properties.CacheControl);
            }

            if (properties.ContentType != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentTypeHeader, properties.ContentType);
            }

            if (properties.ContentLanguage != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentLanguageHeader, properties.ContentLanguage);
            }

            if (properties.ContentEncoding != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentEncodingHeader, properties.ContentEncoding);
            }

            if (properties.ContentDisposition != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentDispositionRequestHeader, properties.ContentDisposition);
            }

            AddFilePermissionOrFilePermissionKey(request, filePermissionToSet, properties, Constants.HeaderConstants.FilePermissionInherit);
            AddNtfsFileAttributes(request, properties, Constants.HeaderConstants.FileAttributesNone);
            AddCreationTime(request, properties, Constants.HeaderConstants.FileTimeNow);
            AddLastWriteTime(request, properties, Constants.HeaderConstants.FileTimeNow);

            request.ApplyFileContentChecksumHeaders(properties.ContentChecksum);

            request.Headers.Add(Constants.HeaderConstants.FileType, Constants.HeaderConstants.File);
            request.Headers.Add(Constants.HeaderConstants.FileContentLengthHeader, fileSize.ToString(NumberFormatInfo.InvariantInfo));
            properties.Length = fileSize;

            request.ApplyAccessCondition(accessCondition);
            return(request);
        }
Beispiel #6
0
 /// <summary>
 /// Adds the File Last Write Time to the <see cref="StorageRequestMessage"/>
 /// </summary>
 /// <param name="request">The <see cref="StorageRequestMessage"/></param>
 /// <param name="properties">The <see cref="FileProperties"/></param>
 /// <param name="defaultValue">The default value to set if properties.lastWriteTimeToSet is null</param>
 private static void AddLastWriteTime(
     StorageRequestMessage request,
     FileProperties properties,
     string defaultValue)
 {
     if (properties?.lastWriteTimeToSet != null)
     {
         request.AddOptionalHeader(Constants.HeaderConstants.FileLastWriteTime, Request.ConvertDateTimeToSnapshotString(properties.lastWriteTimeToSet.Value));
     }
     else
     {
         request.AddOptionalHeader(Constants.HeaderConstants.FileLastWriteTime, defaultValue);
     }
 }
Beispiel #7
0
 /// <summary>
 /// Adds the <see cref="CloudFileNtfsAttributes"/> to the <see cref="StorageRequestMessage"/>
 /// </summary>
 /// <param name="request">The <see cref="StorageRequestMessage"/></param>
 /// <param name="properties">The <see cref="FileProperties"/></param>
 /// <param name="defaultValue">The default value to set if properties.ntfsAttributesToSet is null</param>
 private static void AddNtfsFileAttributes(
     StorageRequestMessage request,
     FileProperties properties,
     string defaultValue)
 {
     if (properties?.ntfsAttributesToSet != null)
     {
         request.AddOptionalHeader(Constants.HeaderConstants.FileAttributes, CloudFileNtfsAttributesHelper.ToString(properties.ntfsAttributesToSet.Value));
     }
     else
     {
         request.AddOptionalHeader(Constants.HeaderConstants.FileAttributes, defaultValue);
     }
 }
Beispiel #8
0
        /// <summary>
        /// Constructs a web request to return the list of open handles for a file or directory.
        /// </summary>
        /// <param name="uri">The absolute URI to the file.</param>
        /// <param name="timeout">The server timeout interval.</param>
        /// <param name="maxResults">The maximum number of results to be returned by the server.</param>
        /// <param name="recursive">Whether to recurse through a directory's files and subfolders.</param>
        /// <param name="nextMarker">Marker returned by a previous call to continue fetching results.</param>
        /// <param name="accessCondition">The access condition to apply to the request.</param>
        /// <param name="operationContext">An <see cref="OperationContext" /> object for tracking the current operation.</param>
        /// <returns>A <see cref="System.Net.HttpWebRequest"/> object.</returns>
        public static StorageRequestMessage ListHandles(Uri uri, int?timeout, int?maxResults, bool?recursive, FileContinuationToken nextMarker, AccessCondition accessCondition, HttpContent content, OperationContext operationContext, ICanonicalizer canonicalizer, StorageCredentials credentials)
        {
            UriQueryBuilder builder = new UriQueryBuilder();

            builder.Add(Constants.QueryConstants.Component, "listhandles");

            if (maxResults.HasValue)
            {
                builder.Add(Constants.MaxResults, maxResults.Value.ToString());
            }

            if (nextMarker != null)
            {
                builder.Add(Constants.HeaderConstants.Marker, nextMarker.NextMarker);
            }

            StorageRequestMessage request = HttpRequestMessageFactory.CreateRequestMessage(HttpMethod.Get, uri, timeout, builder, content, operationContext, canonicalizer, credentials);

            request.ApplyAccessCondition(accessCondition);

            if (recursive.HasValue)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.Recursive, recursive.Value.ToString());
            }

            return(request);
        }
 /// <summary>
 /// Adds the lease id.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <param name="leaseId">The lease id.</param>
 internal static void AddLeaseId(this StorageRequestMessage request, string leaseId)
 {
     if (leaseId != null)
     {
         request.AddOptionalHeader("x-ms-lease-id", leaseId);
     }
 }
Beispiel #10
0
 /// <summary>
 /// Adds the File Permission or File Permission Key to a StorageRequest.
 /// </summary>
 /// <param name="request">The <see cref="StorageRequestMessage"/></param>
 /// <param name="filePermissionToSet">The File Permission</param>
 /// <param name="properties">The <see cref="FileProperties"/></param>
 /// <param name="defaultValue">The default value to set if fileermissionToSet and properties.filePermissionKeyToSet are null</param>
 private static void AddFilePermissionOrFilePermissionKey(
     StorageRequestMessage request,
     string filePermissionToSet,
     FileProperties properties,
     string defaultValue)
 {
     if (filePermissionToSet == null && properties?.filePermissionKeyToSet == null)
     {
         request.AddOptionalHeader(Constants.HeaderConstants.FilePermission, defaultValue);
     }
     else if (filePermissionToSet != null)
     {
         request.AddOptionalHeader(Constants.HeaderConstants.FilePermission, filePermissionToSet);
     }
     else
     {
         request.AddOptionalHeader(Constants.HeaderConstants.FilePermissionKey, properties.filePermissionKeyToSet);
     }
 }
        /// <summary>
        /// Constructs a web request to create a new share.
        /// </summary>
        /// <param name="uri">The absolute URI to the share.</param>
        /// <param name="properties">Properties to set on the share.</param>
        /// <param name="timeout">The server timeout interval.</param>
        /// <returns>A web request to use to perform the operation.</returns>
        public static StorageRequestMessage Create(Uri uri, FileShareProperties properties, int?timeout, HttpContent content, OperationContext operationContext, ICanonicalizer canonicalizer, StorageCredentials credentials)
        {
            UriQueryBuilder shareBuilder = GetShareUriQueryBuilder();

            StorageRequestMessage request = HttpRequestMessageFactory.Create(uri, timeout, shareBuilder, content, operationContext, canonicalizer, credentials);

            if (properties != null && properties.Quota.HasValue)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.ShareQuota, properties.Quota.Value);
            }

            return(request);
        }
        /// <summary>
        /// Constructs a web request to write or clear a range of pages in a file.
        /// </summary>
        /// <param name="uri">The absolute URI to the file.</param>
        /// <param name="timeout">The server timeout interval.</param>
        /// <param name="fileRange">The beginning and ending offsets.</param>
        /// <param name="fileRangeWrite">Action describing whether we are writing to a file or clearing a set of ranges.</param>
        /// <param name="accessCondition">The access condition to apply to the request.</param>
        /// <param name="content">The corresponding Http content.</param>
        /// <param name="operationContext">An object that represents the context for the current operation.</param>
        /// <returns>A web request to use to perform the operation.</returns>
        public static StorageRequestMessage PutRange(Uri uri, int?timeout, FileRange fileRange, FileRangeWrite fileRangeWrite, AccessCondition accessCondition, HttpContent content, OperationContext operationContext, ICanonicalizer canonicalizer, StorageCredentials credentials)
        {
            UriQueryBuilder builder = new UriQueryBuilder();

            builder.Add(Constants.QueryConstants.Component, "range");

            StorageRequestMessage request = HttpRequestMessageFactory.CreateRequestMessage(HttpMethod.Put, uri, timeout, builder, content, operationContext, canonicalizer, credentials);

            request.AddOptionalHeader(Constants.HeaderConstants.RangeHeader, fileRange.ToString());
            request.Headers.Add(Constants.HeaderConstants.FileRangeWrite, fileRangeWrite.ToString());

            request.ApplyAccessCondition(accessCondition);
            return(request);
        }
Beispiel #13
0
        /// <summary>
        /// Constructs a web request to set system properties for a file.
        /// </summary>
        /// <param name="uri">The absolute URI to the file.</param>
        /// <param name="timeout">The server timeout interval.</param>
        /// <param name="properties">The file's properties.</param>
        /// <param name="filePermissionToSet">The file's file permission</param>
        /// <param name="accessCondition">The access condition to apply to the request.</param>
        /// <param name="content">HttpContent for the request</param>
        /// <param name="operationContext">An <see cref="OperationContext" /> object for tracking the current operation.</param>
        /// <param name="canonicalizer">A canonicalizer that converts HTTP request data into a standard form appropriate for signing.</param>
        /// <param name="credentials">A <see cref="StorageCredentials"/> object providing credentials for the request.</param>
        /// <returns>A web request to use to perform the operation.</returns>
        public static StorageRequestMessage SetProperties(
            Uri uri,
            int?timeout,
            FileProperties properties,
            string filePermissionToSet,
            AccessCondition accessCondition,
            HttpContent content,
            OperationContext operationContext,
            ICanonicalizer canonicalizer,
            StorageCredentials credentials)
        {
            CommonUtility.AssertNotNull("properties", properties);
            UriQueryBuilder builder = new UriQueryBuilder();

            builder.Add(Constants.QueryConstants.Component, "properties");

            StorageRequestMessage request = HttpRequestMessageFactory.CreateRequestMessage(HttpMethod.Put, uri, timeout, builder, content, operationContext, canonicalizer, credentials);

            if (properties != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileCacheControlHeader, properties.CacheControl);
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentDispositionRequestHeader, properties.ContentDisposition);
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentEncodingHeader, properties.ContentEncoding);
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentLanguageHeader, properties.ContentLanguage);
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentTypeHeader, properties.ContentType);
                request.ApplyFileContentChecksumHeaders(properties.ContentChecksum);
            }

            AddFilePermissionOrFilePermissionKey(request, filePermissionToSet, properties, Constants.HeaderConstants.Preserve);
            AddNtfsFileAttributes(request, properties, Constants.HeaderConstants.Preserve);
            AddCreationTime(request, properties, Constants.HeaderConstants.Preserve);
            AddLastWriteTime(request, properties, Constants.HeaderConstants.Preserve);

            request.ApplyAccessCondition(accessCondition);
            return(request);
        }
        /// <summary>
        /// Constructs a web request to set system properties for a share.
        /// </summary>
        /// <param name="uri">The absolute URI to the share.</param>
        /// <param name="timeout">The server timeout interval.</param>
        /// <param name="properties">The share's properties.</param>
        /// <param name="accessCondition">The access condition to apply to the request.</param>
        /// <returns>A web request to use to perform the operation.</returns>
        public static StorageRequestMessage SetProperties(Uri uri, int?timeout, FileShareProperties properties, AccessCondition accessCondition, HttpContent content, OperationContext operationContext, ICanonicalizer canonicalizer, StorageCredentials credentials)
        {
            CommonUtility.AssertNotNull("properties", properties);

            UriQueryBuilder shareBuilder = GetShareUriQueryBuilder();

            shareBuilder.Add(Constants.QueryConstants.Component, "properties");

            StorageRequestMessage request = HttpRequestMessageFactory.CreateRequestMessage(HttpMethod.Put, uri, timeout, shareBuilder, content, operationContext, canonicalizer, credentials);

            if (properties.Quota.HasValue)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.ShareQuota, properties.Quota.Value);
            }

            request.ApplyAccessCondition(accessCondition);
            return(request);
        }
        /// <summary>
        /// Constructs a web request to create a new file.
        /// </summary>
        /// <param name="uri">The absolute URI to the file.</param>
        /// <param name="timeout">The server timeout interval.</param>
        /// <param name="properties">The properties to set for the file.</param>
        /// <param name="fileSize">For a file, the size of the file. This parameter is ignored
        /// for block files.</param>
        /// <param name="accessCondition">The access condition to apply to the request.</param>
        /// <returns>A web request to use to perform the operation.</returns>
        public static StorageRequestMessage Create(Uri uri, int?timeout, FileProperties properties, long fileSize, AccessCondition accessCondition, HttpContent content, OperationContext operationContext, ICanonicalizer canonicalizer, StorageCredentials credentials)
        {
            CommonUtility.AssertNotNull("properties", properties);

            StorageRequestMessage request = HttpRequestMessageFactory.CreateRequestMessage(HttpMethod.Put, uri, timeout, null /* builder */, content, operationContext, canonicalizer, credentials);

            if (properties.CacheControl != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileCacheControlHeader, properties.CacheControl);
            }

            if (properties.ContentType != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentTypeHeader, properties.ContentType);
            }

            if (properties.ContentMD5 != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentMD5Header, properties.ContentMD5);
            }

            if (properties.ContentLanguage != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentLanguageHeader, properties.ContentLanguage);
            }

            if (properties.ContentEncoding != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentEncodingHeader, properties.ContentEncoding);
            }

            if (properties.ContentDisposition != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentDispositionRequestHeader, properties.ContentDisposition);
            }

            request.Headers.Add(Constants.HeaderConstants.FileType, Constants.HeaderConstants.File);
            request.Headers.Add(Constants.HeaderConstants.FileContentLengthHeader, fileSize.ToString(NumberFormatInfo.InvariantInfo));
            properties.Length = fileSize;

            request.ApplyAccessCondition(accessCondition);
            return(request);
        }
        /// <summary>
        /// Constructs a web request to set system properties for a file.
        /// </summary>
        /// <param name="uri">The absolute URI to the file.</param>
        /// <param name="timeout">The server timeout interval.</param>
        /// <param name="properties">The file's properties.</param>
        /// <param name="accessCondition">The access condition to apply to the request.</param>
        /// <returns>A web request to use to perform the operation.</returns>
        public static StorageRequestMessage SetProperties(Uri uri, int?timeout, FileProperties properties, AccessCondition accessCondition, HttpContent content, OperationContext operationContext, ICanonicalizer canonicalizer, StorageCredentials credentials)
        {
            UriQueryBuilder builder = new UriQueryBuilder();

            builder.Add(Constants.QueryConstants.Component, "properties");

            StorageRequestMessage request = HttpRequestMessageFactory.CreateRequestMessage(HttpMethod.Put, uri, timeout, builder, content, operationContext, canonicalizer, credentials);

            if (properties != null)
            {
                request.AddOptionalHeader(Constants.HeaderConstants.FileCacheControlHeader, properties.CacheControl);
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentDispositionRequestHeader, properties.ContentDisposition);
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentEncodingHeader, properties.ContentEncoding);
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentLanguageHeader, properties.ContentLanguage);
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentMD5Header, properties.ContentMD5);
                request.AddOptionalHeader(Constants.HeaderConstants.FileContentTypeHeader, properties.ContentType);
            }

            request.ApplyAccessCondition(accessCondition);
            return(request);
        }
Beispiel #17
0
 internal static void ApplyFileContentChecksumHeaders(this StorageRequestMessage request, Checksum fileContentChecksum)
 {
     request.AddOptionalHeader(Constants.HeaderConstants.FileContentMD5Header, fileContentChecksum?.MD5);
     request.AddOptionalHeader(Constants.HeaderConstants.FileContentCRC64Header, fileContentChecksum?.CRC64);
 }
 /// <summary>
 /// Adds a lease break period to a request.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <param name="leaseBreakPeriod">The lease break period.</param>
 internal static void AddLeaseBreakPeriod(StorageRequestMessage request, int?leaseBreakPeriod)
 {
     request.AddOptionalHeader(Constants.HeaderConstants.LeaseBreakPeriodHeader, leaseBreakPeriod);
 }
 /// <summary>
 /// Adds a lease duration to a request.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <param name="leaseDuration">The lease duration.</param>
 internal static void AddLeaseDuration(StorageRequestMessage request, int?leaseDuration)
 {
     request.AddOptionalHeader(Constants.HeaderConstants.LeaseDurationHeader, leaseDuration);
 }
 /// <summary>
 /// Adds a proposed lease id to a request.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <param name="proposedLeaseId">The proposed lease id.</param>
 internal static void AddProposedLeaseId(StorageRequestMessage request, string proposedLeaseId)
 {
     request.AddOptionalHeader(Constants.HeaderConstants.ProposedLeaseIdHeader, proposedLeaseId);
 }