public long CreateNewAudioVersion(long audioId, CreateAudioContract data, Stream stream) { var userId = m_authenticationManager.GetCurrentUserId(); var resultVersionId = new CreateNewAudioResourceVersionWork(m_resourceRepository, m_fileSystemManager, audioId, data, stream, userId).Execute(); return(resultVersionId); }
public CreateNewAudioResourceVersionWork(ResourceRepository resourceRepository, IFileSystemManager fileSystemManager, long audioId, CreateAudioContract data, Stream fileStream, int userId) : base(resourceRepository) { m_resourceRepository = resourceRepository; m_fileSystemManager = fileSystemManager; m_audioId = audioId; m_data = data; m_fileStream = fileStream; m_userId = userId; }
public void TestNewAudioVersion() { var repository = new MockResourceRepository(); var fileSystemManager = new MockFileSystemManager(); var resourceId = 2; var userId = 3; var data = new CreateAudioContract { FileName = "test-audio.ogg", Comment = string.Empty, OriginalVersionId = 1, ResourceTrackId = 30, Duration = new TimeSpan(0, 3, 45) }; fileSystemManager.FileInfo = new SaveResourceResult { FileNameId = "file-id", FileSize = 8192, }; try { new CreateNewAudioResourceVersionWork(repository, fileSystemManager, resourceId, data, Stream.Null, userId).Execute(); Assert.Fail("Create new AudioResouce should fail, because version conflict"); } catch (MainServiceException e) { Assert.AreEqual(HttpStatusCode.Conflict, e.StatusCode); } var latestAudio = repository.GetLatestResourceVersion <AudioResource>(resourceId); data.OriginalVersionId = latestAudio.Id; // No conflict ID var work = new CreateNewAudioResourceVersionWork(repository, fileSystemManager, resourceId, data, Stream.Null, userId); work.Execute(); Assert.AreEqual(1, repository.CreatedObjects.Count); Assert.AreEqual(1, repository.UpdatedObjects.Count); Assert.AreSame(repository.CreatedObjects.First(), repository.UpdatedObjects.First()); var newAudioResource = repository.CreatedObjects.OfType <AudioResource>().First(); Assert.AreEqual(latestAudio.VersionNumber + 1, newAudioResource.VersionNumber); Assert.AreEqual("audio/ogg", newAudioResource.MimeType); Assert.AreEqual(AudioTypeEnum.Ogg, newAudioResource.AudioType); Assert.AreEqual(latestAudio.Resource.Id, newAudioResource.Resource.Id); Assert.AreEqual(userId, newAudioResource.CreatedByUser.Id); Assert.AreEqual(data.ResourceTrackId, newAudioResource.ResourceTrack.Id); }
public IActionResult CreateAudioResourceVersion(long audioId, [FromQuery] string fileName, [FromQuery] long?originalVersionId, [FromQuery] long?trackId, [FromQuery] TimeSpan?duration, [FromQuery] string comment) { m_authorizationManager.AuthorizeResource(audioId, PermissionFlag.EditProject); if (fileName == null || originalVersionId == null || trackId == null || duration == null) { return(BadRequest("Missing required parameters")); } var stream = Request.Body; var contract = new CreateAudioContract { Comment = comment, FileName = fileName, OriginalVersionId = originalVersionId.Value, ResourceTrackId = trackId.Value, Duration = duration, }; var resultVersionId = m_projectContentManager.CreateNewAudioVersion(audioId, contract, stream); return(Ok(resultVersionId)); }