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);
}
}