private async Task <HttpResponseMessage> SendRequestWithPolicy(IHttpRequestMessageBuilder requestBuilder, IAsyncPolicy <HttpResponseMessage> policy = null, CancellationToken cancellationToken = default) { HttpRequestMessage request = requestBuilder.Request; using (request) { Task <HttpResponseMessage> SendRequest(CancellationToken ct) { return(this.httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, ct)); } if (policy != null) { HttpResponseMessage response = await policy.ExecuteAsync(SendRequest, cancellationToken).ConfigureAwait(false); return(response); } else { HttpResponseMessage response = await SendRequest(cancellationToken).ConfigureAwait(false); return(response); } } }
public void ModifyAndSet_Throws_Argument_Null_Exception_For_Builder() { IHttpRequestMessageBuilder builder = null; Action testCode = () => builder.ConfigureRequest(req => req); testCode.Should().Throw <ArgumentNullException>(); }
/// <inheritdoc/> public async Task <HttpResponseMessage> ListAccountsHttpResponseAsync(CancellationToken cancellationToken = default) { IHttpRequestMessageBuilder requestBuilder = UrlBuilder .Create("accounts") .ToRequest() .WithHttpMethod().Get() .WithAcceptApplicationJson(); requestBuilder = await this.PreviewListAccountsAsync(requestBuilder, cancellationToken).ConfigureAwait(false); HttpResponseMessage response = await this.SendRequestWithPolicy(requestBuilder, this.ListAccountsPolicy, cancellationToken).ConfigureAwait(false); return(response); }
/// <inheritdoc/> public async Task <HttpResponseMessage> GetMyDetailsHttpResponseAsync(string subjectId = null, CancellationToken cancellationToken = default) { IHttpRequestMessageBuilder requestBuilder = UrlBuilder .Create("me") .SetQueryParam("subjectId", subjectId) .ToRequest() .WithHttpMethod().Get() .WithAcceptApplicationJson(); requestBuilder = await this.PreviewGetMyDetailsAsync(requestBuilder, cancellationToken).ConfigureAwait(false); HttpResponseMessage response = await this.SendRequestWithPolicy(requestBuilder, this.GetMyDetailsPolicy, cancellationToken).ConfigureAwait(false); return(response); }
/// <inheritdoc/> public async Task <HttpResponseMessage> CreateTenantHttpResponseAsync(CreateTenantRequest request, CancellationToken cancellationToken = default) { IHttpRequestMessageBuilder requestBuilder = UrlBuilder .Create("tenants") .ToRequest() .WithHttpMethod().Post() .WithContentJson(request) .WithAcceptApplicationJson(); requestBuilder = await this.PreviewCreateTenantAsync(requestBuilder, cancellationToken).ConfigureAwait(false); HttpResponseMessage response = await this.SendRequestWithPolicy(requestBuilder, this.CreateTenantPolicy, cancellationToken).ConfigureAwait(false); return(response); }
/// <inheritdoc/> public async Task <HttpResponseMessage> IsAllowedAccessToTenantHttpResponseAsync(AclCheckRequest request, Guid tenantId, CancellationToken cancellationToken = default) { IHttpRequestMessageBuilder requestBuilder = UrlBuilder .Create("tenants/{tenantId}/acl/check") .ReplaceToken("{tenantId}", tenantId) .ToRequest() .WithHttpMethod().Post() .WithContentJson(request) .WithAcceptApplicationJson(); requestBuilder = await this.PreviewIsAllowedAccessToTenantAsync(requestBuilder, cancellationToken).ConfigureAwait(false); HttpResponseMessage response = await this.SendRequestWithPolicy(requestBuilder, this.IsAllowedAccessToTenantPolicy, cancellationToken).ConfigureAwait(false); return(response); }
/// <inheritdoc/> public async Task <HttpResponseMessage> CreateWebhookHttpResponseAsync(Guid formId, CreateWebhookRequest request, Guid tenantId, CancellationToken cancellationToken = default) { IHttpRequestMessageBuilder requestBuilder = UrlBuilder .Create("tenants/{tenantId}/forms/{formId}/webhooks") .ReplaceToken("{tenantId}", tenantId) .ReplaceToken("{formId}", formId) .ToRequest() .WithHttpMethod().Post() .WithAcceptApplicationJson(); requestBuilder = await this.PreviewCreateWebhookAsync(requestBuilder, cancellationToken).ConfigureAwait(false); HttpResponseMessage response = await this.SendRequestWithPolicy(requestBuilder, this.CreateWebhookPolicy, cancellationToken).ConfigureAwait(false); return(response); }
/// <inheritdoc/> public async Task <HttpResponseMessage> GetSubmissionAttachmentHttpResponseAsync(Guid formId, Guid submissionId, string attachmentName, Guid tenantId, CancellationToken cancellationToken = default) { IHttpRequestMessageBuilder requestBuilder = UrlBuilder .Create("tenants/{tenantId}/forms/{formId}/submissions/{submissionId}/attachments/{attachmentName}") .ReplaceToken("{tenantId}", tenantId) .ReplaceToken("{formId}", formId) .ReplaceToken("{submissionId}", submissionId) .ReplaceToken("{attachmentName}", attachmentName) .ToRequest() .WithHttpMethod().Get() .WithAcceptApplicationJson(); requestBuilder = await this.PreviewGetSubmissionAttachmentAsync(requestBuilder, cancellationToken).ConfigureAwait(false); HttpResponseMessage response = await this.SendRequestWithPolicy(requestBuilder, this.GetSubmissionAttachmentPolicy, cancellationToken).ConfigureAwait(false); return(response); }
/// <inheritdoc/> public async Task <HttpResponseMessage> SubmitFormHttpResponseAsync(Guid formId, IEnumerable <KeyValuePair <string, string> > fields, IEnumerable <KeyValuePair <string, HttpFile> > attachments, Guid tenantId, CancellationToken cancellationToken = default) { IHttpRequestMessageBuilder requestBuilder = UrlBuilder .Create("tenants/{tenantId}/forms/{formId}/submissions") .ReplaceToken("{tenantId}", tenantId) .ReplaceToken("{formId}", formId) .ToRequest() .WithHttpMethod().Post() .WithAcceptApplicationJson(); IMultipartFormContentBuilder contentBuilder = requestBuilder.WithMultipartFormContent(); if (fields != null) { foreach (KeyValuePair <string, string> field in fields) { contentBuilder = contentBuilder.WithString(field.Key, field.Value); } } if (attachments != null) { foreach (KeyValuePair <string, HttpFile> attachment in attachments) { HttpFile file = attachment.Value; if (file == null) { throw new ArgumentOutOfRangeException(nameof(attachments), Properties.Resources.NullAttachmentErrorMessage); } contentBuilder = contentBuilder.WithFile(attachment.Key, file.Data, file.FileName, file.ContentType); } } requestBuilder = await this.PreviewSubmitFormAsync(requestBuilder, cancellationToken).ConfigureAwait(false); HttpResponseMessage response = await this.SendRequestWithPolicy(requestBuilder, this.SubmitFormPolicy, cancellationToken).ConfigureAwait(false); return(response); }
/// <summary> /// Optional method for configurings the HttpRequestMessage before sending the call to RemoveAccessToTenant. /// </summary> /// <param name="httpRequestMessageBuilder">The IHttpRequestMessageBuilder.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> /// <returns>The updated IHttpRequestMessageBuilder.</returns> protected virtual Task <IHttpRequestMessageBuilder> PreviewRemoveAccessToTenantAsync(IHttpRequestMessageBuilder httpRequestMessageBuilder, CancellationToken cancellationToken = default) { return(Task.FromResult(httpRequestMessageBuilder)); }
/// <summary> /// Optional method for configuring the HttpRequestMessage before sending the call to GetSubmissionAttachment. /// </summary> /// <param name="httpRequestMessageBuilder">The IHttpRequestMessageBuilder.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> /// <returns>The updated IHttpRequestMessageBuilder.</returns> protected virtual Task <IHttpRequestMessageBuilder> PreviewGetSubmissionAttachmentAsync(IHttpRequestMessageBuilder httpRequestMessageBuilder, CancellationToken cancellationToken = default) { return(Task.FromResult(httpRequestMessageBuilder)); }