chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
<project>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.example</groupId>
|
||||
<artifactId>calculator-server</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
|
||||
<properties>
|
||||
<java.version>17</java.version>
|
||||
<spring.boot.version>3.3.1</spring.boot.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-dependencies</artifactId>
|
||||
<version>${spring.boot.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<dependencies>
|
||||
<!-- Spring Boot WebFlux for SSE -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-webflux</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.11.0</version>
|
||||
<configuration>
|
||||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
<parameters>true</parameters>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package com.example.calculatorserver;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import reactor.core.publisher.Flux;
|
||||
import org.springframework.http.codec.ServerSentEvent;
|
||||
|
||||
@RestController
|
||||
public class CalculatorController {
|
||||
|
||||
@GetMapping(value = "/calculate", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
|
||||
public Flux<ServerSentEvent<String>> calculate(@RequestParam double a,
|
||||
@RequestParam double b,
|
||||
@RequestParam String op) {
|
||||
|
||||
double result;
|
||||
switch (op) {
|
||||
case "add":
|
||||
result = a + b;
|
||||
break;
|
||||
case "sub":
|
||||
result = a - b;
|
||||
break;
|
||||
case "mul":
|
||||
result = a * b;
|
||||
break;
|
||||
case "div":
|
||||
result = b != 0 ? a / b : Double.NaN;
|
||||
break;
|
||||
default:
|
||||
result = Double.NaN;
|
||||
}
|
||||
|
||||
return Flux.<ServerSentEvent<String>>just(
|
||||
ServerSentEvent.<String>builder()
|
||||
.event("info")
|
||||
.data("Calculating: " + a + " " + op + " " + b)
|
||||
.build(),
|
||||
ServerSentEvent.<String>builder()
|
||||
.event("result")
|
||||
.data(String.valueOf(result))
|
||||
.build()
|
||||
)
|
||||
.delayElements(Duration.ofSeconds(1));
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package com.example.calculatorserver;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class CalculatorServerApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(CalculatorServerApplication.class, args);
|
||||
}
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
server:
|
||||
port: 8080
|
||||
Reference in New Issue
Block a user