Search in sources :

Example 11 with ResultInfo

use of lee.study.down.model.ResultInfo in project proxyee-down by monkeyWie.

the class HttpDownController method delNewTask.

@RequestMapping("/delNewTask")
public ResultInfo delNewTask(@RequestParam String id) throws Exception {
    ResultInfo resultInfo = new ResultInfo();
    ContentManager.DOWN.removeBoot(id);
    return resultInfo;
}
Also used : ResultInfo(lee.study.down.model.ResultInfo) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 12 with ResultInfo

use of lee.study.down.model.ResultInfo in project proxyee-down by monkeyWie.

the class HttpDownController method getVersion.

@RequestMapping("/getVersion")
public ResultInfo getVersion() {
    ResultInfo resultInfo = new ResultInfo();
    resultInfo.setData(version);
    return resultInfo;
}
Also used : ResultInfo(lee.study.down.model.ResultInfo) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 13 with ResultInfo

use of lee.study.down.model.ResultInfo in project proxyee-down by monkeyWie.

the class HttpDownController method continueTask.

@RequestMapping("/continueTask")
public ResultInfo continueTask(@RequestParam String id) throws Exception {
    ResultInfo resultInfo = new ResultInfo();
    AbstractHttpDownBootstrap bootstrap = ContentManager.DOWN.getBoot(id);
    if (bootstrap == null) {
        resultInfo.setStatus(ResultStatus.BAD.getCode()).setMsg("任务不存在");
    } else {
        bootstrap.continueDown();
    }
    return resultInfo;
}
Also used : AbstractHttpDownBootstrap(lee.study.down.boot.AbstractHttpDownBootstrap) ResultInfo(lee.study.down.model.ResultInfo) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 14 with ResultInfo

use of lee.study.down.model.ResultInfo in project proxyee-down by monkeyWie.

the class HttpDownController method bdyUnzip.

@RequestMapping("/bdyUnzip")
public ResultInfo bdyUnzip(@RequestParam String id, @RequestParam boolean ignore, @RequestBody UnzipForm unzipForm) throws IOException {
    ResultInfo resultInfo = new ResultInfo();
    File file = new File(unzipForm.getFilePath());
    if (file.exists() && file.isFile()) {
        if (!unzipForm.getFilePath().equalsIgnoreCase(unzipForm.getToPath())) {
            if (ignore || BdyZip.isBdyZip(unzipForm.getFilePath())) {
                UnzipInfo unzipInfo = new UnzipInfo().setId(id);
                if (!FileUtil.exists(unzipForm.getToPath())) {
                    FileUtil.createDirSmart(unzipForm.getToPath());
                }
                if (!FileUtil.canWrite(unzipForm.getToPath())) {
                    resultInfo.setStatus(ResultStatus.BAD.getCode()).setMsg("无权访问解压路径,请修改路径或开放目录写入权限");
                    return resultInfo;
                }
                new Thread(() -> {
                    try {
                        BdyZip.unzip(unzipForm.getFilePath(), unzipForm.getToPath(), new BdyUnzipCallback() {

                            @Override
                            public void onStart() {
                                unzipInfo.setType(BdyZip.ON_START).setStartTime(System.currentTimeMillis());
                                ContentManager.WS.sendMsg(new WsForm(WsDataType.UNZIP_ING, unzipInfo));
                            }

                            @Override
                            public void onFix(long totalSize, long fixSize) {
                                unzipInfo.setType(BdyZip.ON_FIX).setTotalFixSize(totalSize).setFixSize(fixSize);
                                ContentManager.WS.sendMsg(new WsForm(WsDataType.UNZIP_ING, unzipInfo));
                            }

                            @Override
                            public void onFixDone(List<BdyZipEntry> list) {
                                unzipInfo.setType(BdyZip.ON_FIX_DONE).setTotalFileSize(list.stream().map(entry -> entry.getCompressedSize()).reduce((s1, s2) -> s1 + s2).get());
                            }

                            @Override
                            public void onEntryStart(BdyZipEntry entry) {
                                unzipInfo.setType(BdyZip.ON_ENTRY_START).setEntry(entry).setCurrFileSize(entry.getCompressedSize()).setCurrWriteSize(0);
                                ContentManager.WS.sendMsg(new WsForm(WsDataType.UNZIP_ING, unzipInfo));
                            }

                            @Override
                            public void onEntryWrite(long totalSize, long writeSize) {
                                unzipInfo.setType(BdyZip.ON_ENTRY_WRITE).setCurrWriteSize(unzipInfo.getCurrWriteSize() + writeSize).setTotalWriteSize(unzipInfo.getTotalWriteSize() + writeSize);
                                ContentManager.WS.sendMsg(new WsForm(WsDataType.UNZIP_ING, unzipInfo));
                            }

                            @Override
                            public void onDone() {
                                unzipInfo.setType(BdyZip.ON_DONE).setEndTime(System.currentTimeMillis());
                                ContentManager.WS.sendMsg(new WsForm(WsDataType.UNZIP_ING, unzipInfo));
                            }

                            @Override
                            public void onError(Exception e) {
                                unzipInfo.setType(BdyZip.ON_ERROR).setErrorMsg(e.toString());
                                ContentManager.WS.sendMsg(new WsForm(WsDataType.UNZIP_ING, unzipInfo));
                            }
                        });
                    } catch (Exception e) {
                        LOGGER.error("unzip error:", e);
                    }
                }).start();
            } else {
                resultInfo.setStatus(ResultStatus.BAD.getCode());
                resultInfo.setMsg("解压失败,请确认是否为百度云批量下载zip文件");
            }
        } else {
            resultInfo.setStatus(ResultStatus.BAD.getCode());
            resultInfo.setMsg("解压失败,文件路径与解压路径相同");
        }
    } else {
        resultInfo.setStatus(ResultStatus.BAD.getCode());
        resultInfo.setMsg("解压失败,文件不存在");
    }
    return resultInfo;
}
Also used : Arrays(java.util.Arrays) HttpDownConstant(lee.study.down.constant.HttpDownConstant) BdyZip(lee.study.down.io.BdyZip) BdyZipEntry(lee.study.down.io.BdyZip.BdyZipEntry) RequestParam(org.springframework.web.bind.annotation.RequestParam) ContentManager(lee.study.down.content.ContentManager) LoggerFactory(org.slf4j.LoggerFactory) TimeoutException(java.util.concurrent.TimeoutException) ResultStatus(lee.study.down.model.ResultInfo.ResultStatus) FileUtil(lee.study.down.util.FileUtil) TaskInfo(lee.study.down.model.TaskInfo) UpdateService(lee.study.down.update.UpdateService) DirInfo(lee.study.down.model.DirInfo) DirForm(lee.study.down.mvc.form.DirForm) HttpDownApplication(lee.study.down.gui.HttpDownApplication) Map(java.util.Map) GithubUpdateService(lee.study.down.update.GithubUpdateService) HttpDownCallback(lee.study.down.dispatch.HttpDownCallback) Collectors(java.util.stream.Collectors) UnzipForm(lee.study.down.mvc.form.UnzipForm) RestController(org.springframework.web.bind.annotation.RestController) UpdateInfo(lee.study.down.model.UpdateInfo) List(java.util.List) WsForm(lee.study.down.mvc.form.WsForm) BootstrapException(lee.study.down.exception.BootstrapException) ProxyConfig(lee.study.proxyee.proxy.ProxyConfig) HttpDownStatus(lee.study.down.constant.HttpDownStatus) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Value(org.springframework.beans.factory.annotation.Value) RequestBody(org.springframework.web.bind.annotation.RequestBody) AbstractHttpDownBootstrap(lee.study.down.boot.AbstractHttpDownBootstrap) BdyUnzipCallback(lee.study.down.io.BdyZip.BdyUnzipCallback) ConfigInfo(lee.study.down.model.ConfigInfo) LinkedList(java.util.LinkedList) BuildTaskForm(lee.study.down.mvc.form.BuildTaskForm) Desktop(java.awt.Desktop) NewTaskForm(lee.study.down.mvc.form.NewTaskForm) Logger(org.slf4j.Logger) MalformedURLException(java.net.MalformedURLException) Files(java.nio.file.Files) HttpRequestInfo(lee.study.down.model.HttpRequestInfo) WsDataType(lee.study.down.mvc.ws.WsDataType) ResultInfo(lee.study.down.model.ResultInfo) IOException(java.io.IOException) File(java.io.File) UnzipInfo(lee.study.down.model.UnzipInfo) OsUtil(lee.study.down.util.OsUtil) DownContent(lee.study.down.content.DownContent) HttpDownInfo(lee.study.down.model.HttpDownInfo) Paths(java.nio.file.Paths) ConfigForm(lee.study.down.mvc.form.ConfigForm) HttpDownUtil(lee.study.down.util.HttpDownUtil) StringUtils(org.springframework.util.StringUtils) BdyUnzipCallback(lee.study.down.io.BdyZip.BdyUnzipCallback) UnzipInfo(lee.study.down.model.UnzipInfo) List(java.util.List) LinkedList(java.util.LinkedList) WsForm(lee.study.down.mvc.form.WsForm) ResultInfo(lee.study.down.model.ResultInfo) File(java.io.File) BdyZipEntry(lee.study.down.io.BdyZip.BdyZipEntry) TimeoutException(java.util.concurrent.TimeoutException) BootstrapException(lee.study.down.exception.BootstrapException) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 15 with ResultInfo

use of lee.study.down.model.ResultInfo in project proxyee-down by monkeyWie.

the class HttpDownController method doUpdate.

@RequestMapping("/doUpdate")
public ResultInfo doUpdate() throws Exception {
    ResultInfo resultInfo = new ResultInfo();
    if (updateInfo == null) {
        resultInfo.setStatus(ResultStatus.BAD.getCode()).setMsg("没有可用版本进行更新");
        return resultInfo;
    }
    if (updateBootstrap != null) {
        updateBootstrap.close();
        updateBootstrap = null;
    }
    try {
        updateBootstrap = updateService.update(updateInfo, new HttpDownCallback() {

            @Override
            public void onDone(HttpDownInfo httpDownInfo) throws Exception {
                String zipPath = httpDownInfo.getTaskInfo().buildTaskFilePath();
                String unzipDir = "proxyee-down-" + updateInfo.getVersionStr();
                String unzipPath = unzipDir + "/main/proxyee-down-core.jar";
                // 下载完解压
                FileUtil.unzip(zipPath, null, unzipPath);
                // 复制出来
                Files.copy(Paths.get(httpDownInfo.getTaskInfo().getFilePath() + File.separator + unzipPath), Paths.get(httpDownInfo.getTaskInfo().getFilePath() + File.separator + "proxyee-down-core.jar.bak"));
                // 删除临时的文件
                FileUtil.deleteIfExists(zipPath);
                FileUtil.deleteIfExists(httpDownInfo.getTaskInfo().getFilePath() + File.separator + unzipDir);
                // 通知客户端
                ContentManager.WS.sendMsg(new WsForm(WsDataType.UPDATE_PROGRESS, httpDownInfo.getTaskInfo()));
                // 清空更新下载信息
                updateBootstrap = null;
            }
        });
    } catch (TimeoutException e) {
        resultInfo.setStatus(ResultStatus.BAD.getCode()).setMsg("检测更新超时,请重试");
        return resultInfo;
    }
    return resultInfo;
}
Also used : HttpDownCallback(lee.study.down.dispatch.HttpDownCallback) WsForm(lee.study.down.mvc.form.WsForm) ResultInfo(lee.study.down.model.ResultInfo) HttpDownInfo(lee.study.down.model.HttpDownInfo) TimeoutException(java.util.concurrent.TimeoutException) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

ResultInfo (lee.study.down.model.ResultInfo)21 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)18 TaskInfo (lee.study.down.model.TaskInfo)8 AbstractHttpDownBootstrap (lee.study.down.boot.AbstractHttpDownBootstrap)7 HttpDownInfo (lee.study.down.model.HttpDownInfo)6 TimeoutException (java.util.concurrent.TimeoutException)5 BootstrapException (lee.study.down.exception.BootstrapException)5 File (java.io.File)4 IOException (java.io.IOException)4 MalformedURLException (java.net.MalformedURLException)4 LinkedHashMap (java.util.LinkedHashMap)4 HttpDownCallback (lee.study.down.dispatch.HttpDownCallback)4 ConfigInfo (lee.study.down.model.ConfigInfo)4 HttpRequestInfo (lee.study.down.model.HttpRequestInfo)4 NewTaskForm (lee.study.down.mvc.form.NewTaskForm)4 Desktop (java.awt.Desktop)3 Files (java.nio.file.Files)3 Paths (java.nio.file.Paths)3 Arrays (java.util.Arrays)3 HashMap (java.util.HashMap)3