@@ -0,0 +1,13 @@
|
||||
package com.rdkr.tide_display.backend;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class Application {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Application.class, args);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,35 @@
|
||||
package com.rdkr.tide_display.backend.firmware.controller;
|
||||
|
||||
import com.rdkr.tide_display.backend.firmware.service.FirmwareService;
|
||||
import com.rdkr.tide_display.backend.gcp.Firmware;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/v1/versions")
|
||||
public class VersionController {
|
||||
|
||||
private final FirmwareService firmwareService;
|
||||
|
||||
@GetMapping()
|
||||
public ResponseEntity<List<Firmware>> getVersions() {
|
||||
return ResponseEntity.of(Optional.of(firmwareService.getFirmwareVersions()));
|
||||
}
|
||||
|
||||
@GetMapping("latest")
|
||||
public ResponseEntity<Firmware> getLatestVersion() {
|
||||
return ResponseEntity.of(Optional.of(firmwareService.getLatestFirmwareVersion()));
|
||||
}
|
||||
|
||||
@GetMapping("{version:\\d\\.\\d\\.\\d}")
|
||||
public ResponseEntity<Firmware> getVersion(@PathVariable String version) {
|
||||
return ResponseEntity.of(firmwareService.getFirmwareVersion(version));
|
||||
}
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
package com.rdkr.tide_display.backend.firmware.service;
|
||||
|
||||
import com.rdkr.tide_display.backend.gcp.Firmware;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface FirmwareService {
|
||||
|
||||
List<Firmware> getFirmwareVersions();
|
||||
|
||||
Firmware getLatestFirmwareVersion();
|
||||
|
||||
Optional<Firmware> getFirmwareVersion(String version);
|
||||
}
|
@@ -0,0 +1,33 @@
|
||||
package com.rdkr.tide_display.backend.firmware.service;
|
||||
|
||||
import com.rdkr.tide_display.backend.gcp.Firmware;
|
||||
import com.rdkr.tide_display.backend.gcp.StorageService;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class FirmwareServiceImpl implements FirmwareService {
|
||||
|
||||
private final StorageService storageService;
|
||||
|
||||
@Override
|
||||
public List<Firmware> getFirmwareVersions() {
|
||||
return storageService.getFirmwareVersions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Firmware getLatestFirmwareVersion() {
|
||||
return storageService.getFirmwareVersions().getFirst();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<Firmware> getFirmwareVersion(String version) {
|
||||
return
|
||||
storageService.getFirmwareVersions().stream()
|
||||
.filter(firmware -> firmware.version().equals(version))
|
||||
.findFirst();
|
||||
}
|
||||
}
|
@@ -0,0 +1,5 @@
|
||||
package com.rdkr.tide_display.backend.gcp;
|
||||
|
||||
public record Firmware(String version, String url, String checksum) {
|
||||
|
||||
}
|
@@ -0,0 +1,7 @@
|
||||
package com.rdkr.tide_display.backend.gcp;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface StorageService {
|
||||
List<Firmware> getFirmwareVersions();
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
package com.rdkr.tide_display.backend.gcp.service;
|
||||
|
||||
import com.rdkr.tide_display.backend.gcp.Firmware;
|
||||
import com.rdkr.tide_display.backend.gcp.StorageService;
|
||||
import java.util.List;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class StorageServiceImpl implements StorageService {
|
||||
|
||||
@Override
|
||||
public List<Firmware> getFirmwareVersions() {
|
||||
return List.of(
|
||||
new Firmware("1.0.1", "/firmware/1.0.1/firmware.bin", "0987654321"),
|
||||
new Firmware("1.0.0", "/firmware/1.0.0/firmware.bin", "1234567890")
|
||||
);
|
||||
}
|
||||
}
|
1
backend/src/main/resources/application.properties
Normal file
1
backend/src/main/resources/application.properties
Normal file
@@ -0,0 +1 @@
|
||||
spring.application.name=Backend
|
@@ -0,0 +1,33 @@
|
||||
package com.rdkr.tide_display.backend;
|
||||
|
||||
import lombok.val;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.modulith.core.ApplicationModules;
|
||||
import org.springframework.modulith.docs.Documenter;
|
||||
|
||||
@SpringBootTest
|
||||
class ApplicationTests {
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void modules() {
|
||||
ApplicationModules.of(Application.class).forEach(System.out::println);
|
||||
}
|
||||
|
||||
@Test
|
||||
void verify() {
|
||||
ApplicationModules.of(Application.class).verify();
|
||||
}
|
||||
|
||||
@Test
|
||||
void documentation() {
|
||||
val modules = ApplicationModules.of(Application.class).verify();
|
||||
|
||||
new Documenter(modules).writeModulesAsPlantUml();
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user