本文整理汇总了C#中Microsoft.WindowsAzure.Storage.Core.UriQueryBuilder类的典型用法代码示例。如果您正苦于以下问题:C# UriQueryBuilder类的具体用法?C# UriQueryBuilder怎么用?C# UriQueryBuilder使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
UriQueryBuilder类属于Microsoft.WindowsAzure.Storage.Core命名空间,在下文中一共展示了UriQueryBuilder类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateRequestMessage
/// <summary>
/// Creates the web request.
/// </summary>
/// <param name="uri">The request Uri.</param>
/// <param name="timeout">The timeout.</param>
/// <param name="builder">The builder.</param>
/// <returns>A web request for performing the operation.</returns>
internal static StorageRequestMessage CreateRequestMessage(HttpMethod method, Uri uri, int? timeout, UriQueryBuilder builder, HttpContent content, OperationContext operationContext, ICanonicalizer canonicalizer, StorageCredentials credentials)
{
if (builder == null)
{
builder = new UriQueryBuilder();
}
if (timeout.HasValue && timeout.Value > 0)
{
builder.Add("timeout", timeout.ToString());
}
#if WINDOWS_RT && !NETCORE
// Windows Phone does not allow the caller to disable caching, so a random GUID
// is added to every URI to make it look like a different request.
builder.Add("randomguid", Guid.NewGuid().ToString("N"));
#endif
Uri uriRequest = builder.AddToUri(uri);
StorageRequestMessage msg = new StorageRequestMessage(method, uriRequest, canonicalizer, credentials, credentials.AccountName);
msg.Content = content;
return msg;
}
示例2: CreateWebRequest
/// <summary>
/// Creates the web request.
/// </summary>
/// <param name="method">The HTTP method.</param>
/// <param name="uri">The request URI.</param>
/// <param name="timeout">The timeout.</param>
/// <param name="builder">An object of type <see cref="UriQueryBuilder"/>, containing additional parameters to add to the URI query string.</param>
/// <param name="operationContext">An <see cref="OperationContext" /> object for tracking the current operation.</param>
/// <returns>
/// A web request for performing the operation.
/// </returns>
internal static HttpWebRequest CreateWebRequest(string method, Uri uri, int? timeout, UriQueryBuilder builder, OperationContext operationContext)
{
if (builder == null)
{
builder = new UriQueryBuilder();
}
if (timeout != 0)
{
builder.Add("timeout", timeout.ToString());
}
Uri uriRequest = builder.AddToUri(uri);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uriRequest);
request.Method = method;
request.Headers.Add(Constants.HeaderConstants.StorageVersionHeader, Constants.HeaderConstants.TargetStorageVersion);
request.UserAgent = Constants.HeaderConstants.UserAgent;
request.KeepAlive = true;
// Disable the Expect 100-Continue
request.ServicePoint.Expect100Continue = false;
return request;
}
示例3: BuildRequestForTableQuery
internal static HttpWebRequest BuildRequestForTableQuery(Uri uri, UriQueryBuilder builder, int? timeout, bool useVersionHeader, OperationContext ctx, TablePayloadFormat payloadFormat)
{
HttpWebRequest msg = BuildRequestCore(uri, builder, "GET", timeout, useVersionHeader, ctx);
SetAcceptHeaderForHttpWebRequest(msg, payloadFormat);
Logger.LogInformational(ctx, SR.PayloadFormat, payloadFormat);
return msg;
}
示例4: BuildRequestCore
internal static HttpWebRequest BuildRequestCore(Uri uri, UriQueryBuilder builder, string method, int? timeout, bool useVersionHeader, OperationContext ctx)
{
HttpWebRequest msg = HttpWebRequestFactory.CreateWebRequest(method, uri, timeout, builder, useVersionHeader, ctx);
msg.Headers.Add("Accept-Charset", "UTF-8");
msg.Headers.Add("MaxDataServiceVersion", "3.0;NetFx");
return msg;
}
示例5: AppendBlock
/// <summary>
/// Constructs a web request to commit a block to an append blob.
/// </summary>
/// <param name="uri">A <see cref="System.Uri"/> specifying the absolute URI to the blob.</param>
/// <param name="timeout">An integer specifying the server timeout interval.</param>
/// <param name="accessCondition">An <see cref="AccessCondition"/> object that represents the condition that must be met in order for the request to proceed.</param>
/// <param name="content"> The HTTP entity body and content headers.</param>
/// <param name="operationContext">An <see cref="OperationContext"/> object that represents the context for the current operation.</param>
/// <returns>A <see cref="System.Net.HttpWebRequest"/> object.</returns>
public static HttpRequestMessage AppendBlock(Uri uri, int? timeout, AccessCondition accessCondition, HttpContent content, OperationContext operationContext)
{
UriQueryBuilder builder = new UriQueryBuilder();
builder.Add(Constants.QueryConstants.Component, "appendblock");
HttpRequestMessage request = HttpRequestMessageFactory.CreateRequestMessage(HttpMethod.Put, uri, timeout, builder, content, operationContext);
request.ApplyAccessCondition(accessCondition);
request.ApplyAppendCondition(accessCondition);
return request;
}
示例6: GetAcl
/// <summary>
/// Constructs a web request to return the ACL for a cloud resource.
/// </summary>
/// <param name="uri">The absolute URI to the resource.</param>
/// <param name="timeout">The server timeout interval.</param>
/// <param name="builder">An optional query builder to use.</param>
/// <returns><returns>A web request to use to perform the operation.</returns></returns>
internal static HttpRequestMessage GetAcl(Uri uri, int? timeout, UriQueryBuilder builder, HttpContent content, OperationContext operationContext)
{
if (builder == null)
{
builder = new UriQueryBuilder();
}
builder.Add(Constants.QueryConstants.Component, "acl");
HttpRequestMessage request = CreateRequestMessage(HttpMethod.Get, uri, timeout, builder, content, operationContext);
return request;
}
示例7: CreateWebRequest
internal static HttpWebRequest CreateWebRequest(string method, Uri uri, int? timeout, UriQueryBuilder builder, bool useVersionHeader, OperationContext operationContext)
{
if (builder == null)
{
builder = new UriQueryBuilder();
}
if (timeout.HasValue && timeout.Value > 0)
{
builder.Add("timeout", timeout.Value.ToString(CultureInfo.InvariantCulture));
}
#if WINDOWS_PHONE
// Windows Phone does not allow the caller to disable caching, so a random GUID
// is added to every URI to make it look a different request.
builder.Add("randomguid", Guid.NewGuid().ToString("N"));
#endif
Uri uriRequest = builder.AddToUri(uri);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uriRequest);
request.Method = method;
// Set the Content-Length of requests to 0 by default. If we do not upload
// a body, signing requires it to be 0. On Windows Phone, all requests except
// GET need this. On desktop, however, only PUT requests need it.
#if !WINDOWS_PHONE
if (method.Equals(WebRequestMethods.Http.Put, StringComparison.OrdinalIgnoreCase))
#else
if (!method.Equals(WebRequestMethods.Http.Get, StringComparison.OrdinalIgnoreCase))
#endif
{
request.ContentLength = 0;
}
request.UserAgent = Constants.HeaderConstants.UserAgent;
if (useVersionHeader)
{
request.Headers[Constants.HeaderConstants.StorageVersionHeader] = Constants.HeaderConstants.TargetStorageVersion;
}
#if !WINDOWS_PHONE
request.KeepAlive = true;
// Disable the Expect 100-Continue
request.ServicePoint.Expect100Continue = false;
#endif
return request;
}
示例8: BuildRequestCore
internal static HttpRequestMessage BuildRequestCore(Uri uri, HttpMethod method, int? timeout, OperationContext ctx)
{
Uri uriRequest = uri;
if (timeout != null && timeout != 0)
{
UriQueryBuilder builder = new UriQueryBuilder();
builder.Add("timeout", timeout.ToString());
uriRequest = builder.AddToUri(uri);
}
HttpRequestMessage msg = new HttpRequestMessage(method, uriRequest);
msg.Headers.Add("Accept", "application/atom+xml,application/xml");
msg.Headers.Add("Accept-Charset", "UTF-8");
msg.Headers.Add("MaxDataServiceVersion", "2.0;NetFx");
return msg;
}
示例9: GetAcl
/// <summary>
/// Constructs a web request to return the ACL for a cloud resource.
/// </summary>
/// <param name="uri">The absolute URI to the resource.</param>
/// <param name="timeout">The server timeout interval.</param>
/// <param name="builder">An optional query builder to use.</param>
/// <returns><returns>A web request to use to perform the operation.</returns></returns>
internal static StorageRequestMessage GetAcl(Uri uri, int? timeout, UriQueryBuilder builder, HttpContent content, OperationContext operationContext, ICanonicalizer canonicalizer, StorageCredentials credentials)
{
if (builder == null)
{
builder = new UriQueryBuilder();
}
builder.Add(Constants.QueryConstants.Component, "acl");
StorageRequestMessage request = CreateRequestMessage(HttpMethod.Get, uri, timeout, builder, content, operationContext, canonicalizer, credentials);
#if WINDOWS_PHONE
// Windows phone adds */* as the Accept type when we don't set one explicitly.
request.Headers.Add(Constants.HeaderConstants.PayloadAcceptHeader, Constants.XMLAcceptHeaderValue);
#endif
return request;
}
示例10: BuildRequestForTableOperation
internal static Tuple<HttpWebRequest, Stream> BuildRequestForTableOperation(Uri uri, UriQueryBuilder builder, IBufferManager bufferManager, int? timeout, TableOperation operation, OperationContext ctx)
{
HttpWebRequest msg = BuildRequestCore(uri, builder, operation.HttpMethod, timeout, ctx);
if (operation.OperationType == TableOperationType.InsertOrMerge || operation.OperationType == TableOperationType.Merge)
{
// post tunnelling
msg.Headers.Add("X-HTTP-Method", "MERGE");
}
// etag
if (operation.OperationType == TableOperationType.Delete ||
operation.OperationType == TableOperationType.Replace ||
operation.OperationType == TableOperationType.Merge)
{
if (operation.Entity.ETag != null)
{
msg.Headers.Add("If-Match", operation.Entity.ETag);
}
}
if (operation.OperationType == TableOperationType.Insert ||
operation.OperationType == TableOperationType.Merge ||
operation.OperationType == TableOperationType.InsertOrMerge ||
operation.OperationType == TableOperationType.InsertOrReplace ||
operation.OperationType == TableOperationType.Replace)
{
// create the writer, indent for readability of the examples.
ODataMessageWriterSettings writerSettings = new ODataMessageWriterSettings()
{
CheckCharacters = false, // sets this flag on the XmlWriter for ATOM
Version = ODataVersion.V2 // set the Odata version to use when writing the entry
};
HttpWebRequestAdapterMessage adapterMsg = new HttpWebRequestAdapterMessage(msg, bufferManager);
ODataMessageWriter odataWriter = new ODataMessageWriter(adapterMsg, writerSettings);
ODataWriter writer = odataWriter.CreateODataEntryWriter();
WriteOdataEntity(operation.Entity, operation.OperationType, ctx, writer);
return new Tuple<HttpWebRequest, Stream>(adapterMsg.GetPopulatedMessage(), adapterMsg.GetStream());
}
return new Tuple<HttpWebRequest, Stream>(msg, null);
}
示例11: CreateRequestMessage
/// <summary>
/// Creates the web request.
/// </summary>
/// <param name="uri">The request Uri.</param>
/// <param name="timeout">The timeout.</param>
/// <param name="builder">The builder.</param>
/// <returns>A web request for performing the operation.</returns>
internal static HttpRequestMessage CreateRequestMessage(HttpMethod method, Uri uri, int? timeout, UriQueryBuilder builder, HttpContent content, OperationContext operationContext)
{
if (builder == null)
{
builder = new UriQueryBuilder();
}
if (timeout.HasValue && timeout.Value > 0)
{
builder.Add("timeout", timeout.ToString());
}
Uri uriRequest = builder.AddToUri(uri);
HttpRequestMessage msg = new HttpRequestMessage(method, uriRequest);
msg.Content = content;
return msg;
}
示例12: UpdateMessage
/// <summary>
/// Constructs a web request to update a message.
/// </summary>
/// <param name="uri">A <see cref="System.Uri"/> specifying the absolute URI to the message to update.</param>
/// <param name="timeout">The server timeout interval, in seconds.</param>
/// <param name="popReceipt">A string specifying the pop receipt of the message.</param>
/// <param name="visibilityTimeoutInSeconds">The length of time during which the message will be invisible, in seconds.</param>
/// <param name="useVersionHeader">A flag indicating whether to set the x-ms-version HTTP header.</param>
/// <param name="operationContext">An <see cref="OperationContext"/> object that represents the context for the current operation.</param>
/// <returns>A <see cref="System.Net.HttpWebRequest"/> object.</returns>
public static HttpWebRequest UpdateMessage(Uri uri, int? timeout, string popReceipt, int visibilityTimeoutInSeconds, bool useVersionHeader, OperationContext operationContext)
{
UriQueryBuilder builder = new UriQueryBuilder();
builder.Add(Constants.QueryConstants.PopReceipt, popReceipt);
builder.Add(Constants.QueryConstants.VisibilityTimeout, visibilityTimeoutInSeconds.ToString(CultureInfo.InvariantCulture));
HttpWebRequest request = HttpWebRequestFactory.CreateWebRequest(WebRequestMethods.Http.Put, uri, timeout, builder, useVersionHeader, operationContext);
return request;
}
示例13: BuildRequestForTableBatchOperation
internal static Tuple<HttpWebRequest, Stream> BuildRequestForTableBatchOperation(Uri uri, UriQueryBuilder builder, IBufferManager bufferManager, int? timeout, string tableName, TableBatchOperation batch, bool useVersionHeader, OperationContext ctx, TableRequestOptions options, string accountName)
{
HttpWebRequest msg = BuildRequestCore(NavigationHelper.AppendPathToSingleUri(uri, "$batch"), builder, "POST", timeout, useVersionHeader, ctx);
TablePayloadFormat payloadFormat = options.PayloadFormat.Value;
Logger.LogInformational(ctx, SR.PayloadFormat, payloadFormat);
// create the writer, indent for readability of the examples.
ODataMessageWriterSettings writerSettings = new ODataMessageWriterSettings()
{
CheckCharacters = false, // sets this flag on the XmlWriter for ATOM
Version = TableConstants.ODataProtocolVersion // set the Odata version to use when writing the entry
};
HttpWebRequestAdapterMessage adapterMsg = new HttpWebRequestAdapterMessage(msg, bufferManager);
ODataMessageWriter odataWriter = new ODataMessageWriter(adapterMsg, writerSettings);
ODataBatchWriter batchWriter = odataWriter.CreateODataBatchWriter();
batchWriter.WriteStartBatch();
bool isQuery = batch.Count == 1 && batch[0].OperationType == TableOperationType.Retrieve;
// Query operations should not be inside changeset in payload
if (!isQuery)
{
// Start Operation
batchWriter.WriteStartChangeset();
batchWriter.Flush();
}
foreach (TableOperation operation in batch)
{
string httpMethod = operation.HttpMethod;
if (operation.OperationType == TableOperationType.Merge || operation.OperationType == TableOperationType.InsertOrMerge)
{
options.AssertNoEncryptionPolicyOrStrictMode();
httpMethod = "MERGE";
}
ODataBatchOperationRequestMessage mimePartMsg = batchWriter.CreateOperationRequestMessage(httpMethod, operation.GenerateRequestURI(uri, tableName));
SetAcceptAndContentTypeForODataBatchMessage(mimePartMsg, payloadFormat);
// etag
if (operation.OperationType == TableOperationType.Delete ||
operation.OperationType == TableOperationType.Replace ||
operation.OperationType == TableOperationType.Merge)
{
mimePartMsg.SetHeader("If-Match", operation.Entity.ETag);
}
// Prefer header
if (operation.OperationType == TableOperationType.Insert)
{
mimePartMsg.SetHeader("Prefer", operation.EchoContent ? "return-content" : "return-no-content");
}
if (operation.OperationType != TableOperationType.Delete && operation.OperationType != TableOperationType.Retrieve)
{
using (ODataMessageWriter batchEntryWriter = new ODataMessageWriter(mimePartMsg, writerSettings, new TableStorageModel(accountName)))
{
// Write entity
ODataWriter entryWriter = batchEntryWriter.CreateODataEntryWriter();
WriteOdataEntity(operation.Entity, operation.OperationType, ctx, entryWriter, options);
}
}
}
if (!isQuery)
{
// End Operation
batchWriter.WriteEndChangeset();
}
// End Batch
batchWriter.WriteEndBatch();
batchWriter.Flush();
return new Tuple<HttpWebRequest, Stream>(adapterMsg.GetPopulatedMessage(), adapterMsg.GetStream());
}
示例14: List
/// <summary>
/// Constructs a web request to return a listing of all containers in this storage account.
/// </summary>
/// <param name="uri">The absolute URI for the account.</param>
/// <param name="timeout">The server timeout interval.</param>
/// <param name="listingContext">A set of parameters for the listing operation.</param>
/// <param name="detailsIncluded">Additional details to return with the listing.</param>
/// <returns>A web request for the specified operation.</returns>
public static HttpRequestMessage List(Uri uri, int? timeout, ListingContext listingContext, ContainerListingDetails detailsIncluded, HttpContent content, OperationContext operationContext)
{
UriQueryBuilder builder = new UriQueryBuilder();
builder.Add(Constants.QueryConstants.Component, "list");
if (listingContext != null)
{
if (listingContext.Prefix != null)
{
builder.Add("prefix", listingContext.Prefix);
}
if (listingContext.Marker != null)
{
builder.Add("marker", listingContext.Marker);
}
if (listingContext.MaxResults != null)
{
builder.Add("maxresults", listingContext.MaxResults.ToString());
}
}
if ((detailsIncluded & ContainerListingDetails.Metadata) != 0)
{
builder.Add("include", "metadata");
}
HttpRequestMessage request = HttpRequestMessageFactory.CreateRequestMessage(HttpMethod.Get, uri, timeout, builder, content, operationContext);
return request;
}
示例15: GenerateQueryBuilder
internal UriQueryBuilder GenerateQueryBuilder()
{
UriQueryBuilder builder = new UriQueryBuilder();
// filter
if (!string.IsNullOrEmpty(this.FilterString))
{
builder.Add(TableConstants.Filter, this.FilterString);
}
// take
if (this.takeCount.HasValue)
{
builder.Add(TableConstants.Top, Convert.ToString(Math.Min(this.takeCount.Value, TableConstants.TableServiceMaxResults)));
}
// select
if (this.SelectColumns != null && this.SelectColumns.Count > 0)
{
StringBuilder colBuilder = new StringBuilder();
bool foundRk = false;
bool foundPk = false;
bool foundTs = false;
for (int m = 0; m < this.SelectColumns.Count; m++)
{
if (this.SelectColumns[m] == TableConstants.PartitionKey)
{
foundPk = true;
}
else if (this.SelectColumns[m] == TableConstants.RowKey)
{
foundRk = true;
}
else if (this.SelectColumns[m] == TableConstants.Timestamp)
{
foundTs = true;
}
colBuilder.Append(this.SelectColumns[m]);
if (m < this.SelectColumns.Count - 1)
{
colBuilder.Append(",");
}
}
if (!foundPk)
{
colBuilder.Append(",");
colBuilder.Append(TableConstants.PartitionKey);
}
if (!foundRk)
{
colBuilder.Append(",");
colBuilder.Append(TableConstants.RowKey);
}
if (!foundTs)
{
colBuilder.Append(",");
colBuilder.Append(TableConstants.Timestamp);
}
builder.Add(TableConstants.Select, colBuilder.ToString());
}
return builder;
}