/// <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); }
/// <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); }