Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
        }