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;
}
Aggregations