Example #1
0
        public async Task <PublishInfo> Publish(File file, bool makeShareFile = true)
        {
            foreach (var innerFile in file.Files)
            {
                var url = await Publish(innerFile.FullPath);

                innerFile.PublicLink = url;
            }
            var info = file.ToPublishInfo();

            if (makeShareFile)
            {
                string path = $"{file.FullPath}{PublishInfo.SharedFilePostfix}";
                UploadFileJson(path, info)
                .ThrowIf(r => !r, r => new Exception($"Cannot upload JSON file, path = {path}"));
            }
            return(info);
        }
        public async Task <PublishInfo> Publish(File file, bool makeShareFile = true,
                                                bool generateDirectVideoLink  = false, bool makeM3UFile = false, SharedVideoResolution videoResolution = SharedVideoResolution.All)
        {
            if (file.Files.Count > 1 && (generateDirectVideoLink || makeM3UFile))
            {
                throw new ArgumentException($"Cannot generate direct video link for splitted file {file.FullPath}");
            }

            foreach (var innerFile in file.Files)
            {
                var url = await Publish(innerFile.FullPath);

                innerFile.PublicLink = url;
            }
            var info = file.ToPublishInfo(this, generateDirectVideoLink, videoResolution);

            if (makeShareFile)
            {
                string path = $"{file.FullPath}{PublishInfo.SharedFilePostfix}";
                UploadFileJson(path, info)
                .ThrowIf(r => !r, r => new Exception($"Cannot upload JSON file, path = {path}"));
            }


            if (makeM3UFile)
            {
                string path    = $"{file.FullPath}{PublishInfo.PlaylistFilePostfix}";
                var    content = new StringBuilder();
                {
                    content.Append("#EXTM3U\r\n");
                    foreach (var item in info.Items)
                    {
                        content.Append($"#EXTINF:-1,{WebDavPath.Name(item.Path)}\r\n");
                        content.Append($"{item.PlaylistUrl}\r\n");
                    }
                }
                UploadFile(path, content.ToString())
                .ThrowIf(r => !r, r => new Exception($"Cannot upload JSON file, path = {path}"));
            }

            return(info);
        }