|
|
|
@ -20,13 +20,10 @@ import com.google.gson.JsonParser; |
|
|
|
import io.swagger.annotations.ApiOperation; |
|
|
|
import io.swagger.annotations.ApiParam; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.SneakyThrows; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; |
|
|
|
import org.springframework.core.io.ByteArrayResource; |
|
|
|
import org.springframework.core.io.FileSystemResource; |
|
|
|
import org.springframework.core.io.Resource; |
|
|
|
import org.springframework.http.HttpHeaders; |
|
|
|
import org.springframework.http.HttpStatus; |
|
|
|
import org.springframework.http.MediaType; |
|
|
|
@ -68,8 +65,6 @@ import org.thingsboard.server.gen.transport.TransportProtos.ToServerRpcResponseM |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceTokenRequestMsg; |
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
import java.io.File; |
|
|
|
import java.io.FileInputStream; |
|
|
|
import java.util.Arrays; |
|
|
|
import java.util.List; |
|
|
|
import java.util.UUID; |
|
|
|
@ -510,25 +505,15 @@ public class DeviceApiController implements TbTransportService { |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@SneakyThrows |
|
|
|
public void onSuccess(TransportProtos.GetOtaPackageResponseMsg otaPackageResponseMsg) { |
|
|
|
if (!TransportProtos.ResponseStatus.SUCCESS.equals(otaPackageResponseMsg.getResponseStatus())) { |
|
|
|
responseWriter.setResult(new ResponseEntity<>(HttpStatus.NOT_FOUND)); |
|
|
|
} else if (title.equals(otaPackageResponseMsg.getTitle()) && version.equals(otaPackageResponseMsg.getVersion())) { |
|
|
|
// String otaPackageId = new UUID(otaPackageResponseMsg.getOtaPackageIdMSB(), otaPackageResponseMsg.getOtaPackageIdLSB()).toString();
|
|
|
|
File file = new File(otaPackageResponseMsg.getFileName()); |
|
|
|
Resource resource = null; |
|
|
|
if(chuckSize!=0){ |
|
|
|
FileInputStream fileInputStream = new FileInputStream(file); |
|
|
|
byte[] bytes = new byte[chuckSize]; |
|
|
|
fileInputStream.read(bytes, chuck, chuckSize); |
|
|
|
resource = new ByteArrayResource(bytes); |
|
|
|
} else { |
|
|
|
resource= new FileSystemResource(file); |
|
|
|
} |
|
|
|
ResponseEntity<Resource> response = ResponseEntity.ok() |
|
|
|
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + getFileName(otaPackageResponseMsg.getFileName())) |
|
|
|
.header("x-filename", getFileName(otaPackageResponseMsg.getFileName())) |
|
|
|
String otaPackageId = new UUID(otaPackageResponseMsg.getOtaPackageIdMSB(), otaPackageResponseMsg.getOtaPackageIdLSB()).toString(); |
|
|
|
ByteArrayResource resource = new ByteArrayResource(transportContext.getOtaPackageDataCache().get(otaPackageId, chuckSize, chuck)); |
|
|
|
ResponseEntity<ByteArrayResource> response = ResponseEntity.ok() |
|
|
|
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + otaPackageResponseMsg.getFileName()) |
|
|
|
.header("x-filename", otaPackageResponseMsg.getFileName()) |
|
|
|
.contentLength(resource.contentLength()) |
|
|
|
.contentType(parseMediaType(otaPackageResponseMsg.getContentType())) |
|
|
|
.body(resource); |
|
|
|
@ -538,10 +523,6 @@ public class DeviceApiController implements TbTransportService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private String getFileName(String fileName) { |
|
|
|
return new File(fileName).getName(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onError(Throwable e) { |
|
|
|
log.warn("Failed to process request", e); |
|
|
|
@ -625,7 +606,7 @@ public class DeviceApiController implements TbTransportService { |
|
|
|
@Override |
|
|
|
public void onDeviceDeleted(DeviceId deviceId) { |
|
|
|
UUID sessionId = new UUID(sessionInfo.getSessionIdMSB(), sessionInfo.getSessionIdLSB()); |
|
|
|
log.trace("[{}] Received device deleted notification for device with id: {}",sessionId, deviceId); |
|
|
|
log.trace("[{}] Received device deleted notification for device with id: {}", sessionId, deviceId); |
|
|
|
responseWriter.setResult(new ResponseEntity<>("Device was deleted!", HttpStatus.FORBIDDEN)); |
|
|
|
} |
|
|
|
|
|
|
|
|