public static async Task AuditContentUri([QueueTrigger("auditcontenturi", Connection = "AzureWebJobsStorage")] AuditContentQueue auditContentQueue, ExecutionContext exCtx, ILogger log) { log.LogInformation($"Reading in Audit ContentQueue for : {auditContentQueue.ContentType} Tenant: {auditContentQueue.TenantID} ContentUri:{auditContentQueue.ContentUri} "); //GetLogs string token = await AcquireTokenForApplication(); var uri = auditContentQueue.ContentUri; do { uri = uri.Contains("?") ? $"{uri}&PublisherIdentifier={auditContentQueue.TenantID}" : $"{uri}?PublisherIdentifier={auditContentQueue.TenantID}"; log.LogInformation($"URL:{uri}"); var results = await RestAPI.GetRestDataAsync(uri, token); var array = JArray.Parse(results.RestResponse); foreach (var logEntry in array) { log.LogInformation(logEntry.ToString()); } //var jquery2 = new JArray(array.SelectTokens("$.[?(@.RecordType == 25 && @.Operation == 'ChannelAdded' && @.ChannelType == 'Private')]")); uri = results.WebHeaderCollections.Get("NextPageUri"); } while (uri != null); }
public static async Task <HttpResponseMessage> AuditWebHookTrigger([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage req, ILogger log) { log.LogInformation("Audit webhook triggered"); string stringvalue = await req.Content.ReadAsStringAsync(); log.LogInformation($"Req.Content {stringvalue}"); try { log.LogInformation("Getting validation code"); dynamic data = await req.Content.ReadAsAsync <object>(); string validationToken = data.validationCode.ToString(); log.LogInformation($"Validation Token: {validationToken} received"); HttpResponseMessage response = req.CreateResponse(HttpStatusCode.OK); response.Content = new StringContent(validationToken); return(response); } catch (Exception) { log.LogInformation("No ValidationCode, therefore process WebHook as content"); } log.LogInformation($"Audit Logs triggered the webhook"); string content = await req.Content.ReadAsStringAsync(); log.LogInformation($"Received following payload: {content}"); List <AuditContentEntity> auditContents = JsonConvert.DeserializeObject <List <AuditContentEntity> >(content); foreach (var auditcontent in auditContents) { if (AuditContentUriQueue == null) { string cloudStorageAccountConnectionString = System.Environment.GetEnvironmentVariable("AzureWebJobsStorage", EnvironmentVariableTarget.Process); CloudStorageAccount storageAccount = CloudStorageAccount.Parse(cloudStorageAccountConnectionString); CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); AuditContentUriQueue = queueClient.GetQueueReference("auditcontenturi"); await AuditContentUriQueue.CreateIfNotExistsAsync(); } log.LogInformation($"Content Queue Message: {auditcontent.ContentUri}"); AuditContentQueue acq = new AuditContentQueue { ContentType = auditcontent.ContentType, ContentUri = auditcontent.ContentUri, TenantID = auditcontent.TenantId }; string message = JsonConvert.SerializeObject(acq); log.LogInformation($"Adding a message to the queue. Message content: {message}"); await AuditContentUriQueue.AddMessageAsync(new CloudQueueMessage(message)); log.LogInformation($"Message added"); } return(new HttpResponseMessage(HttpStatusCode.OK)); }