private async Task UpdateRequest()

in certified-connectors/DocuSign/script.csx [342:433]


    private async Task UpdateRequest()
    {
        await this.UpdateApiEndpoint().ConfigureAwait(false);

        if ("SendDraftEnvelope".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase))
        {
            this.Context.Request.Content = new StringContent("{ \"status\": \"sent\" }", Encoding.UTF8, "application/json");
        }

        if ("CreateHookEnvelope".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase))
        {
            await this.TransformRequestJsonBody(this.CreateHookEnvelopeBodyTransformation).ConfigureAwait(false);
        }

        if ("CreateBlankEnvelope".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase))
        {
            await this.TransformRequestJsonBody(this.CreateBlankEnvelopeBodyTransformation).ConfigureAwait(false);
        }

        if ("CreateEnvelopeFromTemplate".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase))
        {
            await this.TransformRequestJsonBody(this.CreateEnvelopeFromTemplateBodyTransformation).ConfigureAwait(false);
        }

        if ("AddRecipientToEnvelope".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase))
        {
            await this.TransformRequestJsonBody(this.AddRecipientToEnvelopeBodyTransformation).ConfigureAwait(false);
        }

        if ("RemoveRecipientFromEnvelope".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase))
        {
            var newBody = new JObject();
            var query = HttpUtility.ParseQueryString(this.Context.Request.RequestUri.Query);
            newBody["signers"] = new JArray
            {
                new JObject
                {
                    ["recipientId"] = Uri.UnescapeDataString(query.Get("RemoveRecipientFromEnvelopeRecipientId")).Replace("+", " "),
                },
            };

            this.Context.Request.Content = CreateJsonContent(newBody.ToString());
        }

        if ("OnEnvelopeStatusChanges".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase))
        {
            var uriBuilder = new UriBuilder(this.Context.Request.RequestUri);
            var query = HttpUtility.ParseQueryString(this.Context.Request.RequestUri.Query);
            uriBuilder.Path = uriBuilder.Path.Replace("/trigger/accounts/", "/accounts/");
            var filterValue = query.Get("triggerState");
            if (string.IsNullOrEmpty(filterValue))
            {
                // initial trigger state to get existing items
                filterValue = DateTimeOffset.UtcNow.AddDays(-1).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
            }
            else
            {
                // remove triggerState
                query.Remove("triggerState");
            }

            query["from_date"] = filterValue;
            uriBuilder.Query = query.ToString();
            this.Context.Request.RequestUri = uriBuilder.Uri;
        }

        if ("GetDynamicSigners".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase))
        {
            var uriBuilder = new UriBuilder(this.Context.Request.RequestUri);
            uriBuilder.Path = uriBuilder.Path.Replace("/signers/accounts/", "/accounts/");
            this.Context.Request.RequestUri = uriBuilder.Uri;
        }

        if ("GetLoginAccounts".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase))
        {
            var uriBuilder = new UriBuilder(this.Context.Request.RequestUri);
            var query = HttpUtility.ParseQueryString(this.Context.Request.RequestUri.Query);
            query["include_account_id_guid"] = "true";
            uriBuilder.Query = query.ToString();
            this.Context.Request.RequestUri = uriBuilder.Uri;
        }

        // update Accept Header
        this.Context.Request.Headers.Accept.Clear();
        var acceptHeaderValue = "application/json";
        if ("GetDocuments".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase))
        {
            acceptHeaderValue = "application/pdf";
        }

        this.Context.Request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptHeaderValue));
    }