ari endpoints: GET /ari/endpoints/{invalid-tech} should return a 404
authorKevin Harwell <kharwell@digium.com>
Tue, 12 Nov 2013 22:17:28 +0000 (22:17 +0000)
committerKevin Harwell <kharwell@digium.com>
Tue, 12 Nov 2013 22:17:28 +0000 (22:17 +0000)
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
res/res_ari_endpoints.c
rest-api/api-docs/endpoints.json

index 181ce7a..e08f6e5 100644 (file)
@@ -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,
index 0822725..10accb9 100644 (file)
@@ -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:
index c44e3dd..fb66357 100644 (file)
                                                        "paramType": "path",
                                                        "dataType": "string"
                                                }
+                                       ],
+                                       "errorResponses": [
+                                               {
+                                                       "code": 404,
+                                                       "reason": "Endpoints not found"
+                                               }
                                        ]
                                }
                        ]
                                                        "paramType": "path",
                                                        "dataType": "string"
                                                }
+                                       ],
+                                       "errorResponses": [
+                                               {
+                                                       "code": 404,
+                                                       "reason": "Endpoints not found"
+                                               }
                                        ]
                                }
                        ]