private async Task UpdateResponse()

in certified-connectors/SurveyMonkey/script.csx [185:225]


    private async Task UpdateResponse(HttpResponseMessage response)
    {
        var query = HttpUtility.ParseQueryString(this.Context.OriginalRequestUri.Query);
        var triggerState = query.Get("triggerstate");
        if (!String.IsNullOrEmpty(triggerState))
        {
            triggerState = DateTime.Parse(triggerState).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
        }
        var excludeIds = string.Empty;

        if ("OnSurveyCreated".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase) ||
            "OnNewResponseAddedCollector".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase) ||
            "OnNewResponseAddedSurvey".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase) ||
            "OnSurveyCollectorCreated".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase))
        {
            response.Headers.RetryAfter = new RetryConditionHeaderValue(TimeSpan.FromSeconds(60));
            var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
            var body = JObject.Parse(content);
            var newItems = body.SelectToken("data") as JArray;

            if ("OnNewResponseAddedCollector".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase) ||
                "OnNewResponseAddedSurvey".Equals(this.Context.OperationId, StringComparison.OrdinalIgnoreCase))
            {
                newItems = GetNewItems(newItems);
                var triggerStates = SetTriggerState(newItems, triggerState, response.Headers?.Date.ToString());
                triggerState = triggerStates.Split('|')[0];
                excludeIds = triggerStates.Split('|')[1];
            }
            if (newItems != null && newItems.HasValues)
            {
                response.Content = new StringContent(newItems.ToString(), Encoding.UTF8, "application/json");
                response.StatusCode = HttpStatusCode.OK;
            }
            else
            {
                response.Content = null;
                response.StatusCode = HttpStatusCode.Accepted;
            }
            response.Headers.Location = SetLocationHeader(triggerState, excludeIds);
        }
    }