From 038fa2f8a5753ca243ade78cbf731d3e428f02d6 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Wed, 20 Feb 2019 22:06:53 -0600 Subject: [PATCH] Add API endpoint for PUT /measure/@slug/@id. --- .../main/nim/personal_measure_apipkg/api.nim | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/api/src/main/nim/personal_measure_apipkg/api.nim b/api/src/main/nim/personal_measure_apipkg/api.nim index 67e5306..cd07adc 100644 --- a/api/src/main/nim/personal_measure_apipkg/api.nim +++ b/api/src/main/nim/personal_measure_apipkg/api.nim @@ -453,6 +453,26 @@ proc start*(ctx: PMApiContext): void = error "unable to retrieve measurement:\n\t" & getCurrentExceptionMsg() jsonResp(Http500) + put "/measure/@slug/@id": + checkAuth() + + try: + let measure = ctx.getMeasureForSlug(session.user.id, @"slug") + var measurement = ctx.getMeasurementForMeasure(measure.id, parseUUID(@"id")) + let jsonBody = parseJson(request.body) + if jsonBody.hasKey("value"): measurement.value = jsonBody["value"].getInt + if jsonBody.hasKey("timestamp"): measurement.timestamp = jsonBody["timestamp"].getStr.parseIso8601 + if jsonBody.hasKey("extData"): measurement.extData = jsonBody["extData"] + resp($(%ctx.db.updateMeasurement(measurement)), JSON) + + except ValueError: jsonResp(Http400, getCurrentExceptionMsg()) + except JsonParsingError: jsonResp(Http400, getCurrentExceptionMsg()) + except BadRequestError: jsonResp(Http400, getCurrentExceptionMsg()) + except NotFoundError: jsonResp(Http404, getCurrentExceptionMsg()) + except: + error "unable to retrieve measurement:\n\t" & getCurrentExceptionMsg() + jsonResp(Http500) + delete "/measure/@slug/@id": checkAuth()