Esempio n. 1
0
        private IMediaService GetMediaService(MediaResourceCreateCommand command)
        {
            if (command.Type == "file")
            {
                var mediaType = MediaTypeUtility.GetMediaTypeInfoForMimeType(command.FileMimeType).MediaType;

                if (mediaType == "image")
                {
                    return(_mediaServiceFactory.CreateImageService());
                }
                if (mediaType == "audio")
                {
                    return(_mediaServiceFactory.CreateAudioService());
                }
            }
            else if (command.Type == "externalvideo")
            {
                if (command.VideoProviderName.ToLower() == "youtube")
                {
                    return(_mediaServiceFactory.CreateYouTubeVideoService());
                }
                if (command.VideoProviderName.ToLower() == "vimeo")
                {
                    return(_mediaServiceFactory.CreateVimeoVideoService());
                }
            }

            throw new ArgumentException(string.Format("A media service could not be found for the specified type '{0}'.", command.Type));
        }
Esempio n. 2
0
        public void CanGetMediaTypes()
        {
            var type = MediaTypeUtility.GetTypeBuilder().CreateType();

            var typeService = GetTypeService(type);

            var mediaTypes = typeService.MediaTypes;

            Assert.AreEqual(1, mediaTypes.Count);
        }
Esempio n. 3
0
        public void CannotGetAbstractMediaTypes()
        {
            var type = MediaTypeUtility.GetTypeBuilder(TypeAttributes.Abstract).CreateType();

            var typeService = GetTypeService(type);

            var mediaTypes = typeService.MediaTypes;

            Assert.IsFalse(mediaTypes.Any());
        }
Esempio n. 4
0
        public void CanGetMediaTypes()
        {
            var type = MediaTypeUtility.GetTypeBuilder().CreateType();

            var typeServiceMock = GetTypeServiceMock(type);

            var typeResolver = new TypeResolver(typeServiceMock.Object);

            var mediaTypes = typeResolver.MediaTypes;

            Assert.AreEqual(1, mediaTypes.Count);
        }
Esempio n. 5
0
        public void CannotGetMediaTypesWithoutPublicDefaultConstructor()
        {
            var typeBuilder = MediaTypeUtility.GetTypeBuilder();

            typeBuilder.DefineDefaultConstructor(MethodAttributes.Private);

            var type = typeBuilder.CreateType();

            var typeService = GetTypeService(type);

            var mediaTypes = typeService.MediaTypes;

            Assert.IsFalse(mediaTypes.Any());
        }
Esempio n. 6
0
        public void CanGetMediaForValidMediaType()
        {
            var type = MediaTypeUtility.GetTypeBuilder().CreateType();

            var contentMock = new Mock <IPublishedContent>();

            contentMock.Setup(m => m.Properties).Returns(new List <IPublishedProperty>());

            var service = new MediaService(new Mock <IUmbracoHelperWrapper>().Object);

            var media = service.GetMedia(contentMock.Object, type);

            Assert.IsNotNull(media);
        }
        private string GetSupportedMimeType(Stream stream, string filename, string mimeType)
        {
            string       foundMimeType = string.Empty;
            ImageUtility image;
            AudioUtility audio;

            if (ImageUtility.TryLoad(stream, out image))
            {
                foundMimeType = image.GetMimeType();
            }
            else if (AudioUtility.TryLoad(stream, filename, mimeType, out audio))
            {
                foundMimeType = audio.GetMimeType();
            }

            return(MediaTypeUtility.GetStandardMimeTypeForMimeType(foundMimeType));
        }
Esempio n. 8
0
        public bool Save(MediaResourceCreateCommand command, User createdByUser, out string failureReason, out MediaResource mediaResource)
        {
            failureReason = string.Empty;
            mediaResource = null;

            if (!_documentSession.Load <AppRoot>(Constants.AppRootId).AudioServiceStatus)
            {
                failureReason = "Audio files cannot be uploaded at the moment. Please try again later.";
                return(false);
            }

            bool returnValue;

            try
            {
                var audio = AudioUtility.Load(command.FileStream, command.FileName, command.FileMimeType);

                mediaResource = _mediaResourceFactory.MakeContributionAudio(
                    command.Key,
                    createdByUser,
                    command.UploadedOn,
                    command.FileName,
                    new Object(),
                    command.FileMimeType,
                    GetAudioMetadata(audio));

                string filePath = _mediaFilePathFactory.MakeMediaFilePath(mediaResource.Id, "Original", MediaTypeUtility.GetStandardExtensionForMimeType(command.FileMimeType));

                audio.SaveAs(filePath);

                returnValue = true;
            }
            catch (Exception exception)
            {
                _logger.ErrorException("Error saving audio", exception);

                failureReason = "The file is corrupted or not a valid audio file and could not be saved. Please check the file and try again.";
                returnValue   = false;
            }

            return(returnValue);
        }
        public bool Save(MediaResourceCreateCommand command, User createdByUser, out string failureReason, out MediaResource mediaResource)
        {
            failureReason = string.Empty;
            mediaResource = null;

            if (!_documentSession.Load <AppRoot>(Constants.AppRootId).VimeoVideoServiceStatus)
            {
                failureReason = "Vimeo video files cannot be imported at the moment. Please try again later.";
                return(false);
            }

            bool returnValue;

            try
            {
                string apiUri = string.Format(_apiUriFormat, command.VideoId);

                dynamic data = GetVideoDataFromApi(apiUri);

                // Get thumbnail URI
                var thumbnailUri = (string)data[0]["thumbnail_large"];
                var videoWidth   = (int)data[0]["width"];
                var videoHeight  = (int)data[0]["height"];

                var imageCreationTasks = new List <ImageCreationTask>();

                using (var stream = new MemoryStream(new WebClient().DownloadData(thumbnailUri)))
                {
                    var image = ImageUtility.Load(stream);

                    mediaResource = _mediaResourceFactory.MakeContributionExternalVideo(
                        command.Key,
                        createdByUser,
                        command.UploadedOn,
                        string.Format(_uriFormat, command.VideoId),
                        "vimeo",
                        data,
                        command.VideoId,
                        ImageDimensions.MakeRectangle(videoWidth, videoHeight),
                        thumbnailUri,
                        image.GetDimensions(),
                        MediaTypeUtility.GetStandardMimeTypeForMimeType(image.GetMimeType()),
                        GetVideoMetadata(data, command.VideoId),
                        imageCreationTasks);

                    image.Save(mediaResource, imageCreationTasks, _mediaFilePathFactory);

                    image.Cleanup();
                }

                returnValue = true;
            }
            catch (Exception exception)
            {
                _logger.ErrorException("Error saving video", exception);

                failureReason = "The video cannot be retrieved from Vimeo. Please check the video and try again.";
                returnValue   = false;
            }

            return(returnValue);
        }
Esempio n. 10
0
 private string MakeUri(MediaResource mediaResource, string storedRepresentation, string mimeType)
 {
     return(_mediaFilePathFactory.MakeRelativeMediaFileUri(mediaResource.Id, storedRepresentation, MediaTypeUtility.GetStandardExtensionForMimeType(mimeType)));
 }
Esempio n. 11
0
        public MediaResource MakeContributionAudio(
            string key,
            User createdByUser,
            DateTime createdOn,
            string originalFileName,
            object id3Data,
            string standardMimeType,
            Dictionary <string, string> metadata)
        {
            var mediaResource = new AudioMediaResource(Constants.MediaResourceTypes.Audio, createdByUser, createdOn, key, metadata);

            _documentSession.Store(mediaResource);
            _documentSession.SaveChanges();

            var avatarUri    = @"/img/audio-avatar.png";
            var audioFileUri = _mediaFilePathFactory.MakeRelativeMediaFileUri(mediaResource.Id, "Original", MediaTypeUtility.GetStandardExtensionForMimeType(standardMimeType));

            mediaResource.Audio.Original       = MakeOriginalAudioFile(standardMimeType);
            mediaResource.Audio.Square50       = MakeDerivedMediaResourceFile(avatarUri, ImageDimensions.MakeSquare(100).Width, ImageDimensions.MakeSquare(100).Height);
            mediaResource.Audio.Square100      = MakeDerivedMediaResourceFile(avatarUri, ImageDimensions.MakeSquare(200).Width, ImageDimensions.MakeSquare(200).Height);
            mediaResource.Audio.Square200      = MakeDerivedMediaResourceFile(avatarUri, ImageDimensions.MakeSquare(400).Width, ImageDimensions.MakeSquare(400).Height);
            mediaResource.Audio.Constrained240 = MakeDerivedMediaResourceFile(audioFileUri, 100, 100);
            mediaResource.Audio.Constrained480 = MakeDerivedMediaResourceFile(audioFileUri, 200, 200);
            mediaResource.Audio.Constrained600 = MakeDerivedMediaResourceFile(audioFileUri, 400, 400);
            mediaResource.Audio.Full640        = MakeDerivedMediaResourceFile(audioFileUri, 640, 480);
            mediaResource.Audio.Full800        = MakeDerivedMediaResourceFile(audioFileUri, 800, 600);
            mediaResource.Audio.Full1024       = MakeDerivedMediaResourceFile(audioFileUri, 1024, 768);

            return(mediaResource);
        }
        public bool Save(MediaResourceCreateCommand command, User createdByUser, out string failureReason, out MediaResource mediaResource)
        {
            failureReason = string.Empty;
            mediaResource = null;

            if (!_documentSession.Load <AppRoot>(Constants.AppRootId).YouTubeVideoServiceStatus)
            {
                failureReason = "Youtube video files cannot be imported at the moment. Please try again later.";
                return(false);
            }

            bool returnValue;

            try
            {
                string apiUri = string.Format(_apiUriFormat, command.VideoId);

                JObject data = GetVideoDataFromApi(apiUri);

                // Get thumbnail URI
                var mediaThumbnails = data["entry"]["media$group"]["media$thumbnail"];
                var mediaThumbnail  = mediaThumbnails.Single(x => (string)x["yt$name"] == "hqdefault");
                var thumbnailUri    = (string)mediaThumbnail["url"];

                var imageCreationTasks = new List <ImageCreationTask>();

                using (var stream = new MemoryStream(new WebClient().DownloadData(thumbnailUri)))
                {
                    var image = ImageUtility.Load(stream);

                    mediaResource = _mediaResourceFactory.MakeContributionExternalVideo(
                        command.Key,
                        createdByUser,
                        command.UploadedOn,
                        string.Format(_uriFormat, command.VideoId),
                        "youtube",
                        data,
                        command.VideoId,
                        ImageDimensions.MakeRectangle(1024, 576), // As at 08/2012, Youtube states that videos are encoded in 16:9 ratio. 1024x576px is the max size we present in Bowerbird at that ratio
                        thumbnailUri,
                        image.GetDimensions(),
                        MediaTypeUtility.GetStandardMimeTypeForMimeType(image.GetMimeType()),
                        GetVideoMetadata(data, command.VideoId),
                        imageCreationTasks);

                    image.Save(mediaResource, imageCreationTasks, _mediaFilePathFactory);

                    image.Cleanup();
                }

                returnValue = true;
            }
            catch (Exception exception)
            {
                _logger.ErrorException("Error saving video", exception);

                failureReason = "The video cannot be retrieved from Youtube. Please check the video and try again.";
                returnValue   = false;
            }

            return(returnValue);
        }