diff options
Diffstat (limited to '4a-hal-utilities/4a-hal-utilities-appfw-responses-handler.c')
-rw-r--r-- | 4a-hal-utilities/4a-hal-utilities-appfw-responses-handler.c | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/4a-hal-utilities/4a-hal-utilities-appfw-responses-handler.c b/4a-hal-utilities/4a-hal-utilities-appfw-responses-handler.c deleted file mode 100644 index bf88571..0000000 --- a/4a-hal-utilities/4a-hal-utilities-appfw-responses-handler.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (C) 2018 "IoT.bzh" - * Author Jonathan Aillet <jonathan.aillet@iot.bzh> - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define _GNU_SOURCE - -#include <stdio.h> -#include <string.h> - -#include <afb/afb-binding.h> - -#include "4a-hal-utilities-appfw-responses-handler.h" - -/******************************************************************************* - * Handle application framework response function * - ******************************************************************************/ - -enum CallError HalUtlHandleAppFwCallError(afb_api_t apiHandle, char *apiCalled, char *verbCalled, json_object *callReturnJ, char **returnedStatus, char **returnedInfo) -{ - json_object *returnedRequestJ, *returnedStatusJ, *returnedInfoJ; - - if(! apiHandle || ! apiCalled || ! verbCalled || ! callReturnJ) - return CALL_ERROR_INVALID_ARGS; - - if(! json_object_object_get_ex(callReturnJ, "request", &returnedRequestJ)) { - AFB_API_WARNING(apiHandle, "Couldn't get response request object"); - return CALL_ERROR_REQUEST_UNAVAILABLE; - } - - if(! json_object_is_type(returnedRequestJ, json_type_object)) { - AFB_API_WARNING(apiHandle, "Response request object is not valid"); - return CALL_ERROR_REQUEST_NOT_VALID; - } - - if(! json_object_object_get_ex(returnedRequestJ, "status", &returnedStatusJ)) { - AFB_API_WARNING(apiHandle, "Couldn't get response status object"); - return CALL_ERROR_REQUEST_STATUS_UNAVAILABLE; - } - - if(! json_object_is_type(returnedStatusJ, json_type_string)) { - AFB_API_WARNING(apiHandle, "Response status object is not valid"); - return CALL_ERROR_REQUEST_STATUS_NOT_VALID; - } - - *returnedStatus = (char *) json_object_get_string(returnedStatusJ); - - if(! strcmp(*returnedStatus, "unknown-api")) { - AFB_API_WARNING(apiHandle, "Api %s not found", apiCalled); - return CALL_ERROR_API_UNAVAILABLE; - } - - if(! strcmp(*returnedStatus, "unknown-verb")) { - AFB_API_WARNING(apiHandle, "Verb %s of api %s not found", verbCalled, apiCalled); - return CALL_ERROR_VERB_UNAVAILABLE; - } - - if(! json_object_object_get_ex(returnedRequestJ, "info", &returnedInfoJ)) { - AFB_API_WARNING(apiHandle, "Couldn't get response info object"); - return CALL_ERROR_REQUEST_INFO_UNAVAILABLE; - } - - if(! json_object_is_type(returnedInfoJ, json_type_string)) { - AFB_API_WARNING(apiHandle, "Response info object is not valid"); - return CALL_ERROR_REQUEST_INFO_NOT_VALID; - } - - *returnedInfo = (char *) json_object_get_string(returnedInfoJ); - - AFB_API_WARNING(apiHandle, - "Api %s and verb %s found, but this error was raised : '%s' with this info : '%s'", - apiCalled, - verbCalled, - *returnedStatus, - *returnedInfo); - - return CALL_ERROR_RETURNED; -} - -void HalUtlHandleAppFwCallErrorInRequest(afb_req_t request, char *apiCalled, char *verbCalled, json_object *callReturnJ, char *errorStatusToSend) -{ - char *returnedStatus = NULL, *returnedInfo = NULL; - - afb_api_t apiHandle; - - if(! request || ! apiCalled || ! verbCalled || ! callReturnJ) { - afb_req_fail_f(request, "invalid_args", "Invalid arguments"); - return; - } - - if(! (apiHandle = afb_req_get_api(request))) { - afb_req_fail_f(request, "api_handle", "Can't get hal manager api handle"); - return; - } - - switch(HalUtlHandleAppFwCallError(apiHandle, apiCalled, verbCalled, callReturnJ, &returnedStatus, &returnedInfo)) { - case CALL_ERROR_REQUEST_UNAVAILABLE: - case CALL_ERROR_REQUEST_NOT_VALID: - case CALL_ERROR_REQUEST_STATUS_UNAVAILABLE: - case CALL_ERROR_REQUEST_STATUS_NOT_VALID: - case CALL_ERROR_REQUEST_INFO_UNAVAILABLE: - case CALL_ERROR_REQUEST_INFO_NOT_VALID: - afb_req_fail(request, errorStatusToSend, "Error with response object"); - return; - - case CALL_ERROR_API_UNAVAILABLE: - afb_req_fail_f(request, errorStatusToSend, "Api %s not found", apiCalled); - return; - - case CALL_ERROR_VERB_UNAVAILABLE: - afb_req_fail_f(request, errorStatusToSend, "Verb %s of api %s not found", verbCalled, apiCalled); - return; - - case CALL_ERROR_RETURNED: - afb_req_fail_f(request, - errorStatusToSend, - "Api %s and verb %s found, but this error was raised : '%s' with this info : '%s'", - apiCalled, - verbCalled, - returnedStatus ? returnedStatus : "not returned", - returnedInfo ? returnedInfo : "not returned"); - return; - - case CALL_ERROR_INVALID_ARGS: - afb_req_fail_f(request, - errorStatusToSend, - "Api %s and verb %s found, but the arguments are invalid", - apiCalled, - verbCalled); - return; - - default: - afb_req_fail_f(request, errorStatusToSend, "Unknown error happened during call to verb %s of api %s", verbCalled, apiCalled); - return; - } -}
\ No newline at end of file |