private Task <IFlurlResponse> CreateDatabaseAsync(QueryContext queryContext, int?shards = null, int?replicas = null, bool?partitioned = null, CancellationToken cancellationToken = default) { IFlurlRequest request = NewRequest() .AppendPathSegment(queryContext.EscapedDatabaseName); if (shards.HasValue && shards.Value != 8) { request = request.SetQueryParam("q", shards.Value); } if (replicas.HasValue && replicas.Value != 3) { request = request.SetQueryParam("n", replicas.Value); } if (partitioned.HasValue && partitioned.Value) { request = request.SetQueryParam("partitioned", "true"); } return(request .AllowHttpStatus(HttpStatusCode.PreconditionFailed) .PutAsync(null, cancellationToken) .SendRequestAsync()); }
public IEnumerable <TResponse> Enumerate(IFlurlRequest request) { request.AllowHttpStatus(HttpStatusCode.NotFound); var more = true; while (more) { // Need headers & result so capture task first: https://stackoverflow.com/a/53514668/129269 var task = request.GetAsync(); var response = task.ConfigureAwait(false).GetAwaiter().GetResult(); if (response.StatusCode == HttpStatusCode.NotFound) { throw new NotFoundException(request.Url.ToString()); } var data = task.ReceiveJson <Multiple <TResponse> >().ConfigureAwait(false).GetAwaiter().GetResult(); foreach (var item in data.Value) { yield return(item); } more = response.Headers.TryGetValues("x-ms-continuationtoken", out var tokens); request.SetQueryParam("continuationToken", tokens?.First()); } }
private static async Task <T?> SendAsync <T>(this IFlurlRequest request, MakeRequest makeRequest, DeserializeContent <T> deserializeContent, params HttpStatusCode[] defaultStatusCodes) where T : class { request.AllowHttpStatus(defaultStatusCodes); var response = await makeRequest(request).ConfigureAwait(false); if (defaultStatusCodes.Contains((HttpStatusCode)response.StatusCode)) { return(default);
public Task <T> GetAsync <T>(CancellationToken token, string uri) { IFlurlRequest request = _flurlClient.Request(uri) .WithTimeout(_timeOut) .WithHeaders(_headers); if (!string.IsNullOrEmpty(AllowHttpStatus)) { request.AllowHttpStatus(AllowHttpStatus); } return(request.GetAsync().ReceiveJson <T>()); }
/// <inheritdoc /> public async Task <TSource?> FindAsync(string docId, bool withConflicts = false, CancellationToken cancellationToken = default) { IFlurlRequest request = NewRequest() .AppendPathSegment(docId); if (withConflicts) { request = request.SetQueryParam("conflicts", "true"); } IFlurlResponse?response = await request .AllowHttpStatus(HttpStatusCode.NotFound) .GetAsync(cancellationToken) .ConfigureAwait(false); return(response != null && response.StatusCode == (int)HttpStatusCode.OK ? await response.GetJsonAsync <TSource>().ConfigureAwait(false) : null); }