add MeasurementController
This commit is contained in:
24
http/measurement.http
Normal file
24
http/measurement.http
Normal file
@@ -0,0 +1,24 @@
|
||||
### get measurement
|
||||
GET {{hostname}}/measurement
|
||||
Content-Type: application/json
|
||||
Identity: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
|
||||
### add measurement for all
|
||||
POST {{hostname}}/measurement
|
||||
Content-Type: application/json
|
||||
Identity: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
|
||||
{
|
||||
"button0": 0,
|
||||
"button1": 1,
|
||||
"button2": 0
|
||||
}
|
||||
|
||||
### add measurement for one
|
||||
POST {{hostname}}/measurement
|
||||
Content-Type: application/json
|
||||
Identity: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
|
||||
{
|
||||
"button0": 0
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package ltd.hlaeja.controller
|
||||
|
||||
import ltd.hlaeja.library.deviceData.MeasurementData
|
||||
import ltd.hlaeja.library.deviceRegistry.Identity
|
||||
import ltd.hlaeja.service.DeviceDataService
|
||||
import ltd.hlaeja.service.DeviceRegistryService
|
||||
import ltd.hlaeja.service.JwtService
|
||||
import org.springframework.http.HttpStatus.CREATED
|
||||
import org.springframework.web.bind.annotation.GetMapping
|
||||
import org.springframework.web.bind.annotation.PostMapping
|
||||
import org.springframework.web.bind.annotation.RequestBody
|
||||
import org.springframework.web.bind.annotation.RequestHeader
|
||||
import org.springframework.web.bind.annotation.RequestMapping
|
||||
import org.springframework.web.bind.annotation.ResponseStatus
|
||||
import org.springframework.web.bind.annotation.RestController
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/measurement")
|
||||
class MeasurementController(
|
||||
private val deviceDataService: DeviceDataService,
|
||||
private val deviceRegistry: DeviceRegistryService,
|
||||
private val jwtService: JwtService,
|
||||
) {
|
||||
|
||||
@GetMapping
|
||||
suspend fun getNodeMeasurement(
|
||||
@RequestHeader("Identity") identityToken: String,
|
||||
): Map<String, Number> = extracted(identityToken)
|
||||
.let { deviceDataService.getMeasurement(it.client, it.node).fields }
|
||||
|
||||
@PostMapping
|
||||
@ResponseStatus(CREATED)
|
||||
suspend fun addUnitMeasurement(
|
||||
@RequestHeader("Identity") identityToken: String,
|
||||
@RequestBody measurement: Map<String, Number>,
|
||||
) {
|
||||
return extracted(identityToken)
|
||||
.let {
|
||||
deviceDataService.addMeasurement(
|
||||
it.client,
|
||||
MeasurementData.Request(
|
||||
mutableMapOf(
|
||||
"node" to it.node.toString(),
|
||||
"device" to it.device.toString(),
|
||||
),
|
||||
measurement,
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun extracted(
|
||||
identityToken: String,
|
||||
): Identity.Response = jwtService.readIdentity(identityToken)
|
||||
.let { deviceRegistry.getIdentityFromDevice(it) }
|
||||
}
|
||||
Reference in New Issue
Block a user