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)); }
public void CanGetMediaTypes() { var type = MediaTypeUtility.GetTypeBuilder().CreateType(); var typeService = GetTypeService(type); var mediaTypes = typeService.MediaTypes; Assert.AreEqual(1, mediaTypes.Count); }
public void CannotGetAbstractMediaTypes() { var type = MediaTypeUtility.GetTypeBuilder(TypeAttributes.Abstract).CreateType(); var typeService = GetTypeService(type); var mediaTypes = typeService.MediaTypes; Assert.IsFalse(mediaTypes.Any()); }
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); }
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()); }
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)); }
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); }
private string MakeUri(MediaResource mediaResource, string storedRepresentation, string mimeType) { return(_mediaFilePathFactory.MakeRelativeMediaFileUri(mediaResource.Id, storedRepresentation, MediaTypeUtility.GetStandardExtensionForMimeType(mimeType))); }
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); }