Search in sources :

Example 6 with ITaskSession

use of com.acgist.snail.pojo.ITaskSession in project snail by acgist.

the class TorrentProtocol method selectFiles.

/**
 * <p>选择下载文件、设置文件大小</p>
 *
 * @throws DownloadException 下载异常
 */
private void selectFiles() throws DownloadException {
    ITaskSession taskSession = null;
    try {
        taskSession = TaskSession.newInstance(this.taskEntity);
        GuiContext.getInstance().multifile(taskSession);
    } catch (DownloadException e) {
        throw e;
    } catch (Exception e) {
        throw new DownloadException("选择下载文件错误", e);
    }
    if (taskSession.multifileSelected().isEmpty()) {
        throw new DownloadException("没有选择下载文件");
    }
}
Also used : ITaskSession(com.acgist.snail.pojo.ITaskSession) DownloadException(com.acgist.snail.context.exception.DownloadException) DownloadException(com.acgist.snail.context.exception.DownloadException)

Example 7 with ITaskSession

use of com.acgist.snail.pojo.ITaskSession 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)

Example 8 with ITaskSession

use of com.acgist.snail.pojo.ITaskSession in project snail by acgist.

the class TaskContextTest method testRefresh.

@Test
void testRefresh() throws DownloadException {
    SnailBuilder.newBuilder().enableAllProtocol().buildSync();
    final var taskContext = TaskContext.getInstance();
    final ITaskSession taskSession = taskContext.download("1234567890123456789012345678901234567890");
    assertNotNull(taskSession);
    DownloadConfig.setSize(0);
    taskContext.refresh();
    DownloadConfig.setSize(4);
    FileUtils.delete(taskSession.getFile());
    taskSession.delete();
}
Also used : ITaskSession(com.acgist.snail.pojo.ITaskSession) Test(org.junit.jupiter.api.Test)

Aggregations

ITaskSession (com.acgist.snail.pojo.ITaskSession)8 Test (org.junit.jupiter.api.Test)5 DownloadException (com.acgist.snail.context.exception.DownloadException)3 IContext (com.acgist.snail.IContext)1 Snail (com.acgist.snail.Snail)1 IDownloader (com.acgist.snail.downloader.IDownloader)1 MagnetDownloader (com.acgist.snail.downloader.magnet.MagnetDownloader)1 TorrentDownloader (com.acgist.snail.downloader.torrent.TorrentDownloader)1 Logger (com.acgist.snail.logger.Logger)1 LoggerFactory (com.acgist.snail.logger.LoggerFactory)1 FileType (com.acgist.snail.pojo.ITaskSession.FileType)1 M3u8 (com.acgist.snail.pojo.bean.M3u8)1 TaskEntity (com.acgist.snail.pojo.entity.TaskEntity)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 Label (javafx.scene.control.Label)1