Search in sources :

Example 1 with IDownloader

use of com.acgist.snail.downloader.IDownloader in project snail by acgist.

the class ProtocolContext method buildDownloader.

/**
 * <p>新建下载器</p>
 *
 * @param taskSession 任务信息
 *
 * @return 下载器
 *
 * @throws DownloadException 下载异常
 */
public IDownloader buildDownloader(ITaskSession taskSession) throws DownloadException {
    final var type = taskSession.getType();
    final Optional<Protocol> optional = this.protocols.stream().filter(Protocol::available).filter(protocol -> protocol.type() == type).findFirst();
    if (optional.isEmpty()) {
        throw new DownloadException("不支持的下载类型:" + type);
    }
    final IDownloader downloader = optional.get().buildDownloader(taskSession);
    if (downloader == null) {
        throw new DownloadException("不支持的下载类型:" + type);
    }
    return downloader;
}
Also used : Logger(com.acgist.snail.logger.Logger) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) DownloadException(com.acgist.snail.context.exception.DownloadException) ArrayList(java.util.ArrayList) IDownloader(com.acgist.snail.downloader.IDownloader) ITaskSession(com.acgist.snail.pojo.ITaskSession) List(java.util.List) Snail(com.acgist.snail.Snail) LoggerFactory(com.acgist.snail.logger.LoggerFactory) Optional(java.util.Optional) Protocol(com.acgist.snail.protocol.Protocol) IContext(com.acgist.snail.IContext) StringUtils(com.acgist.snail.utils.StringUtils) DownloadException(com.acgist.snail.context.exception.DownloadException) Protocol(com.acgist.snail.protocol.Protocol) IDownloader(com.acgist.snail.downloader.IDownloader)

Aggregations

IContext (com.acgist.snail.IContext)1 Snail (com.acgist.snail.Snail)1 DownloadException (com.acgist.snail.context.exception.DownloadException)1 IDownloader (com.acgist.snail.downloader.IDownloader)1 Logger (com.acgist.snail.logger.Logger)1 LoggerFactory (com.acgist.snail.logger.LoggerFactory)1 ITaskSession (com.acgist.snail.pojo.ITaskSession)1 Protocol (com.acgist.snail.protocol.Protocol)1 StringUtils (com.acgist.snail.utils.StringUtils)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Optional (java.util.Optional)1 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)1