Пример #1
0
        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;
 }
Пример #3
0
        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);
        }
Пример #4
0
        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));
        }