コード例 #1
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            myRequest = (ButlerProcessRequest)request;
            Setup();
            _MediaServiceContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey);
            IAsset encodedAsset = (from m in _MediaServiceContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault();

            //Create key
            IContentKey key = CreateEnvelopeTypeContentKey(encodedAsset);
            //Create Token Template
            string tokenTemplateString = AddTokenRestrictedAuthorizationPolicy(key);

            Trace.TraceInformation("Added authorization policy: {0}", key.AuthorizationPolicyId);
            //create Delivery Policy
            CreateAssetDeliveryPolicy(encodedAsset, key);

            if (!String.IsNullOrEmpty(tokenTemplateString))
            {
                // Deserializes a string containing an Xml representation of a TokenRestrictionTemplate
                // back into a TokenRestrictionTemplate class instance.
                TokenRestrictionTemplate tokenTemplate = TokenRestrictionTemplateSerializer.Deserialize(tokenTemplateString);

                // Generate a test token based on the data in the given TokenRestrictionTemplate.
                // Note, you need to pass the key id Guid because we specified
                // TokenClaim.ContentKeyIdentifierClaim in during the creation of TokenRestrictionTemplate.
                Guid   rawkey    = EncryptionUtils.GetKeyIdAsGuid(key.Id);
                string testToken = TokenRestrictionTemplateSerializer.GenerateTestToken(tokenTemplate, null, rawkey);
                Trace.TraceInformation("The authorization token is:\n{0}", testToken);
                myRequest.Log.Add("The authorization token");
                myRequest.Log.Add(testToken);
                myRequest.Log.Add("");
            }
        }
コード例 #2
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            myRequest            = (ButlerProcessRequest)request;
            _MediaServiceContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey);

            var locator = CreateStreamingLocator(myRequest.AssetId);
        }
コード例 #3
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            //My request
            myRequest = (ButlerProcessRequest)request;
            //Media Context
            _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey);
            //0 Encoding Helper
            myEncodigSupport = new EncoderSupport(_MediaServicesContext);
            //1. Storage Manager
            myStorageManager = BlobManagerFactory.CreateBlobManager(myRequest.ProcessConfigConn);
            //2. Load Original Asset (current on context)
            myAssetOriginal = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault();

            if (IdenpotenceControl())
            {
                ConvertMP4toSmooth(myAssetOriginal);
            }
            else
            {
                //Job Just wait for finish the current job
                myEncodigSupport.OnJobError += MyEncodigSupport_OnJobError;
                myEncodigSupport.JobUpdate  += MyEncodigSupport_JobUpdate;
                myEncodigSupport.WaitJobFinish(currentJob.Id);
            }
            //Update AssetID
            myRequest.AssetId = currentJob.OutputMediaAssets.FirstOrDefault().Id;
        }
コード例 #4
0
        public override void HandleCompensation(Common.workflow.ChainRequest request)
        {
            myRequest = (ButlerProcessRequest)request;
            string errorTxt = string.Format("[{0}] process Type {1} instance {2} has not compensation method", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId);

            Trace.TraceWarning(errorTxt);
        }
コード例 #5
0
 public override void HandleExecute(Common.workflow.ChainRequest request)
 {
     //Custome Request
     myRequest = (ButlerProcessRequest)request;
     //Media context
     MediaContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey);
     if (IdenpotenceControl())
     {
         //Create empty asset
         currentAsset = CreateAsset();
         //Update Asset Id in the process context
         myRequest.AssetId = currentAsset.Id;
         //Ingest all Mezzamine File to asset
         IngestAssets();
         //Set MP4 as primary
         setPrimaryFile();
         //mark for idenpotence
         myRequest.MetaData.Add(this.GetType() + "_" + myRequest.ProcessInstanceId, myRequest.AssetId);
     }
     else
     {
         string txtMessage = string.Format("{0} IdenpotenceControl {1} instanceID {2} was trigger, not ingest Files", this.GetType(), myRequest.ProcessTypeId, myRequest.ProcessInstanceId);
         Trace.TraceInformation(txtMessage);
         myRequest.AssetId = myRequest.MetaData[this.GetType() + "_" + myRequest.ProcessInstanceId];
     }
 }
コード例 #6
0
 public override void HandleExecute(Common.workflow.ChainRequest request)
 {
     myRequest = (ButlerProcessRequest)request;
     Setup();
     //Add index info to request LOG, sas access to all Files (index output files)
     LogInfo();
 }
コード例 #7
0
        public override void HandleCompensation(Common.workflow.ChainRequest request)
        {
            myRequest = (ButlerProcessRequest)request;
            string txtTrace;

            if (currentJob != null)
            {
                foreach (IAsset item in currentJob.OutputMediaAssets)
                {
                    txtTrace = string.Format("[{0}] process Type {1} instance {2} deleted Asset id={3}", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, item.Id);
                    item.Delete();
                    Trace.TraceWarning(txtTrace);
                }
            }
            if (myAssetOriginal != null)
            {
                txtTrace = string.Format("[{0}] process Type {1} instance {2} deleted Asset id={3}", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, myAssetOriginal.Id);

                myAssetOriginal.Delete();
                Trace.TraceWarning(txtTrace);
            }

            if ((myWorkflow != null) && (string.IsNullOrEmpty(myConfig.AssetWorkflowID)))
            {
                txtTrace = string.Format("[{0}] process Type {1} instance {2} deleted Asset id={3}", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, myWorkflow.Id);
                myWorkflow.Delete();
                Trace.TraceWarning(txtTrace);
            }
        }
コード例 #8
0
 public override void HandleExecute(Common.workflow.ChainRequest request)
 {
     myRequest            = (ButlerProcessRequest)request;
     _MediaServiceContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey);
     StorageManager       = BlobManagerFactory.CreateBlobManager(myRequest.ProcessConfigConn);
     buildlocator();
 }
コード例 #9
0
 public override void HandleCompensation(Common.workflow.ChainRequest request)
 {
     if (targetAsset != null)
     {
         string txtTrace = string.Format("[{0}] process Type {1} instance {2} Compensation deleted Asset id={3}", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, targetAsset.Id);
         targetAsset.Delete();
         Trace.TraceWarning(txtTrace);
     }
 }
コード例 #10
0
 public override void HandleExecute(Common.workflow.ChainRequest request)
 {
     myRequest             = (ButlerProcessRequest)request;
     _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey);
     myWaterMarkData       = Newtonsoft.Json.JsonConvert.DeserializeObject <WaterMarkData>(this.readJsonControl());
     myAssetOriginal       = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault();
     SetPrimaryAssetFile();
     myRequest.AssetId = WaterMArkJob().Id;
 }
コード例 #11
0
 public override void HandleExecute(Common.workflow.ChainRequest request)
 {
     //Butler Request
     myRequest = (ButlerProcessRequest)request;
     //Setup Step
     Setup();
     //Trigger Replica
     TriggerReplica();
 }
コード例 #12
0
 public override void HandleExecute(Common.workflow.ChainRequest request)
 {
     myRequest = (ButlerProcessRequest)request;
     Setup();
     ProcessReplica();
     //Update Default Asset ID
     myRequest.AssetId = targetAsset.Id;
     //Change defualt AMS to Target AMS for the rest of the process
     myRequest.ChangeMediaServices(myConfig.TargetAMSName, myConfig.TargetAMSKey, myConfig.TargetAMSStorageConn);
 }
コード例 #13
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            myRequest = (ButlerProcessRequest)request;
            Setup();
            //Run index job
            IJob xJob = RunIndexingJob();

            //Update the asset ID with the Id of output asset.
            myRequest.AssetId = xJob.OutputMediaAssets.FirstOrDefault().Id;
        }
コード例 #14
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            myRequest = (ButlerProcessRequest)request;
            Setup();
            IAsset theAsset = _MediaServiceContext.Assets.Where(xx => xx.Id == myRequest.AssetId).FirstOrDefault();

            //Get alternative ID
            theAsset.AlternateId = getAlternativeId();
            //Update theAsset
            theAsset.Update();
        }
コード例 #15
0
 public override void HandleCompensation(Common.workflow.ChainRequest request)
 {
     if (currentAsset != null)
     {
         string id = currentAsset.Id;
         currentAsset.Delete();
         Trace.TraceWarning("{0} HandleCompensation in process {2} processId {1}, with asset deletion assetid {3}", this.GetType().FullName, request.ProcessInstanceId, request.ProcessTypeId, id);
     }
     else
     {
         Trace.TraceWarning("{0} HandleCompensation in process {2} processId {1}, without asset deletion", this.GetType().FullName, request.ProcessInstanceId, request.ProcessTypeId);
     }
 }
コード例 #16
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            myRequest = (ButlerProcessRequest)request;
            //Check and load AMS configuration from step coniguration
            if (string.IsNullOrEmpty(this.StepConfiguration))
            {
                string errorTxt = string.Format("[{0}] process Type {1} instance {2} has not AMS configuration Data", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId);

                throw new Exception(errorTxt);
            }
            myConfig = Newtonsoft.Json.JsonConvert.DeserializeObject <MediaButler.BaseProcess.Replica.ProcessReplicaData>(this.StepConfiguration);
            //Setup AMS target to work.
            myRequest.ChangeMediaServices(myConfig.TargetAMSName, myConfig.TargetAMSKey, myConfig.TargetAMSStorageConn);
        }
コード例 #17
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            myRequest             = (ButlerProcessRequest)request;
            _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey);
            //Setup Step
            Setup();

            myAssetOriginal = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault();
            //set primary file
            SetVideoPrimary();
            //Load the workflow definition
            myWorkflow = getWorkflowAsset();
            //Encode
            myRequest.AssetId = CreateEncodingJob(myWorkflow, myAssetOriginal).Id;
        }
コード例 #18
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            myRequest = (ButlerProcessRequest)request;
            IButlerStorageManager resource = BlobManagerFactory.CreateBlobManager(myRequest.ProcessConfigConn);

            foreach (string url in myRequest.ButlerRequest.MezzanineFiles)
            {
                resource.DeleteBlobFile(url);
                Trace.TraceInformation("{0} in process {1} processId {2} file {3} deleted", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, url);
            }

            if (!string.IsNullOrEmpty(myRequest.ButlerRequest.ControlFileUri))
            {
                resource.DeleteBlobFile(myRequest.ButlerRequest.ControlFileUri);
                Trace.TraceInformation("{0} in process {1} processId {2} file {3} deleted", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId, myRequest.ButlerRequest.ControlFileUri);
            }
        }
コード例 #19
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            myRequest = (ButlerProcessRequest)request;

            Setup();

            IAsset x = _MediaServiceContext.Assets.Where(xx => xx.Id == myRequest.AssetId).FirstOrDefault();

            //Create de ISM file base o the MP4 content
            CreateIsmFile(x);

            // Use Azure Media Packager to validate the files.
            IAsset validatedMP4s = ValidateMultibitrateMP4s(x);

            //Update the Asset ID in the context
            myRequest.AssetId = validatedMP4s.Id;
        }
コード例 #20
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            myRequest            = (ButlerProcessRequest)request;
            _MediaServiceContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey);

            ////Get transcode asset
            //Lista all media parent from current Asset
            IAsset myAsset = (from m in _MediaServiceContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault();

            foreach (IAsset xParent in myAsset.ParentAssets)
            {
                if (xParent.Name.Contains(myRequest.ProcessInstanceId))
                {
                    //Delete parent asset becouse it is part of the Media blutler process instance
                    xParent.Delete();
                }
            }
        }
コード例 #21
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            ButlerProcessRequest myRequest = (ButlerProcessRequest)request;

            Setup();
            if (myRequest.MessageHiddenTaskStatus == TaskStatus.WaitingToRun)
            {
                //Start to hidden the Process trgigger Message
                myRequest.StartMessageHidden(timeSpanMessage, sleepSeconds);
                Trace.TraceInformation("{0}Process type {1} instance {2} start hidden Message {3}",
                                       this.GetType().FullName,
                                       myRequest.ProcessTypeId,
                                       myRequest.ProcessInstanceId,
                                       myRequest.ButlerRequest.MessageId);
                //Read if We have information on ButlerWorkflowstatus
                ButlerWorkflowstatus(myRequest);
            }
            else
            {
                //Hidden is running, now Stop it
                myRequest.StopMessageHidden();
                do
                {
                    System.Threading.Thread.Sleep(1 * 1000);
                } while (myRequest.MessageHiddenTaskStatus != TaskStatus.RanToCompletion);


                Trace.TraceInformation("{0}Process type {1} instance {2} stop hidden Message {3}",
                                       this.GetType().FullName,
                                       myRequest.ProcessTypeId,
                                       myRequest.ProcessInstanceId,
                                       myRequest.ButlerRequest.MessageId);

                //DELETE MESSAGE Butler request
                myRequest.DeleteCurrentMessage();

                Trace.TraceInformation("{0}Process type {1} instance {2} delete Message {3}",
                                       this.GetType().FullName,
                                       myRequest.ProcessTypeId,
                                       myRequest.ProcessInstanceId,
                                       myRequest.ButlerRequest.MessageId);
            }
        }
コード例 #22
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            //Request
            myRequest = (ButlerProcessRequest)request;
            //Media Context
            _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey);
            // Original Asset
            myAssetOriginal = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault();
            //Setup Step
            Setup();
            //Load the workflow definition
            myWorkflow = createWorkflowAsset();
            //Delete workflow from Original Asset
            string fileName = "";

            fileName = myAssetOriginal.AssetFiles.Where(af => af.Name.ToLower().EndsWith(".workflow")).FirstOrDefault().Name;
            myAssetOriginal.AssetFiles.Where(f => f.Name.ToLower() == fileName.ToLower()).FirstOrDefault().Delete();
            //Encode Uisng Premiun Encoder
            myRequest.AssetId = CreateEncodingJob(myWorkflow, myAssetOriginal).Id;
        }
 public override void HandleExecute(Common.workflow.ChainRequest request)
 {
     //Custome Request
     myRequest = (ButlerProcessRequest)request;
     if (IdenpotenceControl())
     {
         //Media context
         MediaContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey);
         //Create empty asset
         currentAsset = CreateAsset();
         //Update Asset Id in the process context
         myRequest.AssetId = currentAsset.Id;
         //Ingest all Mezzamine File to asset
         IngestAssets();
         //mark for idenpotence
         myRequest.MetaData.Add(this.GetType() + "_" + myRequest.ProcessInstanceId, myRequest.AssetId);
     }
     else
     {
         myRequest.AssetId = myRequest.MetaData[this.GetType() + "_" + myRequest.ProcessInstanceId];
     }
 }
コード例 #24
0
        public override void HandleExecute(Common.workflow.ChainRequest request)
        {
            myRequest = (ButlerProcessRequest)request;

            _MediaServicesContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey);
            //0 Helper
            myEncodigSupport = new EncoderSupport(_MediaServicesContext);

            myAssetOriginal = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == myRequest.AssetId).FirstOrDefault();

            if (IdenpotenceControl())
            {
                ConvertMP4toSmooth(myAssetOriginal);
            }
            else
            {
                //Job Just wait for finish the current job
                myEncodigSupport.WaitJobFinish(currentJob.Id);
            }

            //Update AssetID
            myRequest.AssetId = currentJob.OutputMediaAssets.FirstOrDefault().Id;
            myRequest.MetaData.Add(this.GetType() + "_" + myRequest.ProcessInstanceId, currentJob.Id);
        }
コード例 #25
0
 public override void HandleCompensation(Common.workflow.ChainRequest request)
 {
     deleteOutput();
     deleteOtiginalAsset();
 }
コード例 #26
0
 public override void HandleExecute(Common.workflow.ChainRequest request)
 {
     myRequest            = (ButlerProcessRequest)request;
     _MediaServiceContext = new CloudMediaContext(myRequest.MediaAccountName, myRequest.MediaAccountKey);
     buildlocator();
 }
コード例 #27
0
 public override void HandleExecute(Common.workflow.ChainRequest request)
 {
     myRequest = (ButlerProcessRequest)request;
     //Select the asset by name and updtae the request with this AssetID
     SelectMediaAssetbyName();
 }
コード例 #28
0
 public override void HandleExecute(Common.workflow.ChainRequest request)
 {
     myRequest = (ButlerProcessRequest)request;
     SendMail();
 }
コード例 #29
0
 public override void HandleCompensation(Common.workflow.ChainRequest request)
 {
     Trace.TraceWarning("{0} in process {1} processId {2} has not HandleCompensation", this.GetType().FullName, myRequest.ProcessTypeId, myRequest.ProcessInstanceId);
 }
コード例 #30
0
 public override void HandleExecute(Common.workflow.ChainRequest request)
 {
     myRequest = (ButlerProcessRequest)request;
     //Send output info back using ButlerResponse Message LOG
     SendMessage();
 }