增加默认协议添加接口

This commit is contained in:
ayan 2022-10-26 17:20:26 +08:00
parent 6ca937a3d9
commit 47ebc48edb
2 changed files with 51 additions and 0 deletions

View File

@ -36,6 +36,16 @@ public class FileInfo {
private Map<String, Object> others;
private String accessUrl;
public void withBasePath(String apiBashPath) {
if (!apiBashPath.endsWith("/")) {
apiBashPath = apiBashPath + "/";
}
accessUrl = apiBashPath + "file/" + id + "?accessKey=" + accessKey().orElse("");
}
public MediaType mediaType() {
if (!StringUtils.hasText(extension)) {
return MediaType.APPLICATION_OCTET_STREAM;

View File

@ -1,11 +1,13 @@
package org.jetlinks.community.device.web;
import com.alibaba.fastjson.JSON;
import io.netty.buffer.ByteBufAllocator;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Getter;
import org.apache.commons.codec.digest.DigestUtils;
import org.hswebframework.utils.StringUtils;
import org.hswebframework.web.api.crud.entity.QueryParamEntity;
import org.hswebframework.web.authorization.annotation.Authorize;
@ -21,6 +23,7 @@ import org.jetlinks.community.device.web.protocol.ProtocolInfo;
import org.jetlinks.community.device.web.protocol.TransportInfo;
import org.jetlinks.community.device.web.request.ProtocolDecodeRequest;
import org.jetlinks.community.device.web.request.ProtocolEncodeRequest;
import org.jetlinks.community.io.file.FileManager;
import org.jetlinks.community.protocol.TransportDetail;
import org.jetlinks.core.ProtocolSupport;
import org.jetlinks.core.ProtocolSupports;
@ -32,6 +35,9 @@ import org.jetlinks.supports.protocol.management.ProtocolSupportDefinition;
import org.jetlinks.supports.protocol.management.ProtocolSupportLoader;
import org.jetlinks.supports.protocol.management.ProtocolSupportLoaderProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.buffer.DataBufferUtils;
import org.springframework.core.io.buffer.NettyDataBufferFactory;
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@ -39,7 +45,9 @@ import reactor.util.function.Tuple2;
import reactor.util.function.Tuples;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/protocol")
@ -62,6 +70,9 @@ public class ProtocolSupportController
@Autowired
private ProtocolSupportLoader supportLoader;
@Autowired
private FileManager fileManager;
@PostMapping("/{id}/_deploy")
@SaveAction
@Operation(summary = "发布协议")
@ -233,4 +244,34 @@ public class ProtocolSupportController
.flatMap(ProtocolDetail::of);
}
@PostMapping("/default-protocol/_save")
@SaveAction
@Operation(summary = "保存默认协议")
public Mono<Void> saveDefaultProtocol() {
String defaultProtocolName = "JetLinks官方协议";
String fileNeme = "jetlinks-official-protocol-3.0-SNAPSHOT.zip";
return fileManager
.saveFile(fileNeme,
DataBufferUtils.read(new ClassPathResource(fileNeme),
new NettyDataBufferFactory(ByteBufAllocator.DEFAULT),
1024))
.flatMap(fileInfo -> {
Map<String, Object> conf = new HashMap<>();
conf.put("fileId", fileInfo.getId());
conf.put("provider", "org.jetlinks.protocol.official.JetLinksProtocolSupportProvider");
conf.put("location", fileInfo.getAccessUrl());
ProtocolSupportEntity entity = new ProtocolSupportEntity();
entity.setId(DigestUtils.md5Hex(defaultProtocolName));
entity.setType("jar");
entity.setName(defaultProtocolName);
entity.setState((byte) 1);
entity.setDescription("JetLinks官方协议包");
entity.setConfiguration(conf);
return getService().save(entity);
})
.then();
}
}