public static async Task <object> Run([HttpTrigger(WebHookType = "genericJson")] HttpRequestMessage req, TraceWriter log) { string notificationMessage = await req.Content.ReadAsStringAsync(); log.Info($"Notification Message: {notificationMessage}"); if (!string.IsNullOrEmpty(notificationMessage)) { MediaJobNotification jobNotification = JsonConvert.DeserializeObject <MediaJobNotification>(notificationMessage); if (jobNotification != null) { MediaPublish contentPublish = EnqueuePublish(jobNotification); log.Info($"Content Publish: {JsonConvert.SerializeObject(contentPublish)}"); } } return(req.CreateResponse(HttpStatusCode.OK)); }
public void PublishMediaJob([FromBody] bool poisonQueue) { string settingKey = Constants.AppSettingKey.MediaJobNotificationStorageQueueName; string queueName = AppSetting.GetValue(settingKey); if (poisonQueue) { queueName = string.Concat(queueName, Constants.Storage.Queue.PoisonSuffix); } string messageId, popReceipt; MessageClient messageClient = new MessageClient(); string queueMessage = messageClient.GetMessage(queueName, out messageId, out popReceipt); MediaJobNotification jobNotification = Newtonsoft.Json.JsonConvert.DeserializeObject <MediaJobNotification>(queueMessage); if (jobNotification != null) { MediaClient.PublishJob(jobNotification, false); messageClient.DeleteMessage(queueName, messageId, popReceipt); } }
private static MediaPublish EnqueuePublish(MediaJobNotification jobNotification) { MediaPublish contentPublish = null; if (jobNotification.EventType == MediaJobNotificationEvent.JobStateChange && jobNotification.Properties.OldState == MediaJobState.Processing && jobNotification.Properties.NewState == MediaJobState.Finished) { TableClient tableClient = new TableClient(); string tableName = Constant.Storage.Table.ContentPublish; string partitionKey = jobNotification.Properties.AccountName; string rowKey = jobNotification.Properties.JobId; contentPublish = tableClient.GetEntity <MediaPublish>(tableName, partitionKey, rowKey); if (contentPublish != null) { string settingKey = Constant.AppSettingKey.MediaPublishContentQueue; string queueName = AppSetting.GetValue(settingKey); QueueClient queueClient = new QueueClient(); queueClient.AddMessage(queueName, contentPublish); } } return(contentPublish); }