]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
No more teapots.
authorDavid M. Lee <dlee@digium.com>
Tue, 23 Jul 2013 14:57:03 +0000 (14:57 +0000)
committerDavid M. Lee <dlee@digium.com>
Tue, 23 Jul 2013 14:57:03 +0000 (14:57 +0000)
Now that the ARI implementation is nearing some definition of
completeness, we should properly respond with 501's for unimplemented
functionality, instead of the almost humorous 418.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@395136 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_stasis_http.c
res/res_stasis_http_asterisk.c
res/res_stasis_http_bridges.c
res/res_stasis_http_channels.c
res/res_stasis_http_endpoints.c
res/res_stasis_http_playback.c
res/res_stasis_http_recordings.c
res/res_stasis_http_sounds.c
rest-api-templates/res_stasis_http_resource.c.mustache

index 196912390b477dfd3a0bfe06def530d6dd15792b..393953f243c9c2f896f381283b3fe50d4adaee2d 100644 (file)
@@ -545,9 +545,10 @@ void stasis_http_invoke(struct ast_tcptls_session_instance *ser,
        callback(get_params, path_vars, headers, response);
        if (response->message == NULL && response->response_code == 0) {
                /* Really should not happen */
-               ast_assert(0);
+               ast_log(LOG_ERROR, "ARI %s %s not implemented\n",
+                       ast_get_http_method(method), uri);
                stasis_http_response_error(
-                       response, 418, "I'm a teapot",
+                       response, 501, "Not Implemented",
                        "Method not implemented");
        }
 }
index 3c035652d10d348dcb2cc00182db341a26d89345..d6c579bf29007e18314ade5b7b61e212e4c87de5 100644 (file)
@@ -78,7 +78,11 @@ static void stasis_http_get_asterisk_info_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -128,7 +132,11 @@ static void stasis_http_get_global_var_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -181,7 +189,11 @@ static void stasis_http_set_global_var_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
index 86093abb20dbedd6a175ad72cf51d0f5c1444ec7..eca992cbdaba4831d79e6075c03e0f13e258f80f 100644 (file)
@@ -70,7 +70,11 @@ static void stasis_http_get_bridges_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -120,7 +124,11 @@ static void stasis_http_new_bridge_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -170,7 +178,11 @@ static void stasis_http_get_bridge_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Bridge not found */
                is_valid = 1;
                break;
@@ -221,7 +233,11 @@ static void stasis_http_delete_bridge_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Bridge not found */
                is_valid = 1;
                break;
@@ -278,7 +294,11 @@ static void stasis_http_add_channel_to_bridge_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Bridge not found */
        case 409: /* Bridge not in Stasis application */
        case 422: /* Channel not found, or not in Stasis application */
@@ -337,7 +357,11 @@ static void stasis_http_remove_channel_from_bridge_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -402,7 +426,11 @@ static void stasis_http_play_on_bridge_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Bridge not found */
        case 409: /* Bridge not in a Stasis application */
                is_valid = 1;
@@ -478,7 +506,11 @@ static void stasis_http_record_bridge_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
index 180f33b4732f6097d5d09fa420248cda4fbcd8d5..b7498856b6584eba205e8d29324a31abd8cf924c 100644 (file)
@@ -70,7 +70,11 @@ static void stasis_http_get_channels_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -141,7 +145,11 @@ static void stasis_http_originate_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 400: /* Invalid parameters for originating a channel. */
                is_valid = 1;
                break;
@@ -192,7 +200,11 @@ static void stasis_http_get_channel_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
                is_valid = 1;
                break;
@@ -243,7 +255,11 @@ static void stasis_http_delete_channel_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
                is_valid = 1;
                break;
@@ -309,7 +325,11 @@ static void stasis_http_dial_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
        case 409: /* Channel not in a Stasis application */
                is_valid = 1;
@@ -373,7 +393,11 @@ static void stasis_http_continue_in_dialplan_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
        case 409: /* Channel not in a Stasis application */
                is_valid = 1;
@@ -425,7 +449,11 @@ static void stasis_http_answer_channel_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
        case 409: /* Channel not in a Stasis application */
                is_valid = 1;
@@ -483,7 +511,11 @@ static void stasis_http_mute_channel_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
        case 409: /* Channel not in a Stasis application */
                is_valid = 1;
@@ -541,7 +573,11 @@ static void stasis_http_unmute_channel_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
        case 409: /* Channel not in a Stasis application */
                is_valid = 1;
@@ -593,7 +629,11 @@ static void stasis_http_hold_channel_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
        case 409: /* Channel not in a Stasis application */
                is_valid = 1;
@@ -645,7 +685,11 @@ static void stasis_http_unhold_channel_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
        case 409: /* Channel not in a Stasis application */
                is_valid = 1;
@@ -703,7 +747,11 @@ static void stasis_http_moh_start_channel_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
        case 409: /* Channel not in a Stasis application */
                is_valid = 1;
@@ -755,7 +803,11 @@ static void stasis_http_moh_stop_channel_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
        case 409: /* Channel not in a Stasis application */
                is_valid = 1;
@@ -822,7 +874,11 @@ static void stasis_http_play_on_channel_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
        case 409: /* Channel not in a Stasis application */
                is_valid = 1;
@@ -898,7 +954,11 @@ static void stasis_http_record_channel_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 400: /* Invalid parameters */
        case 404: /* Channel not found */
        case 409: /* Channel is not in a Stasis application; the channel is currently bridged with other channels; A recording with the same name is currently in progress. */
@@ -957,7 +1017,11 @@ static void stasis_http_get_channel_var_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
        case 409: /* Channel not in a Stasis application */
                is_valid = 1;
@@ -1018,7 +1082,11 @@ static void stasis_http_set_channel_var_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 404: /* Channel not found */
        case 409: /* Channel not in a Stasis application */
                is_valid = 1;
index f85de3b7dc7de4bbd1a371ccc380fd3deedd1b74..3a3116569f82a6032f6070a06ee5c8ddafdad1de 100644 (file)
@@ -70,7 +70,11 @@ static void stasis_http_get_endpoints_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -120,7 +124,11 @@ static void stasis_http_get_endpoints_by_tech_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -173,7 +181,11 @@ static void stasis_http_get_endpoint_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
index 9b6ab594d87ddd5269884cc77615210f4800223d..3a77e6d163b58efebb0d51a815b97900dcd05e39 100644 (file)
@@ -78,7 +78,11 @@ static void stasis_http_get_playback_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -128,7 +132,11 @@ static void stasis_http_stop_playback_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -184,7 +192,11 @@ static void stasis_http_control_playback_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
        case 400: /* The provided operation parameter was invalid */
        case 404: /* The playback cannot be found */
        case 409: /* The operation cannot be performed in the playback's current state */
index e09ccbdb3d74908ca351310e266cb29855579112..b1176eb4c8d96795608aa1aef32a2622c1bad9c4 100644 (file)
@@ -70,7 +70,11 @@ static void stasis_http_get_stored_recordings_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -120,7 +124,11 @@ static void stasis_http_get_stored_recording_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -170,7 +178,11 @@ static void stasis_http_delete_stored_recording_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -212,7 +224,11 @@ static void stasis_http_get_live_recordings_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -262,7 +278,11 @@ static void stasis_http_get_live_recording_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -312,7 +332,11 @@ static void stasis_http_cancel_recording_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -362,7 +386,11 @@ static void stasis_http_stop_recording_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -412,7 +440,11 @@ static void stasis_http_pause_recording_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -462,7 +494,11 @@ static void stasis_http_unpause_recording_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -512,7 +548,11 @@ static void stasis_http_mute_recording_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -562,7 +602,11 @@ static void stasis_http_unmute_recording_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
index 84fdeeebfd214fbd344a12026a4cce63099ce61b..1126cef4b43a2a4218d9775cbd8ed79a0dd6f1e1 100644 (file)
@@ -81,7 +81,11 @@ static void stasis_http_get_sounds_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
@@ -131,7 +135,11 @@ static void stasis_http_get_stored_sound_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
                is_valid = 1;
                break;
        default:
index d358732589805804bc4a78ac977c1a871f4fa813..4eda1c5fab4153cb9712a0d498c69208dc9b4dbd 100644 (file)
@@ -78,7 +78,11 @@ static void stasis_http_{{c_nickname}}_cb(
        code = response->response_code;
 
        switch (code) {
-       case 500: /* Internal server error */
+       case 0: /* Implementation is still a stub, or the code wasn't set */
+               is_valid = response->message == NULL;
+               break;
+       case 500: /* Internal Server Error */
+       case 501: /* Not Implemented */
 {{#error_responses}}
        case {{code}}: /* {{{reason}}} */
 {{/error_responses}}