From 4be01b4598f37431809980907d1ab7ce02d0e47a Mon Sep 17 00:00:00 2001 From: Kevin Harwell Date: Tue, 12 Nov 2013 22:17:28 +0000 Subject: [PATCH] ari endpoints: GET /ari/endpoints/{invalid-tech} should return a 404 Implementation listing endpoints by technology returned an empty array if no matching endpoints were found. Fixed so a "404 Not Found" will be returned instead. (closes issue ASTERISK-22803) Reported by: David M. Lee ........ Merged revisions 402787 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@402788 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- res/ari/resource_endpoints.c | 9 ++++++--- res/res_ari_endpoints.c | 2 ++ rest-api/api-docs/endpoints.json | 12 ++++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/res/ari/resource_endpoints.c b/res/ari/resource_endpoints.c index 181ce7a503..e08f6e5594 100644 --- a/res/ari/resource_endpoints.c +++ b/res/ari/resource_endpoints.c @@ -89,8 +89,6 @@ void ast_ari_endpoints_list_by_tech(struct ast_variable *headers, struct ao2_iterator i; void *obj; - /* TODO - if tech isn't a recognized type of endpoint, it should 404 */ - cache = ast_endpoint_cache(); if (!cache) { ast_ari_response_error( @@ -131,7 +129,12 @@ void ast_ari_endpoints_list_by_tech(struct ast_variable *headers, } ao2_iterator_destroy(&i); - ast_ari_response_ok(response, ast_json_ref(json)); + if (ast_json_array_size(json)) { + ast_ari_response_ok(response, ast_json_ref(json)); + } else { + ast_ari_response_error(response, 404, "Not Found", + "No Endpoints found with tech %s", args->tech); + } } void ast_ari_endpoints_get(struct ast_variable *headers, struct ast_ari_endpoints_get_args *args, diff --git a/res/res_ari_endpoints.c b/res/res_ari_endpoints.c index 082272518a..10accb9680 100644 --- a/res/res_ari_endpoints.c +++ b/res/res_ari_endpoints.c @@ -134,6 +134,7 @@ static void ast_ari_endpoints_list_by_tech_cb( break; case 500: /* Internal Server Error */ case 501: /* Not Implemented */ + case 404: /* Endpoints not found */ is_valid = 1; break; default: @@ -193,6 +194,7 @@ static void ast_ari_endpoints_get_cb( break; case 500: /* Internal Server Error */ case 501: /* Not Implemented */ + case 404: /* Endpoints not found */ is_valid = 1; break; default: diff --git a/rest-api/api-docs/endpoints.json b/rest-api/api-docs/endpoints.json index c44e3dd7ef..fb66357a76 100644 --- a/rest-api/api-docs/endpoints.json +++ b/rest-api/api-docs/endpoints.json @@ -35,6 +35,12 @@ "paramType": "path", "dataType": "string" } + ], + "errorResponses": [ + { + "code": 404, + "reason": "Endpoints not found" + } ] } ] @@ -61,6 +67,12 @@ "paramType": "path", "dataType": "string" } + ], + "errorResponses": [ + { + "code": 404, + "reason": "Endpoints not found" + } ] } ]