From 65b5ac3f4174ef80f17b1684bdc03c2528c765fe Mon Sep 17 00:00:00 2001 From: Bart Van Der Meerssche Date: Wed, 30 Mar 2011 09:29:01 +0000 Subject: [PATCH] [api] include case where no device key is present in the db --- server/api/flukso/src/flukso_sensor_xyz.erl | 26 +++++++++++++-------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/server/api/flukso/src/flukso_sensor_xyz.erl b/server/api/flukso/src/flukso_sensor_xyz.erl index c239dd6..dd3bc0c 100644 --- a/server/api/flukso/src/flukso_sensor_xyz.erl +++ b/server/api/flukso/src/flukso_sensor_xyz.erl @@ -90,23 +90,29 @@ is_authorized(ReqData, State) -> is_auth_POST(ReqData, #state{rrdSensor = Sensor, digest = ClientDigest} = State) -> {data, Result} = mysql:execute(pool, device_key, [Sensor]), - [[Key]] = mysql:get_result_rows(Result), - Data = wrq:req_body(ReqData), - <> = crypto:sha_mac(Key, Data), - ServerDigest = lists:flatten(io_lib:format("~40.16.0b", [X])), - {case ServerDigest of - ClientDigest -> true; - _WrongDigest -> "access refused" - end, - ReqData, State}. + case mysql:get_result_rows(Result) of + [[Key]] -> + Data = wrq:req_body(ReqData), + <> = crypto:sha_mac(Key, Data), + ServerDigest = lists:flatten(io_lib:format("~40.16.0b", [X])), + + {case ServerDigest of + ClientDigest -> true; + _WrongDigest -> "Incorrect digest" + end, + ReqData, State}; + + _NoKey -> + {"Device key has not been provisioned", ReqData, State} + end. is_auth_GET(ReqData, #state{rrdSensor = RrdSensor, token = Token} = State) -> {data, Result} = mysql:execute(pool, permissions, [RrdSensor, Token]), {case mysql:get_result_rows(Result) of [[62]] -> true; - _Permission -> "access refused" + _Permission -> "Access refused" end, ReqData, State}.