Ejemplo n.º 1
0
        /// <summary>
        /// 为指定的小说下载插件注册书籍输出器。
        /// </summary>
        /// <param name="plugin">小说下载插件。</param>
        /// <param name="bookWriter">书籍输出器。</param>
        /// <exception cref="ArgumentNullException"><paramref name="plugin"/> 的值为 <see langword="null"/> 。</exception>
        /// <exception cref="ArgumentNullException"><paramref name="bookWriter"/> 的值为 <see langword="null"/> 。</exception>
        /// <exception cref="InvalidOperationException">已为插件注册了书籍输出器。</exception>
        /// <exception cref="InvalidOperationException">插件未加载。</exception>
        public void RegisterBookWriter(INovelDownloadPlugin plugin, IBookWriter bookWriter)
        {
            if (plugin == null)
            {
                throw new ArgumentNullException(nameof(plugin));
            }
            if (bookWriter == null)
            {
                throw new ArgumentNullException(nameof(bookWriter));
            }

            if (this.Plugins.ContainsKey(plugin.Guid))
            {
                if (this.BookWriters.ContainsKey(plugin.Guid))
                {
                    throw new InvalidOperationException("已为插件注册了书籍输出器。");
                }
                else
                {
                    this.BookWriters.Add(plugin.Guid, bookWriter);
                }
            }
            else
            {
                throw new InvalidOperationException("插件未加载。");
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 寻找合适的书籍输出器,并异步保存书籍到文件。
        /// </summary>
        /// <param name="bookToken">书籍节点。</param>
        /// <param name="outputDir">输出目录。</param>
        /// <exception cref="ArgumentNullException"><paramref name="bookToken"/> 的值为 <see langword="null"/> 。</exception>
        /// <exception cref="NotSupportedException">未找到支持节点的小说下载插件。</exception>
        /// <exception cref="NotSupportedException">不支持的插件类型。</exception>
        public Task SaveToAsync(NDTBook bookToken, string outputDir)
        {
            if (bookToken == null)
            {
                throw new ArgumentNullException(nameof(bookToken));
            }

            IBookWriter bookWriter = this.FindBookWriterForBookToken(bookToken);

            // 异步写入文件。
            return(bookWriter.WriteAsync(bookToken, outputDir));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 寻找合适的书籍输出器,并保存书籍到文件。
        /// </summary>
        /// <param name="bookToken">书籍节点。</param>
        /// <param name="outputDir">输出目录。</param>
        /// <exception cref="ArgumentNullException"><paramref name="bookToken"/> 的值为 <see langword="null"/> 。</exception>
        /// <exception cref="NotSupportedException">未找到支持节点的小说下载插件。</exception>
        /// <exception cref="NotSupportedException">不支持的插件类型。</exception>
        public void SaveTo(NDTBook bookToken, string outputDir)
        {
            if (bookToken == null)
            {
                throw new ArgumentNullException(nameof(bookToken));
            }

            IBookWriter bookWriter = this.FindBookWriterForBookToken(bookToken);

            // 写入文件。
            bookWriter.Write(bookToken, outputDir);
        }
Ejemplo n.º 4
0
 public void RegisterBookWriter(IBookWriter bookWriter)
 {
     this.manager.RegisterBookWriter(this, bookWriter);
 }