mirror of
https://github.com/NotoChen/Jetbrains-Help.git
synced 2025-05-24 23:16:44 +08:00
fix zip & append scoop support
This commit is contained in:
parent
bf8d15ffab
commit
eea7c81398
|
@ -4,15 +4,19 @@ import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.hutool.core.text.CharSequenceUtil;
|
import cn.hutool.core.text.CharSequenceUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.crypto.digest.DigestUtil;
|
||||||
import com.jetbrains.help.JetbrainsHelpApplication;
|
import com.jetbrains.help.JetbrainsHelpApplication;
|
||||||
import com.jetbrains.help.context.AgentContextHolder;
|
import com.jetbrains.help.context.AgentContextHolder;
|
||||||
import com.jetbrains.help.context.PluginsContextHolder;
|
import com.jetbrains.help.context.PluginsContextHolder;
|
||||||
import com.jetbrains.help.context.ProductsContextHolder;
|
import com.jetbrains.help.context.ProductsContextHolder;
|
||||||
import com.jetbrains.help.properties.JetbrainsHelpProperties;
|
import com.jetbrains.help.properties.JetbrainsHelpProperties;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.cglib.core.Local;
|
||||||
import org.springframework.core.io.InputStreamResource;
|
import org.springframework.core.io.InputStreamResource;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
|
import org.springframework.http.HttpRequest;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
|
@ -20,11 +24,13 @@ import org.springframework.ui.Model;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
import org.thymeleaf.util.DateUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
|
|
||||||
import static org.springframework.http.HttpHeaders.CONTENT_DISPOSITION;
|
import static org.springframework.http.HttpHeaders.CONTENT_DISPOSITION;
|
||||||
|
import static org.springframework.http.MediaType.APPLICATION_JSON;
|
||||||
import static org.springframework.http.MediaType.APPLICATION_OCTET_STREAM;
|
import static org.springframework.http.MediaType.APPLICATION_OCTET_STREAM;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
|
@ -43,6 +49,26 @@ public class IndexController {
|
||||||
return "index";
|
return "index";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/scoop/ja-netfilter")
|
||||||
|
@ResponseBody
|
||||||
|
public ResponseEntity<Map<String,Object>> scoopInstall(HttpServletRequest request) {
|
||||||
|
String basePath = (request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath());
|
||||||
|
Map<String, Object> json = new HashMap<>();
|
||||||
|
String version = DateUtils.format(new Date(),"yyyyMMdd", Locale.getDefault());
|
||||||
|
json.put("version", version);
|
||||||
|
json.put("description", "JetBrains' dragon slayer");
|
||||||
|
json.put("homepage", "https://cikaros.top");
|
||||||
|
json.put("license", "MIT");
|
||||||
|
json.put("url", String.format("%s/ja-netfilter#dl.zip", basePath));
|
||||||
|
json.put("extract_to", Arrays.asList("", "config-jetbrains", "plugins-jetbrains", "scripts", "vmoptions"));
|
||||||
|
json.put("hash", DigestUtil.sha256Hex(AgentContextHolder.jaNetfilterZipFile()));
|
||||||
|
json.put("post_install", "cscript $dir/scripts/install-current-user.vbs");
|
||||||
|
json.put("pre_uninstall", "cscript $dir/scripts/uninstall-current-user.vbs");
|
||||||
|
return ResponseEntity.ok()
|
||||||
|
.contentType(APPLICATION_JSON)
|
||||||
|
.body(json);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("search")
|
@GetMapping("search")
|
||||||
public String index(@RequestParam(required = false) String search, Model model) {
|
public String index(@RequestParam(required = false) String search, Model model) {
|
||||||
List<ProductsContextHolder.ProductCache> productCacheList = ProductsContextHolder.productCacheList();
|
List<ProductsContextHolder.ProductCache> productCacheList = ProductsContextHolder.productCacheList();
|
||||||
|
@ -70,4 +96,5 @@ public class IndexController {
|
||||||
.contentType(APPLICATION_OCTET_STREAM)
|
.contentType(APPLICATION_OCTET_STREAM)
|
||||||
.body(new InputStreamResource(FileUtil.getInputStream(jaNetfilterZipFile)));
|
.body(new InputStreamResource(FileUtil.getInputStream(jaNetfilterZipFile)));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user