コード例 #1
0
ファイル: FormsClient.cs プロジェクト: rixian/forms
        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);
                }
            }
        }
コード例 #2
0
        public void ModifyAndSet_Throws_Argument_Null_Exception_For_Builder()
        {
            IHttpRequestMessageBuilder builder = null;
            Action testCode = () => builder.ConfigureRequest(req => req);

            testCode.Should().Throw <ArgumentNullException>();
        }
コード例 #3
0
ファイル: IamClient.cs プロジェクト: rixian/iam
        /// <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);
        }
コード例 #4
0
ファイル: IamClient.cs プロジェクト: rixian/iam
        /// <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);
        }
コード例 #5
0
ファイル: IamClient.cs プロジェクト: rixian/iam
        /// <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);
        }
コード例 #6
0
ファイル: IamClient.cs プロジェクト: rixian/iam
        /// <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);
        }
コード例 #7
0
ファイル: FormsClient.cs プロジェクト: rixian/forms
        /// <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);
        }
コード例 #8
0
ファイル: FormsClient.cs プロジェクト: rixian/forms
        /// <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);
        }
コード例 #9
0
ファイル: FormsClient.cs プロジェクト: rixian/forms
        /// <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);
        }
コード例 #10
0
ファイル: IamClient.cs プロジェクト: rixian/iam
 /// <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));
 }
コード例 #11
0
ファイル: FormsClient.cs プロジェクト: rixian/forms
 /// <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));
 }