Example #1
0
        public async Task <bool> CopyBlobAsync(IZeroBlob original)
        {
            var azureBlobOriginal = original as AzureBlob;
            var originalExists    = await original.ExistsAsync();

            if (azureBlobOriginal == null || !originalExists)
            {
                return(false);
            }
            await Blob.StartCopyAsync(azureBlobOriginal.Blob);

            while (Blob.CopyState.Status == CopyStatus.Pending)
            {
                await Task.Delay(100);
            }
            if (Blob.CopyState.Status != CopyStatus.Success)
            {
                return(false);
            }
            var type = await azureBlobOriginal.GetContentTypeAsync();

            await SetContentTypeAsync(type);

            return(true);
        }
Example #2
0
        public async Task <MediaEncodeProgressDto> GetEncodeProgressAsync(string jobName, IZeroBlob resultingFile)
        {
            var job = await _client.Jobs.GetAsync(_settings.ResourceGroup, _settings.AccountName, _settings.MediaServicesTransform, jobName);

            if (job == null)
            {
                return(new MediaEncodeProgressDto
                {
                    Status = EncodeStatus.NotFound,
                    ProgressPercentage = 0,
                    Errors = "Not found"
                });
            }
            var status      = ConvertToEncodeStatus(job.State);
            var firstOutput = job.Outputs.FirstOrDefault() as JobOutputAsset;

            switch (status)
            {
            case EncodeStatus.Processing:
                return(new MediaEncodeProgressDto
                {
                    Status = status,
                    ProgressPercentage = firstOutput.Progress
                });

            case EncodeStatus.Finished:
                var exists = await resultingFile.ExistsAsync();

                var size = await resultingFile.GetSizeAsync();

                if (exists && size < 1)
                {
                    status = EncodeStatus.Copying;
                }
                return(new MediaEncodeProgressDto
                {
                    Status = status
                });

            case EncodeStatus.Error:
                return(new MediaEncodeProgressDto
                {
                    Status = status,
                    ProgressPercentage = firstOutput?.Progress ?? 0,
                    Errors = firstOutput == null ? string.Empty : string.Concat(firstOutput.Error.Details.Select(ed => ed.Message))
                });

            default:
                return(new MediaEncodeProgressDto
                {
                    Status = status
                });
            }
        }