예제 #1
0
        public async Task <EmptyResponseDto> Play()
        {
            try
            {
                var request = await HttpContext.GetRequestDataAsync <PlayCliFileRequestDto>();

                if (request == null)
                {
                    _logger.LogWarning($"{nameof(Play)}: Nothing will be played, because no request was provided");
                    return(new EmptyResponseDto(false, "Invalid request. You need to provide the play request object"));
                }

                _logger.LogInformation($"{nameof(Play)}: Getting file info for = {request.Mrl}...");
                var fileInfo = await _ffmpegService.GetFileInfo(request.Mrl, default);

                if (fileInfo == null && _fileService.IsUrlFile(request.Mrl))
                {
                    fileInfo = new FFProbeFileInfo();
                }

                _logger.LogInformation(
                    $"{nameof(Play)}: Trying to play file = {JsonConvert.SerializeObject(request)}...");

                await _castService.StartPlay(request, fileInfo);

                _logger.LogInformation($"{nameof(Play)}: Mrl = {request.Mrl} was successfully loaded");
                return(new EmptyResponseDto(true));
            }
            catch (Exception e)
            {
                _logger.LogError(e, $"{nameof(Play)}: Unknown error occurred");
                return(new EmptyResponseDto(false, e.Message));
            }
        }